C程序Chapter7练习
C程序设计1-7章测试题(答案版本)

C程序设计1-7章测试题(04级)姓名____一、选择题:(每题3分,共45分)1、C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(a)。
A)必须为字母或下划线。
B)必须为下划线。
C)必须为字母 D)可以是字母、数字和下划线中的任一种字符。
2、下列运符中优先级最高的是( b )A) ++ B) () C) ?: D)||3、C语言规定:在一个源程序中,main函数的位置( c )A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后4、一个C语言程序是由( b )A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成5、代表换行的转义字符是 ( a )A)'\n' B)'\\' C)'\0' D)'\''6、下面一段程序是小写字母转换成大写字母的程序。
void main(){ char c1;c1='a';( ) ;printf("%c ",c1);}那么括号处应该填写( c )a) c1=c1+32 b)c1=c1-64 c) c1=c1-32 d) c1=c1+647、设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是(c )a) while 循环执行10次b)循环是无限循环c)循环体语句一次也不执行d)循环体语句执行一次8、逻辑运算符两侧运算对象的数据类型( a )a)只能是0或1 b)只能是0或非0正数c)只能是整型或字符型数据d) 可以是任何类型的数据9、语句while(!E);中表达式!E等价于(a )a) E==0 b) E!=1 c)E!=0 d)E==110、以下对一维a的正确说明是(d)a) int a(10) ; b)int n=10,a[n]; c) int n; scanf(“%d”,&n); int a[n];d) int a[10];11、在c语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许是(c)a) 整型常量b) 整型表达式c) 整型常量或整型表达式d) 任何类型的表达式12、以下能对一维数组a进行正确初始化的语句是(c )a) int a[10]=(0,0,0,0,0); b) int a[10]={}; c) int a[]={0}; d)int a[10]={10*1};13、以下对二维数组a的正确说明是( c )a) int a[3,4]; b) float a(3,4); c) double a[3][4]; d) float a(3)(4);14、若有说明:int a[10]; 则对a数组元素的正确应用是(d)a) a[10] b)a[3,5] c)a(5) d)a[0]15、以下能对二维数组a进行正确初始化的语句是( b )a) int a[2][]={{1,0,1},{5,2,3}} ; b) int a[][3]={{1,0,1},{5,2,3}} ;c) int a[2][4]={{1,0,1},{5,3},{6}} ; d) int a[][3]={{1,0,1},{},{5,3}} ;二、填空题:(共10个空,每空4分,共40分)1、输出单个字符#include <stdio.h>void main(){ char a,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);putchar('\n');}运行结果是(BOY )。
C语言第七章习题带答案

选择题1.已知:int *p, a;,则语句“p=&a;”中的运算符“&”的含义是( D )。
A.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知:int a, x;,则正确的赋值语句是( C )。
A.a=(a[1]+a[2])/2; B.a*=*a+1; C.a=(x=1, x++, x+2); D.a="good"; 3.已知:int a, *p=&a;,则下列函数调用中错误的是( D )。
A.scanf("%d", &a); B.scanf("%d", p); C.printf("%d", a); D.scanf("%d", *p); 4.已知:char *p, *q;,选择正确的语句( C )。
A.p*=3; B.p/=q; C.p+=3; D.p+=q;5.已知:int x;,则下面的说明指针变量pb的语句( C )是正确的。
A.int pb=&x; B.int *pb=x; C.int *pb=&x; D.*pb=*x;一、选择题1.设有说明int (*ptr)[M];,其中的标识符ptr是( C )。
A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知:double *p[6];,它的含义是( C )。
A.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知:char s[10], *p=s,则在下列语句中,错误的语句是( B )。
A.p=s+5; B.s=p+s; C.s[2]=p[4]; D.*p=s[0];4.已知:char s[100]; int i;,则在下列引用数组元素的语句中,错误的表示形式是( D )。
C程序设计7章答案【VIP专享】

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
C语言练习题第七章

