C语言复习题及答案.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题 答案
- 资源描述:
-
. . 复习A: 一、单项选择题 1、如果要把常量327存入变量a中,a不能定义的类型是哪一个? ( ) A〕 int B〕 char C〕 long D〕 float 2、假设x 为unsigned int 型变量,那么执行以下语句后x值为〔〕 x = 65535; printf(“%d\n〞,x); A〕65535 B〕1 C〕无定值D〕-1 3、有以下程序 main〔〕 {int a=1,b=2,m=0,n=0,k;k=〔n=b>a〕||〔m=a<b〕; printf〔″%d,%d\n″,k,m〕; } 程序运行后的输出结果是 〔 〕 A)0,0 B)0,1 C)1,0 D)1,1 4、在C语言中,如果下面的变量都是int类型,那么输出的结果是〔 〕。 sum=pad=5; pAd=sum + + ,pAd + +, + + pAd; printf("%d\n",pad); A) 7 B) 6 C) 5 D) 4 5、以下程序的输出结果是〔〕。 main() { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d); } A〕1 B〕0 C〕非0的数 D〕-1 6、当执行以下程序段时〔〕。 x=-1; do{ x=x*x; }while(!x); A〕循环体将执行一次 B〕循环体将执行两次 C〕循环体将执行无限次 D〕系统将提示有语法错误 7、全局变量的存储类型可以定义为〔 〕。 A〕auto或static B〕 extern或 register C〕 auto或extern D〕 extern或static 8、定义全局变量时,假设变量的的存储类别缺省,那么默认的存储类型是〔 〕。 A〕auto B〕 register C〕 extern D〕 static 9、:int a, x; 那么正确的赋值语句是〔 〕。 A〕 a=(a[1]+a{2})/2; B〕 a*=*a+1; C〕 a=(x=1, x++, x+2); D〕 a="good"; 10、:int a, *p=&a; 那么以下函数调用中错误的选项是〔 〕。 A〕 scanf("%d", &a); B〕 scanf("%d", p); C〕 printf("%d", a); D〕 printf("%d", p); 11、下述程序的输出结果是 〔 〕。 #include <stdio.h> void main( ) { struct plex { int x ; int y; }um[2]={1,3,2,7}; printf(“%d〞,um[0].y/um[0].x*um[1].x) ; } A〕 0 B〕 1 C〕 3 D〕 6 12、下述程序的输出结果是〔 〕。 #include <stdio.h> void main( ) { union { unsigned char c ; unsigned int i[4]; }z ; z.i[0]=0x39 ; z.i[1]=0x36; printf(“%c〞,z.c); } A〕 6 B〕 9 C〕 0 D〕 3 13、下述关于C语言文件操作的结论中,〔 〕是正确的。 A〕对文件操作必须先关闭文件 B〕对文件操作必须先翻开文件 C〕对文件操作顺序无要求 D〕对文件操作前必须先测试文件是否存在,然后再翻开文件 14、以下程序的输出结果是〔 〕。 main() { char ch[3][4]={"123","456","78"},*p[3]; int i; for (i=0;i<3;i++) p[i]=ch[i]; for (i=0;i<3;i++) printf("%s",p[i]); } A〕123456780 B〕123 456 780 C〕 12345678 D〕 147 15、对于所定义的二维数组a[2][3],元素a[1][2]是数组的第( )个元素。 A〕3 B〕4 C〕5 D〕6 二、判断题 1、 赋值运算符的优先级低于关系运算符〔 〕。 2、 条件运算符的结合方向是“自左向右〞 〔 〕。 3、 C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现〔 〕。 4、 C程序中的函数不能嵌套调用,但可嵌套定义〔 〕。 5、 假设自定义函数要求函数名返回一个值,那么该函数体中必须要有return语句〔 〕。 6、 当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址〔 〕。 7、 假设有说明:static int a[3][4];,那么数组a中各数组元素可在程序的编译阶段得到初值0〔 〕。 8、 假设用数组名作为函数调用时的实参,那么实际上传递给形参数组的是数组的第一个元素的值〔 〕。 9、 利用指针和构造体类型可以构成表、树等复杂的数据构造〔 〕。 10、共用体变量的地址和它的各成员的地址都是同一地址〔 〕。 11、printf函数中的“%0”格式参数表示用来输出unsigned型数据〔 〕。 12、在一个C程序中,所有要使用的变量和要调用的函数都必须在main( )函数中定义 〔 〕。 13、赋值运算符的结合性是“自右至左〞 〔 〕。 14、一个C程序可以由多个源程序文件组成 〔 〕。 15、do-while语句构成的循环,当while语句中的表达式的值为零时完毕循环 〔 〕。 三、写出下面各程序的运行结果 . .word.. . . 1、 #include<stdio.h> main ( ) {int i=0, j=0, k=0, m; for (m=0; m<4; m++) switch (m) {case 0: i=m++; case 1: j=m++; case 2: k=m++; case 3: m++; } printf(“\n%d, %d, %d, %d〞, i, j, k, m); } 2、 #include<stdio.h> main ( ) {int i=1; while (i<=15) if (++i% 3!=2) continue; else printf(“%d〞, i); } 3、#include<stdio.h> add1(int a[ ], int n) { int i; for(i =0;i<n;i++) a[i]++; } main() { static int array[ ]={0,1,2,3,4,5,6,7,8,9}; int j; add1(array,10); for(j=0;j<10;j++) printf(“%d〞,array[j]); } 4、union data { long w; float x; int y; char z; } beta; main( ) { beta.w=123456; beta.y=888; beta.x=3.14; beta.z=’x’; printf(“%c〞,beta.y); } . .word.. . . 5、# include <string.h> typedef struct student{ char name[10]; long sno; float score; }STU; main( ) { STU a={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d; d=a; if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf("%ld%s\n",d.sno,p->name); } 四、程序填空 1、以下程序是从键盘上输入假设干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时完毕输入,请将缺省语句填上。 main ( ) {float x, amax, amin; scanf (“%f〞, &x); amax=x; amin=x; while ( ① ) {if ( ② ) amax =x; if ( ③ ) amin =x; scanf (“%f〞, &x); } printf(“amax=%f, amin=%f\n〞, amax, amin); }2、下面的程序是用指针来交换两个数据,请将缺省语句填上。 void exchange( int *p ,int *q) { int t; t=*p; *p=*q; *q=t;} main() { int a,b,*x,*y; a=10;b=20; x=&a;① ② printf(“%d %d\n〞,*x, *y); } 五、程序设计题 有10个学生,每个学生的数据包括学号、、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据〔包括学号、、3门课的成绩、平均分数。 2、用自定义函数和数组求n个数的平均值,并用主函数调用 参考答案: 一、单项选择题 1、B 2、D 3、C 4、C 5、 A 6、A 7、D 8、C 9、C10、D 11、D 12、B 13、B 14、C15、 D 二、判断题 〔 √ 〕 2、〔 × 〕 3、〔 √ 〕 4、〔 × 〕 5、〔 × 〕 6、 √ 〕 7、〔 √ 〕 8、〔 √ 〕 9、〔 √ 〕10、〔 √ 〕 11、〔× 〕12、〔× 〕 13、〔√ 〕 14、〔√ 〕 15、〔√ 〕 三、写出程序的运行结果 1、 答案是:0,1,2,5 2、 答案是:2 5 8 11 14 3、答案是: 4、答案是:x 5、答案是:2002Shangxian 四、程序填空 1、答案是:①x>=0 ②x>amax ③x<amin 2、答案:①y=&b; ②exchange(x,y); 五、程序设计题 1、参考答案: #define N 10 struct student . .word.. . . { char num[6]; char name[8]; int score[4]; float ave; } stu[N]; main() { int i,j,max,maxi,sum; float average; /*输入*/ for ( i=0; i<N; i++) { printf(“\nInput scores of student %d,\n〞,i+1); printf(“No.:〞); scanf(“%s〞,stu[i].num); printf(“name:〞); scanf(“%s〞,stu[i].name); for(j=0;j<3;j++) { printf(“score %d:〞,j+i); scanf(“%d〞,&stu[i].score[j]); } } /*计算*/ average=0; max=0; maxi=0; for(i=0; i<N; i++) { sum=0; for(j=0; j<a; j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0; average+=stu[i].avr; if (sum>max) { max=sum; maxi=i; } } average/=N; /*打印*/ printf(“NO. name score1 score2 score3 average\n〞); for(i=0; i<N; i++) { printf(“%s%10s〞, stu[i].num , stu[i].name); for(j=0; j<3; j++) printf(“%9d〞,stu[i].score[j]); printf(“%8.2f\n〞,stu[i].avr); } printf(“average=%6.2f\n〞,average); printf(“The highest score is : %s, score total: %d〞, stu[maxi].name,max); } . .word.. . . . .word.. . . 2、参考答案: float average( float a[ ], int n) { float aver=0; int j; for(j=0;j<n;j++) aver=aver+a[j]; aver=aver/n; return aver; } main() { float x[10],y; int j; for(j=0;j<10;j++) scanf(“%f〞,&x[j]); y=average(x,10); printf(“aver=%.2f\n〞,y); } . .word.. . . 复习B: 一、单项选择题 1、逗号表达式2,4,6,8的值为〔 〕。 A 〕2 B〕4 C〕6 D〕8 2、以下选项中非法的表达式是( ) A〕0<=x&&x<100 B〕i=j = =0 C〕(char)(65+3) D〕x+1=x+1 3、假设定义float a;现要从键盘输入a的数据,其整数位为3位,小数位为2位,那么 选用〔 〕。 A〕scanf(“%f〞,&a); B) scanf(“%5.2f〞,a); C) scanf(“%6.2f〞,&a); D) scanf(“%f〞,a); 4、以下程序的运行结果是〔 〕 main() {int a=3, b=2, c=1, k=4; printf("%d\n", k<a? k : c<b? c: a); } A) 4 B) 3 C) 2 D) 1 5、以下程序中,while循环的循环次数是〔〕。 main( ) { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } A〕1 B〕10 C〕6 D〕死循环,不能确定次数 6、执行语句:for〔i=1;i++<4;〕后;变量i的值是〔〕。 A〕3 B〕4 C〕5 D〕不定 7、有关函数参数,以下说法不正确的选项是〔 〕。 A〕实参可以将数据传给形参;B〕实参和形参是不同的变量; C〕 形参可以将数据传给实参; D〕 实参和形参必须个数相等,类型一致。 8、C语言中,变量和函数具有两个属性是〔 〕。 A〕作用域和生存期 B〕类型和存储类别 C〕作用域和类型 D〕作用域和存储类别 9、说明语句“int (*p)( ):〞的含义是〔 〕。 A〕p是一个指向一维数组的指针变量 B〕p是指针变量,指向一个整型数据 C〕p是一个指向函数的指针,该函数的返回值是一个整型 D〕以上都不对 10、说明语句"int *(*p);"的含义是〔 〕。 A〕p是一个指向int 型数组的指针 B〕p是指针变量,它构成了指针数组 C〕p是一个指向函数的指针,该函数的返回值是一个整型 D〕p是一个指向函数的指针,该函数的返回值是一个指向整型的指针 11、下述程序的执行结果是〔 〕。 . .word.. . . #include<stdio.h> union un { int i; char c[2]; }; void main( ) { union un x; x.c[0]=10; x.c[1]=1; printf(“\n%d〞,x.i);} . .word.. . . A〕 266 B〕11 C〕265 D〕138 12、假设程序中有如下的说明和定义: struct ex { int x, y ; } … struct ex x, y; 那么会发生的情况是 〔 〕。 A〕 编译时错 B〕 程序能顺利编译、连接、执行 C〕 能顺利编译和连接,但不能执行 D〕 能通过编译,但连接出错 13、C语言可以处理的文件类型是〔 〕 。 A〕 文本文件和数据文件 B〕 文本文件和二进制文件 C〕 数据文件和二进制文件 D〕 数据代码文件 14、下面的for语句〔 〕。 for (x=0, y=0; (y!=123) && (x<4); x++) A〕是无限循环 B〕循环次数不定 C〕循环执行4次 D〕循环执行3次 15、假设有如下说明: struct { char ch; int i; double x; }arr[2][3]={{‘a’,1,3.45},{‘b’,2,7.89},{‘c’,3,1.93}}; 那么表达式〔 〕 的值为2。 A〕 arr[0][1].ch B〕 arr[0][1].i C〕 arr[0][0].i D〕 arr[0][2].i 二、判断题 1、条件运算符的结合方向是“自左向右〞 〔 〕。 2、switch语句中每一个case的常量表达式的值必须互不一样〔 〕。 3、循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现〔 〕。 4、构成C程序的源文件之间以及函数与函数之间,相互位置可以任意〔 〕。 5、C程序中的函数不能嵌套定义,但可嵌套调用〔 〕。 6、从变量的作用域角度来分,可以分为全局变量和局部变量〔 〕。 7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来〔 〕。 8、假设有说明:int a[ ][4]={0,0};,那么只有a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0〔 〕。 9、利用指针和构造类型不能构成更复杂的数据构造〔 〕。 10、共用体类型可以出现在构造体类型定义中〔 〕。 11、当一个case语句末包含break语句时,执行完该case语句后跳出switch构造〔 〕。 12、宏定义中的标识符可以用大写字母,也可以用小写字母〔 〕。 13、do-while语句构成的循环,当while语句中的表达式的值为非零时完毕循环〔 〕。 14、用“%〞作求余运算时,该运算符两侧均应为整型数据 〔 〕。 15、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式〔 〕。 三、写出程序的运行结果 . .word.. . . 1、 #include<stdio.h> main ( ) {int a=1, b=3, c=5, d=4; if (a<b) if (c<d) x=1; else if (a<c) if (b<d) x=2; else x=3; else x=6; else x=7; printf(“x=%d〞, x); } 2、 #include<stdio.h> main ( ) {int k, j, m; for(k=5; k>=1; k- -) {m=0; for (j=k, j<=5; j++) m+=k*j; } printf (“m=%d\n〞, m); } . .word.. . . . .word.. . . 3、#include <stdio.h> main() {union Exa { struct {int a; int b; }out; int c; int d; }e; e.c=1;e.d=2; e.out.a=e.c*e.d; e.out.b=e.c+e.d; printf("%d %d",e.out.a,e.out.b); } 4、#include “stdio.h〞 main( ) { int a[ ]={1,2,3,4},i,j,s=0; j=1; for(i=3;i>=0;i--) { s=s+a[i]*j; j=j*10; } printf(“s=%d\n〞,s);} 5、#include "stdio.h" #include "string.h" main( ) { char s1[ ]="som things"; char s2[ ]="test"; char s3[ ]="good"; printf("%s\n",strcat(strcpy(s1,s2),s3)); } . .word.. . . 四、程序填空 1、下面程序输出100到200之间的素数,每行输出10个素数,请将缺省语句填上,使算法完整。 #include “math.h〞 main ( ) {int m, k, i, n=0; for (m=101; m<=200; m=m+2) {if ( ① ) printf (“\n〞); k=sqrt(m); for (i=2, i<=k; i++) if ( ② ) break; if ( i>=k+1){printf(“%d〞, m); n=n+1;} } } 2、一个函数days,实现求某月某日是该年的第多少天。由主函数将年、月、日传递给days函数,计算后将日数传回主函数输出,请将缺省语句填上,使算法完整。 struct y_m_d { int year; int month; int day; } date; main() { int days(int ,int ,int); int i,day_sum; printf(“input year,month,day:〞); scanf(“%d,%d,%d〞,&date.year,&date.month,&date.day); day_sum=days( ① ); printf(“\n%d / %d is the %d th day in %d.〞, date.month, date.day, day_sum,date.year); } days(int year, int month, int day) { int day_sum, i; int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; ② for(i=1; i<month; i++) day_sum+=day_tab[i]; day_sum+=day; if ((year%4==0&&year%100!=0||year%4==0) && month>=3) ③ return(day_sum); } 五、程序设计题 1,学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入构造体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。 #define N 16 typedef struct { char num[10]; int s; }STREC; int fun(STREC *a, STREC *b) { ………… } main() { STREC s[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85}, {“GA01”,91},{“GA07”,72},{“GA08”,64},{“GA06”,87}, {“GA015”,85},{“GA013”,96},{“GA012,64},{“GA014”,91}, {“GA011”,91},{“GA017”,64},{“GA018”,64},{“GA016”,72}; STREC h[N]; int i, n; n=fun(s,h); printf(“The %d lowest score:\n〞,n); for(i=0; i<n; i++) printf(“%d%4d\n〞,h[I].num, h[I].s); printf(“\n〞); } 2、从键盘输入一批字符〔回车键完毕〕,存入一个磁盘文件abc.txt中 参考答案: 一、单项选择题 1、D 2、D 3、A 4、D 5、D 6、C 7、C 8、B 9、C10、D 11、A 12、A 13、B 14、C 15、B 二、判断题 1、〔 × 〕2、〔 √ 〕3、〔 × 〕4、〔 √ 〕5、〔 √ 〕 6、〔 √ 〕7、〔 √ 〕8、〔 √ 〕9、〔 × 〕10、〔 √ 〕 11、〔 √ 〕 12、〔 × 〕 13、〔 × 〕 14、〔 √ 〕 15、〔 √ 〕 三、写出程序的运行结果 .展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




C语言复习题及答案.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4576754.html