《C程序设计》期末复习练习题及参考答案2.docx
- 文档编号:30614185
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:18
- 大小:22.36KB
《C程序设计》期末复习练习题及参考答案2.docx
《《C程序设计》期末复习练习题及参考答案2.docx》由会员分享,可在线阅读,更多相关《《C程序设计》期末复习练习题及参考答案2.docx(18页珍藏版)》请在冰豆网上搜索。
《C程序设计》期末复习练习题及参考答案2
《C程序设计》期末复习练习题及参考答案
(2)
一、单项选择题
1.判断字符串s1与字符串s2相等,应当使用:
。
A)if(s1=s2)
B)if(strcmp(s1,s2))
√C)if(!
strcmp(s1,s2))
D)if(strcmp(s1,s2)=0)
2.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A.j*n+i√B.i*n+jC.i*n+j-1D.i*n+j+1
3.以下程序执行后的输出结果是()。
#include
#include
main()
{printf("%d\n",strlen("IBM\n012\t\"\\\0"));}
√A)10B)11C)16D)12
4.有如下程序片段:
inti=0;
while(i++<=2);
printf("%d",i);
则正确的执行结果是:
A)2B)3√C)4D)程序陷入死循环
5.下面哪个定义是合法的。
A)chara[8]="language";
B)inta[5]={0,1,2,3,4,5};
√C)char*a="string";
D)inta[2][]={0,1,2,3,4,5,6};
6.一个C语言的语句必须使用的结束符号是()。
A),B)。
√C);D):
7.以下叙述正确的是()。
A)C程序中的注释只能出现在程序的开始位置和语句的后面。
B)C程序书写格式严格,要求一行内只能写一个语句。
√C)C程序书写格式自由,一个语句可以写在多行上。
D)用C语言编写的程序只能放在一个源程序文件中。
8.以下选项中不能作为合法常量的是()。
A)1.234e04B)1.234e+4√C)1.234e0.4D)1.234e0
9.以下选项中合法的用户标识符是()。
A)intB)#max√C)_3intD)A.max
10.设x和y均是int型变量,则执行下列语句后的输出为()。
x=15;y=5;printf("%d\n",x%=(y%2));
√A)0B)1C)6D)12
11.设x,y和z都是int型变量,且x=3,y=4,z=5,则下列表达式中,值为0的表达式是()。
A)x&&y√B)!
(x z||1)C)x<=yD)x||++y&&y-z 12.以下程序运行结果是()。 #include intfun(inti,intj) {i++,j++; returni+j; } intmain() {inta=1,b=2,c=3; c+=fun(a,b)+a; printf("%d,%d,%d\n",a,b,c); return0; } √A)1,2,9B)2,3,10C)1,2,10D)2,3,9 13.有以下程序,程序执行后的输出结果是()。 #include intmain() {inta[]={2,4,6,8,10},y=0,x,*p; p=&a[1]; for(x=1;x<3;x++) y+=p[x]; printf("%d\n",y); return0; } A)10B)11√C)14D)15 14.有以下程序,以下叙述正确的是()。 #include #include intmain() {charp[]={'a','b','c'},q[10]={'a','b','c'}; printf("%d%d\n",strlen(p),strlen(q)); return0; } A)在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3。 √B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3。 C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3。 D)由于p和q数组中都没有字符串结束符,故长度都不确定。 15.下列可用于C语言用户标识符的一组是()。 A)void,define,WORD√B)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 16.以下选项中不属于字符常量的是 A)′C′√B)′′C′′C)′\xCC′D)′\072′ 17.(15)以下定义语句中正确的是()。 A)inta=b=0;√B)charA=65+1,b=′b′; C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1; 18.当变量c的值不为2、4、6时,值也为"真"的表达式是()。 A)(c==2)||(c==4)||(c==6)√B)(c>=2&&c<=6)||(c! =3)||(c! =5) C)(c>=2&&c<=6)&&! (c%2)D)(c>=2&&c<=6)&&(c%2! =1) 19.下面说明不正确的是()。 A)chara[10]="china";B)chara[10],*p=a;p="china"; C)char*a;a="china";√D)chara[10],*p;p=a="china"; 20.有定义语句: chars[10];,若要从终端给s输入5个字符,错误的输入语句是()。 A)gets(&s[0]);B)scanf("%s",s+1);C)gets(s);√D)scanf("%s",s[1]); 21.有以下程序,程序执行后的输出结果是()。 #include voidmain() {unsignedshorta=65535; shortb; b=a; printf("%d\n",b); } A)65535B)0√C)-1D)1 22.在C语言中,以下叙述不正确的是()。 √A)在C程序中,无论是整数还是实数,都能被准确无误的表示 B)在C程序中,变量名代表存储器中的一个位置 C)静态变量的生存期与整个程序的生存期相同 D)C语言中变量必须先定义后引用 23.以下叙述中错误的是()。 A)在程序中凡是以"#"开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#defineMAX是合法的宏定义命令行 √D)C程序对预处理命令行的处理是在程序执行的过程中进行的 24.设有以下说明语句 typedefstruct {intn; charch[8]; }PER; 则下面叙述中正确的是()。 A)PER是结构体变量名√B)PER是结构体类型名 C)typedefstruct是结构体类型D)struct是结构体类型名 25.以下叙述中错误的是()。 A)gets函数用于从终端读入字符串√B)getchar函数用于从磁盘文件读入字符 C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件 26.有以下程序 #include main() {charp[]={′a′,′b′,′c′},q[10]={′a′,′b′,′c′}; printf("%d%d\n",strlen(p),strlen(q));} 以下叙述中正确的是()。 A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 √B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3 C)由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3 D)由于p和q数组中都没有字符串结束符,故长度都不能确定 27.设有: inta=1,b=2,c=3,d=4,m=2,n=2; 执行(m=a>b)&&(n=c>d)后,n的值是()。 A)1√B)2C)3D)4 28.设有如下定义: intx=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是()。 A)0B)1√C)3D)4 29.下面的程序 #include voidmain() { charch; scanf("%3c",&ch); printf("%c",ch); } 如果从键盘上输入abc回车 则程序的运行结果是()。 √A)aB)bC)cD)程序语法出错 30.以下程序的运行结果是()。 #include voidmain() {intx[]={1,2,3}; ints,i,*p=x; s=1; for(i=0;i<3;i++)s*=*(p+i); printf("%d\n",s); } A)7√B)6C)3D)8 二、填空题 1、函数add要求计算两个整数之和,并通过形参返回该值,代码如下: voidadd(intx,inty,int*sum){*sum=x+y;} 2、程序设计中,需要定义一个指针变量p,该变量可以指向一个长度为5的字符型数组,定义代码如下: char(*p)[5];。 3、设整型变量n的值为2,执行语句“n+=n-=n*n”后,n的值是 -4 。 4、共用体和结构体的定义格式类似,不同点是 结构体的成员占有各自不同的空间,而共用体的各成员放到同一存储空间。 。 5、设变量max、a、b已经正确定义,若要求a和b的最大值,并赋值给max,代码为: max=a>b? a: b;。 6、下列程序的输出结果是 7,1 。 intast(intx,inty,int*cp,int*dp) {*cp=x+y; *dp=x-y; } main() {inta=4,b=3,c,d; ast(a,b,&c,&d); printf("%d,%d/n",c,d); } 7、有如下输入语句: scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是 a=1,b=3,c=2 。 8、一个共用体类型的变量,其所占内存的大小是: 由占据内存空间最大的成员决定。 9、设有定义: intx=12,n=5;则表达式x%=(n%2)的值为 0 。 10、设有floatx;写出得到x小数部分的表达式x-(int)x。 (假设x为12.345,则表达式的结果为0.345) 三、程序运行结果分析题 1. #include main() {inta=5,b=4,x,y; x=2*a++; printf("a=%d,x=%d\n",a,x); y=--b*2 ; printf("b=%d,y=%d\n",b,y); } 则程序运行结果是: a=6,x=10 b=3,y=6 2. #include voidfun1(intx) {x=20;} voidfun2(intb[4]) {intj; for(j=0;j<4;j++){b[j]=j;} } main() {intx=10; inta[4]={1,2,3,4},k; fun1(x); printf("x=%d\n",x); fun2(a); for(k=0;k<4;k++) {printf("%d\n",a[k]);} } 运行结果是: x=10 0 1 2 3 3. #include main() {intx,y; scanf("%2d%*4s%2d",&x,&y); printf("%d",y-x); } 程序运行时输入: 123456789↙ 则程序运行结果是: 66 4. #include structdate {intyear; intmonth; intday; }; voidfunc(structdatep) {p.year=2000; p.month=5; p.day=22; } main() {structdated; d.year=1999; d.month=4; d.day=23; printf("%d,%d,%d\n",d.year,d.month,d.day); func(d); printf("%d,%d,%d\n",d.year,d.month,d.day); } 程序运行结果为: 1999,4,23 1999,4,23 5. #include voidFun(int*y) {printf("*y=%d\n",*y); *y+=20; printf("*y=%d\n",*y); } main() {intx=10; printf("x=%d\n",x); Fun(&x); printf("x=%d\n",x); } 程序运行结果是: x=10 *y=10 *y=30 x=30 6.当运行以下程序时,运行结果是____4332____。 #include intmain() {ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++)c[s[i]]++; for(i=1;i<5;i++)printf("%d",c[i]); printf("\n"); return0; } 7.当运行以下程序时,运行结果是______________。 #include #defineN10 floatfun(float*array,intn); floatmax,min; intmain() {floatscore[N]={90,80,70.5,98,60.5,95,53,85,75,90}; printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,fun(score,N)); return0; } floatfun(float*array,intn) {inti; floatsum=array[0]; max=min=array[0]; for(i=1;i {if(array[i]>max)max=array[i]; elseif(array[i] sum=sum+array[i]; } returnsum/n; } 8.当运行以下程序时,从键盘输入如下内容并回车: 9556758885,则下面程序的运行结果是_____________________(输出共2行)。 #include voidinput(float*a,intn) {float*pData,*pEnd; pData=a,pEnd=&a[n-1]; while(pData<=pEnd)scanf("%f",pData++); } floatsum(float*a,intn) {floats=0; float*pData,*pEnd; pData=a,pEnd=&a[n-1]; while(pData<=pEnd)s+=*pData++; returns; } intmink(float*a,intn) {float*pData,*pEnd,*pKData; pData=a,pEnd=&a[n-1],pKData=a; while(++pData<=pEnd) {if(*pData<*pKData)pKData=pData;} returnpKData-a; } main() {floata[5]; intk; input(a,5); printf("Sum=%6.2f\n",sum(a,5)); k=mink(a,5); printf("Min: a[%d]=%6.2f\n",k,a[k]); } Sum=399.00 Min: a[1]=56.00 9.有以下程序 #include main() {FILE*fp;inta[10]={1,2,3},i,n; fp=fopen("d1.dat","w"); for(i=0;i<3;i++)fprintf(fp,"%d",a[i]); fprintf(fp,"\n"); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d",&n); fclose(fp); printf("%d\n",n); } 程序的运行结果是123。 四、程序填空题 阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。 1.从键盘任意输入一个年号,判断它是否是闰年。 若是闰年,输出“Yes”,否则输出“No”。 已知符合下列条件之一者是闰年: 能被4整除,但不能被100整除。 能被400整除。 #include main() { intyear,flag; printf("Enteryear: "); scanf("%d",&year); if(year%4==0&&year%100! =0||year%400==0) { flag=1; } else { flag=0; } if(flag) { printf("Yes\n"); } else { printf("No\n"); } } 2.编程判断m是否为素数。 #include #include intIsPrime(intm); main() { intn,flag; printf("Inputn: "); scanf("%d",&n); flag=IsPrime(n); if(flag) { printf("它是素数\n"); } else { printf("它不是素数\n"); } } intIsPrime(intm) { inti,k; if(m<=1) { return0; } for(i=2;i<=sqrt(m);i++) { k=m%i; if(k==0) { return0; } } return1; } 3.以下程序在数组a中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请补齐相应代码使程序能够正确运行。 #include voidfind(int*a,intn,int*max,int*min) { inti; *max=*min=0; for(i=1;i { if(a[i]>a[*max]) ____*max=i___;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 程序设计 期末 复习 练习题 参考答案