C.main(c,v) int c;char *v[];
D.main(argc,argv) int argc;char argv[];
二.填空题:
1.填入运行结果:
swap1(x,y)
int x,y;
{
int w;
A.4个
B.3个
C.8个
D.5个
11.C语言中函数能否嵌套调用和递归调用?
A.二者均不可
B.前者可,后者不可
C.前者不可,后者可
D.二者均可
12.C语言标准库函数"strcat(strcpy(STR1,STR2),STR3)"的功能是________。
A.将串STR1复制到串STR2中后再连接至串STR3之后
B.将串STR1连接至STR2之后再复制至串STR3之后
C.将串STR2复制到串STR1串后再将串STR3连接到串STR1 之后
D.将串STR2连接到串STR1之后再将串STR1复制到串STR3串
13.下列选项中不是C语言main函数正确表达形式的是________?
A.main(int argc,char *argv[]);
B.(1)-8 1 2 7 9 10
(2)-8 1 7 9 10 2
C.(1)-8027910
(2)-8079102
D.(1)-8 0 3 7 9 10
(2)-8 0 4 9 10 2
f(n-1)+f(n-2) (n>1)
D. 0 (n<0)
f(n)={ 1 (n>0)
f(n-1)+f(n-2) (n>1)
C程序设计(第2版)第七章习题解答.doc

C程序设计(第2版)第七章习题解答第七章动态内存分配习题一、基本概念与基础知识自测题7.1 填空题7.1.1 C/C++定义了4个内存区间:(1)、(2)、(3)和(4)。
答案:(1)代码区,存放程序代码;(2)全局变量与静态变量区,存放全局变量或对象(包括静态);(3)局部变量区即栈(stack)区,存放局部变量;(4)自由存储区(free store),即动态存储区或堆(heap)区。
7.1.2 静态定义的变量和对象用标识符命名,称为(1);而动态建立的称为(2),动态建立对象的初始化是通过(3)实现(4)。
答案:(1)命名对象(2)无名对象(3)初始化式(initializer)(4)显式初始化7.1.3 在用new运算符建立一个三维数组15*30*10时,使用了(1)个下标运算符,对应的用delete运算符注销这个三维数组时使用了(2)个下标运算符。
new返回的指针是指向(3)的指针。
答案:(1)3个(2)1个(3)30行10列的2位数组7.1.4 当动态分配失败,系统采用(1)来表示发生了异常。
如果new返回的指针丢失,则所分配的自由存储区空间无法收回,称为(2)。
这部分空间必须在(3)才能找回,这是因为无名对象的生命期(4)。
答案:(1)返回一个空指针(NULL)(2)内存泄漏(3)重新启动计算机后(4)并不依赖于建立它的作用域7.1.5 按语义的默认复制构造函数和默认复制赋值操作符实现的复制称为(1),假设类对象obj中有一个数据成员为指针,并为这个指针动态分配一个堆对象,如用obj1按成员语义拷贝了一个对象obj2,则obj2对应指针指向(2)。
答案:(1)浅拷贝(2)同一个堆对象7.1.6 单链表的结点包含两个域:(1)和(2)。
使用链表的最大的优点是(3),即使是动态数组也做不到这一点。
答案:(1)数据域(2)指针域(3)用多少空间,开多少空间7.1.7 进入单链表必须通过单链表的(1),如果它丢失则(2),内存也(3),在单链表中进行的查找只能是(4)。
c程序设计(谭浩强)第七章习题答案

int i;
float ave=0;
for(i=0;i<10;i++)
ave=ave+a[i][n]/10;
return ave;
}
void max(float a[][5]) //最高分的学生和课程
{
int i,j,row,colum;
float max=a[0][0];
for(i=0;i<10;i++)
# include <stdio.h>
# include<math.h>
# include<string.h>
/*int yue(int a,int b) //求最大公约数
{
int i,min;
min=a>b?b:a;
for(i=min;i>0;i--)
{
if(a%i==0&&b%i==0)
{
return i;
if((mid%2)!=1) //因职工号序号为奇数,故强制把序号转为奇数
mid-=1;
if(strcmp(b,a[mid])>0) //不能写b>a[mid]
{min=mid+2;}
else if(strcmp(b,a[mid])<0) //不能写b<a[mid]
{max=mid-2;}
else
{printf("职工姓名为:%s\n",a[mid-1]);break;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("%-2d",b[i][j]);
C语言 第7章课后习题

#include<math.h> #define N 101 main()
{ int i,j,line,a[N];
for(i=2;i<N;i++) { a[i]=i; for(j=2;j<sqrt(N);j++)
{
if(a[i]!=0&&a[j]!=0) if(a[i]%a[j]==0) a[i]=0; } } printf(“\n”); for(i=2,line=0;i<N;i++)
5.将一个数组中的值按逆序重新存放,例如原来的顺序为8,6,5,4, 1。要求改为1,4,5,6,8。 #define N 5 main() { int a[N]={8,6,5,4,1},i,temp; printf("\n初始数组:\n"); for(i=0;i<N;i++) printf(%4d",a[i]); for(i=0;i<N/2;i++) { temp=a[i]; a[i]=a[N-i-1]; a[N-i-i]=temp; } printf("\n交换后的数组:\n"); for(i=0;i<N;i++) printf(%4d",a[i]); }
for(i=0;i<N;i++) printf("%5d",a[i]); printf("\n"); /*排序*/
for(i=0;i<N-1;i++) { for(j=i+1;j<N;j++) if(a[i]>a[j]) temp=a[i]; a[i]=a[min]; a[min]=temp; } /*输出*/ printf("\n 排序结果如下:\n"); for(i=0;i<N;i++) printf("%5d",a[i]); }
c语言教材第七章习题答案

c语言教材第七章习题答案《C语言教材第七章习题答案》在学习C语言的过程中,掌握基本的语法和逻辑结构是非常重要的。
第七章的习题涉及到了一些较为复杂的概念和技巧,需要我们对C语言有更深入的理解和掌握。
1. 题目:编写一个程序,计算并输出1到100之间所有偶数的和。
答案:我们可以使用循环结构和条件判断来解决这个问题。
具体的代码如下: ```#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("1到100之间所有偶数的和为:%d\n", sum);return 0;}```这段代码使用了for循环来遍历1到100之间的所有数字,然后通过条件判断判断是否为偶数,如果是偶数则累加到sum中,最后输出sum的值。
2. 题目:编写一个程序,输出九九乘法表。
答案:九九乘法表是一个经典的练习题,通过嵌套循环可以很容易地实现。
具体的代码如下:```#include <stdio.h>int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d*%d=%d\t", j, i, i*j);}printf("\n");}return 0;}```这段代码使用了两层嵌套的for循环,外层循环控制行数,内层循环控制列数,通过printf语句输出乘法表中的每一项。
通过解答以上两道习题,我们不仅复习了C语言中的循环结构和条件判断,还锻炼了我们的编程思维和逻辑能力。
希望大家在学习C语言的过程中能够多多练习,不断提升自己的编程水平。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Chapter7练习
选择
1 以下正确的函数定义形式是___
A)double fun(int x,int y)
B)double fun(int x;int y)
C)double fun(int x,int y);
D)double fun(int x,y);
2 如果要限制一个变量只能为本文件所使用,必须通过_____来实现。
A)外部变量说明B)静态内部变量
C)静态外部变量D)局部变量说明
3 以下正确的说法是_______
A)实参和与其对应的形参各占用独立的存储单元
B)实参和与其对应的形参共占用一个存储单元
C)只有当实参和与其对应的形参同名时才共占用存储单元
D)形参是虚拟的,不占用存储单元
4以下不正确的说法是____________
A)实参可以是常量、变量或表达式
B)形参可以是常量、变量或表达式
C)实参可以为任意类型
D)形参应与其对应的实参类型一致
5若调用一个函数(类型为void),此函数中没有return语句,则正确的说法是____________ A)没有返回值
B)返回若干个系统默认值
C)能返回一个用户所希望的函数值
D)返回一个不确定的值
6以下正确的说法是____________
A)定义函数时,形参的类型说明可以放在函数体内
B)return后边的值不能为表达式
C)如果函数值的类型与返回值类型不一致,以函数值类型为准。
D)如果形参与实参的类型不一致,以实参类型为准
7 C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是____________ A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回给实参
D)由用户指定传递方式
8 C语言规定,函数返回值的类型是由____________
A)return语句中的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
9 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是____________
A)float型
B)int型
C)long型
D)double型
10 下面函数调用语句含有实参的个数为____________
func((exp1,exp2),(exp3,exp4,exp5));
A)1 B)2 C)4 D)5
11以下错误的描述是____________
函数调用可以A)出现在执行语句中
B)出现在一个表达式中
C)作为一个函数的实参
D)作为一个函数的形参
12以下正确的描述是____________
A)函数的定义可以嵌套,函数的调用不可以嵌套
B)函数的定义不可以嵌套,函数的调用可以嵌套
C)函数的定义和函数的调用均不可以嵌套
D)函数的定义和函数的调用均可以嵌套
13若用数组名作为函数调用的实参,传递给形参的是____________
A)数组的首地址
B)数组第一个元素的值
C)数组中全部元素的值
D)数组元素的个数
14若使用一维数组名作函数实参,则以下正确的说法是____________
A)必须在主调函数中说明此数组的大小
B)实参数组类型与形参数组类型可以不匹配
C)在被调函数中,需要考虑形参数组的大小
D)实参数组名与形参数组名必须一致
15以下不正确的说法是____________
A)在不同函数中可以使用相同名字的变量
B)形参是局部变量
C)在函数内定义的变量只在本函数范围内有效
D)在函数内的复合语句中定义的变量在本函数范围内有效
16凡是在函数中未指定存储类别的局部变量,其隐含的存储类别是____________ A)自动(auto)B)静态(static)
C)外部(extern)D)寄存器(register)
填空
1以下程序的运行结果是____________
main( )
{ void inc(void);
inc( );
inc( );
inc( );
}
void inc(void)
{ int x=0;
x+=1;
printf(“%d”,x);
}
2计算数组元素的平均值。
float average(int n,int array[])
{int i ;float sum=0;
for(i=0;i<n;___)
____________;
return(___);
}
main()
{int i;
float aver,score[10];
pr intf(“input 10 score:\n”);
for(i=0;i<10;i++)
scanf(“%f”,&score[i]);
aver=average(10,________);
printf(“average score is %.2f\n”,aver); }
写出运行结果
1.
main ( )
{ int a=4,x=5,b=8;
fun(b,6);
printf("%d,%d,%d\n",a,b,x);
}
fun (int a,int b)
{ int x=3;
printf("%d,%d,%d\n",a,b,x);
}
运行结果:
2.int abc(int u,int v);
main ( )
{int a=48,b=32,c;
c=abc(a,b);
printf("%d\n",c);
}
int abc(int u,int v)
{int w;
while (v)
{w=u%v;u=v;v=w;}
return u;
}
运行结果:
答案:
选择: 1. A 2. C 3. D 4. B 5. A 6. C 7. B 8. D 9. B 10. B 11. D 12. B 13. A 14. A 15. D 16. A
填空: 111
i++ sum+=array[i] sum/n score
运行结果1. 863 485
2. 16。