C语言复习题及答案老师给的.pdf
《C语言复习题及答案老师给的.pdf》由会员分享,可在线阅读,更多相关《C语言复习题及答案老师给的.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-.复习复习 A A:一、单项选择题一、单项选择题1、如果要把常量 327 存入变量 a 中,a 不能定义的类型是哪一个?(B)A)intB)char C)longD)float2、若 x 为 unsigned int 型变量,则执行下列语句后x 值为(D)x=65535;printf(“%dn”,x);A)65535B)1C)无定值 D)-13、有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ab);printf(%d,%dn,k,m);程序运行后的输出结果是(C)A)0,0B)0,1C)1,0D)1,14、在 C 语言中,如果下面的变量都是int
2、类型,则输出的结果是(C)。sum=pad=5;pAd=sum+,pAd+,+pAd;printf(%dn,pad);A)7B)6C)5D)45、以下程序的输出结果是(A)。main()int a=4,b=5,c=0,d;d=!a&!b|!c;printf(%dn,d);A)1B)0C)非 0 的数D)-16、当执行以下程序段时(A)。x=-1;dox=x*x;while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误7、全局变量的存储类型可以定义为(D)。A)auto 或 staticB)extern 或 registerC)auto 或 ex
3、ternD)extern 或 static8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是(C)。A)autoB)registerC)externD)static9、已知:int a,x;则正确的赋值语句是(C)。A)a=(a1+a2)/2;B)a*=*a+1;C)a=(x=1,x+,x+2);D)a=good;10、已知:int a,*p=&a;则下列函数调用中错误的是(D)。A)scanf(%d,&a);B)scanf(%d,p);C)printf(%d,a);D)printf(%d,p);11、下述程序的输出结果是(D)。-.可修编.-.#include voidmain(
4、)structplexintx;inty;um2=1,3,2,7;printf(“%d”,um0.y/um0.x*um1.x);A)0B)1C)3D)612、下述程序的输出结果是(B)。#include voidmain()unionunsignedcharc;unsignedinti4;z;z.i0=0 x39;z.i1=0 x36;printf(“%c”,z.c);A)6B)9C)0D)313、下述关于 C 语言文件操作的结论中,(B)是正确的。A)对文件操作必须先关闭文件B)对文件操作必须先打开文件C)对文件操作顺序无要求D)对文件操作前必须先测试文件是否存在,然后再打开文件14、以下程
5、序的输出结果是(C)。main()char ch34=123,456,78,*p3;int i;for(i=0;i3;i+)pi=chi;for(i=0;i3;i+)printf(%s,pi);A)123456780B)123 456 780C)12345678D)14715、对于所定义的二维数组a23,元素 a12是数组的第(D)个元素。A)3B)4C)5D)61、赋值运算符的优先级低于关系运算符()。2、条件运算符的结合方向是“自左向右”()。3、C 语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现()。4、C 程序中的函数不能嵌套调用,但可嵌套定义()。5、若自定义函
6、数要求函数名返回一个值,则该函数体中必须要有return 语句()。6、当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址()。7、若有说明:static int a34;,则数组 a 中各数组元素可在程序的编译阶段得到初值0()。-.可修编.-.8、若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值()。9、利用指针和结构体类型可以构成表、树等复杂的数据结构()。10、共用体变量的地址和它的各成员的地址都是同一地址()。11、printf 函数中的“%0”格式参数表示用来输出unsigned 型数据()。12、在一个 C 程序中,所有要
7、使用的变量和要调用的函数都必须在main()函数中定义()。13、赋值运算符的结合性是“自右至左”()。14、一个 C 程序可以由多个源程序文件组成()。15、do-while 语句构成的循环,当 while 语句中的表达式的值为零时结束循环()。三、写出下面三、写出下面各程序的运行结果各程序的运行结果1、#includestdio.hfor(i=0;in;i+)ai+;main()int i=0,j=0,k=0,m;main()for(m=0;m4;m+)static int array=0,1,2,3,4,5,6,7,8,9;switch(m)int j;case 0:i=m+;add1(
8、array,10);case 1:j=m+;for(j=0;j10;j+)case 2:k=m+;printf(“%d”,arrayj);case 3:m+;4、uniondataprintf(“n%d,%d,%d,%d”,i,j,longw;k,m);floatx;inty;2、#includestdio.hcharz;main()beta;int i=1;main()while(i=15)beta.w=123456;if(+i%3!=2)continue;beta.y=888;elsebeta.x=3.14;printf(“%d”,i);beta.z=x;printf(“%c”,beta.
9、y);3、#includeadd1(int a,int n)int i;5、#include typedef struct studentchar name10;long sno;float score;STU;main()STUa=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%sn,d.sno,p-name);四、程序填空四、程序填空1、以下程序是从键盘
10、上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将缺省语句填上。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=%fn”,amax,amin);2、下面的程序是用指针来交换两个数据,请将缺省语句填上。void exchange(int*p,int*q)int t;t=*p;*p=*p=*q;*q=t;main()int a,b,*x,*y;a=10;b=20;x=&a;print
11、f(“%d%dn”,*x,*y);五、程序设计题五、程序设计题有 10 个学生,每个学生的数据包括学号、3 门课的成绩,从键盘输入 10 个学生数据,要求打印出 3 门课总平均成绩,以及最高分的学生的数据(包括学号、3 门课的成绩、平均分数。2、用自定义函数和数组求n 个数的平均值,并用主函数调用参考答案:一、单项选择题一、单项选择题1、B2、D3、C4、C5、A6、A7、D D8、CC9、C10、D11、D12、B13、B14、CC15、D二、判断题二、判断题()2、()3、()4、()5、()6、)7、()8、()9、()10、()11、()12、()13、()14、()15、()三、写出
12、程序的运行结果三、写出程序的运行结果1、答案是:0,1,2,52、答案是:25811143、答案是:4、答案是:x5、答案是:2002Shangxian四、程序填空四、程序填空-.可修编.-.1、答案是:x=0 xamaxxamin2、答案:y=&b;exchange(x,y);五、程序设计题五、程序设计题1、参考答案:#define N 10struct student char num6;sum=0;char name8;for(j=0;jmax)int i,j,max,maxi,sum;max=sum;float average;maxi=i;/*输入*/for(i=0;iN;i+)pr
13、intf(“nInputscoresofaverage/=N;student%d,n”,i+1);/*打印*/printf(“No.:”);printf(“NO.namescore1scanf(“%s”,stui.num);score2score3averagen”);printf(“name:”);for(i=0;iN;i+)scanf(“%s”,stui.name);printf(“%s%10s”,stui.num,for(j=0;j3;j+)stui.name);printf(“score%d:”,j+i);for(j=0;j3;j+)scanf(“%d”,&stui.scorej);p
14、rintf(“%9d”,stui.scorej);printf(“%8.2fn”,stui.avr);/*计算*/average=0;printf(“average=%6.2fn”,average);max=0;printf(“The highest score is:%s,scoremaxi=0;total:%d”,stumaxi.name,max);for(i=0;iN;i+)2、参考答案:main()float average(float a,int n)float x10,y;float aver=0;int j;int j;for(j=0;j10;j+)for(j=0;jn;j+)s
15、canf(“%f”,&xj);aver=aver+aj;y=average(x,10);aver=aver/n;printf(“aver=%.2fn”,y);return aver;复习复习 B B:一、单项选择题一、单项选择题-.可修编.-.1、逗号表达式 2,4,6,8 的值为(d)。A)2B)4C)6D)82、以下选项中非法的表达式是(d)A)0=x&x100B)i=j=0C)(char)(65+3)D)x+1=x+13、若定义 float a;现要从键盘输入 a 的数据,其整数位为3 位,小数位为 2 位,则选用(a)。A)scanf(“%f”,&a);B)scanf(“%5.2f”,
16、a);C)scanf(“%6.2f”,&a);D)scanf(“%f”,a);4、下列程序的运行结果是(d)main()int a=3,b=2,c=1,k=4;printf(%dn,ka?k:cb?c:a);A)4B)3C)2D)15、以下程序中,while 循环的循环次数是(d)。main()int i=0;while(i10)if(i1)continue;if(i=5)break;i+;A)1B)10C)6D)死循环,不能确定次数6、执行语句:for(i=1;i+4;)后;变量 i 的值是(c)。A)3B)4C)5D)不定7、有关函数参数,下列说法不正确的是(c)。A)实参可以将数据传给形
17、参;B)实参和形参是不同的变量;C)形参可以将数据传给实参;D)实参和形参必须个数相等,类型一致。8、C 语言中,变量和函数具有两个属性是(b)。A)作用域和生存期B)类型和存储类别C)作用域和类型D)作用域和存储类别9、说明语句“int(*p)():”的含义是(c)。A)p 是一个指向一维数组的指针变量B)p 是指针变量,指向一个整型数据C)p 是一个指向函数的指针,该函数的返回值是一个整型D)以上都不对10、说明语句int*(*p);的含义是(d)。A)p 是一个指向 int 型数组的指针B)p 是指针变量,它构成了指针数组C)p 是一个指向函数的指针,该函数的返回值是一个整型D)p 是一
18、个指向函数的指针,该函数的返回值是一个指向整型的指针11、下述程序的执行结果是(a)。#includeinti;unionuncharc2;-.可修编.-.void main()x.c1=1;unionunx;printf(“n%d”,x.i);x.c0=10;A)266B)11C)265D)13812、若程序中有如下的说明和定义:struct exintx,y;structexx,y;则会发生的情况是(a)。A)编译时错B)程序能顺利编译、连接、执行C)能顺利编译和连接,但不能执行D)能通过编译,但连接出错13、C 语言可以处理的文件类型是(b)。A)文本文件和数据文件B)文本文件和二进制文
19、件C)数据文件和二进制文件D)数据代码文件14、下面的 for 语句(c)。for(x=0,y=0;(y!=123)&(x4);x+)A)是无限循环B)循环次数不定C)循环执行 4 次 D)循环执行 3 次15、若有如下说明:structcharch;inti;doublex;arr23=a,1,3.45,b,2,7.89,c,3,1.93;则表达式(b)的值为 2。A)arr01.chB)arr01.iC)arr00.iD)arr02.i二、判断题二、判断题1、条件运算符的结合方向是“自左向右”()。2、switch 语句中每一个 case 的常量表达式的值必须互不相同()。3、循环语句中循
20、环体允许包含一个以上的语句,可以不以复合语句形式出现()。4、构成 C 程序的源文件之间以及函数与函数之间,相互位置可以任意()。5、C 程序中的函数不能嵌套定义,但可嵌套调用()。6、从变量的作用域角度来分,可以分为全局变量和局部变量()。7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来()。8、若有说明:int a 4=0,0;,则只有 a00和 a01可得到初值 0,其余元素均得不到初值0()。9、利用指针和结构类型不能构成更复杂的数据结构()。10、共用体类型可以出现在结构体类型定义中()。11、当一个 case 语句末包含 break 语句时,执行完该 case 语
21、句后跳出 switch 结构()。12、宏定义中的标识符可以用大写字母,也可以用小写字母()。13、do-while 语句构成的循环,当 while 语句中的表达式的值为非零时结束循环()。14、用“%”作求余运算时,该运算符两侧均应为整型数据()。15、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式()。三、写出程序的运行结果三、写出程序的运行结果1、#includestdio.hif(ab)main()if(cd)x=1;int a=1,b=3,c=5,d=4;else-.可修编.-.if(ac)if(bd)x=2;else x=3;else x=6;else x=7;printf
22、(“x=%d”,x);2、#includestdio.hmain()int k,j,m;for(k=5;k=1;k-)m=0;for(j=k,j=5;j+)m+=k*j;printf(“m=%dn”,m);3、#include main()main()int a=1,2,3,4,i,j,s=0;union Exaj=1;structfor(i=3;i=0;i-)int a;s=s+ai*j;int b;j=j*10;out;printf(“s=%dn”,s);int c;5、#include stdio.hint d;#include string.he;main()e.c=1;e.d=2;c
23、har s1=som things;e.out.a=e.c*e.d;char s2=test;e.out.b=e.c+e.d;char s3=good;printf(%d%d,e.out.a,e.out.b);printf(%sn,strcat(strcpy(s1,s2),s3);4、#include“stdio.h”四、程序填空四、程序填空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=s
24、qrt(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_dint 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.m
25、onth,&date.day);day_sum=days();printf(“n%d/%disthe%dthdayin%d.”,date.month,date.day,day_sum,date.year);days(int year,int month,int day)int day_sum,i;int day_tab13=0,31,28,31,30,31,30,31,31,30,31,30,31;for(i=1;i=3)return(day_sum);五、程序设计题五、程序设计题1,学生的记录由学号和成绩组成,N 名学生的数据已在主函数中放入结构体数组 s 中,请编写函数fun,它的功能是:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习题 答案 老师
限制150内