您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > C语言复习题及答案老师给的
1复习A:一、单项选择题1、如果要把常量327存入变量a中,a不能定义的类型是哪一个?(B)A)intB)charC)longD)float2、若x为unsignedint型变量,则执行下列语句后x值为(D)x=65535;printf(“%d\n”,x);A)65535B)1C)无定值D)-13、有以下程序main(){inta=1,b=2,m=0,n=0,k;k=(n=ba)||(m=ab);printf(″%d,%d\n″,k,m);}程序运行后的输出结果是(C)A)0,0B)0,1C)1,0D)1,14、在C语言中,如果下面的变量都是int类型,则输出的结果是(C)。sum=pad=5;pAd=sum++,pAd++,++pAd;printf(%d\n,pad);A)7B)6C)5D)45、以下程序的输出结果是(A)。main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf(%d\n,d);}A)1B)0C)非0的数D)-16、当执行以下程序段时(A)。x=-1;do{x=x*x;}while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误7、全局变量的存储类型可以定义为(D)。A)auto或staticB)extern或registerC)auto或externD)extern或static8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是(C)。A)autoB)registerC)externD)static9、已知:inta,x;则正确的赋值语句是(C)。A)a=(a[1]+a{2})/2;B)a*=*a+1;C)a=(x=1,x++,x+2);D)a=good;10、已知:inta,*p=&a;则下列函数调用中错误的是(D)。A)scanf(%d,&a);B)scanf(%d,p);C)printf(%d,a);D)printf(%d,p);11、下述程序的输出结果是(D)。2#includestdio.hvoidmain(){structcomplex{intx;inty;}cnum[2]={1,3,2,7};printf(“%d”,cnum[0].y/cnum[0].x*cnum[1].x);}A)0B)1C)3D)612、下述程序的输出结果是(B)。#includestdio.hvoidmain(){union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf(“%c”,z.c);}A)6B)9C)0D)313、下述关于C语言文件操作的结论中,(B)是正确的。A)对文件操作必须先关闭文件B)对文件操作必须先打开文件C)对文件操作顺序无要求D)对文件操作前必须先测试文件是否存在,然后再打开文件14、以下程序的输出结果是(C)。main(){charch[3][4]={123,456,78},*p[3];inti;for(i=0;i3;i++)p[i]=ch[i];for(i=0;i3;i++)printf(%s,p[i]);}A)123456780B)123456780C)12345678D)14715、对于所定义的二维数组a[2][3],元素a[1][2]是数组的第(D)个元素。A)3B)4C)5D)61、赋值运算符的优先级低于关系运算符(√)。2、条件运算符的结合方向是“自左向右”(×)。3、C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现(√)。4、C程序中的函数不能嵌套调用,但可嵌套定义(×)。5、若自定义函数要求函数名返回一个值,则该函数体中必须要有return语句(×)。6、当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址(√)。37、若有说明:staticinta[3][4];,则数组a中各数组元素可在程序的编译阶段得到初值0(√)。8、若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值(√)。9、利用指针和结构体类型可以构成表、树等复杂的数据结构(√)。10、共用体变量的地址和它的各成员的地址都是同一地址(√)。11、printf函数中的“%0”格式参数表示用来输出unsigned型数据(×)。12、在一个C程序中,所有要使用的变量和要调用的函数都必须在main()函数中定义(×)。13、赋值运算符的结合性是“自右至左”(√)。14、一个C程序可以由多个源程序文件组成(√)。15、do-while语句构成的循环,当while语句中的表达式的值为零时结束循环(√)。三、写出下面各程序的运行结果1、#includestdio.hmain(){inti=0,j=0,k=0,m;for(m=0;m4;m++)switch(m){case0:i=m++;case1:j=m++;case2:k=m++;case3:m++;}printf(“\n%d,%d,%d,%d”,i,j,k,m);}2、#includestdio.hmain(){inti=1;while(i=15)if(++i%3!=2)continue;elseprintf(“%d”,i);}3、#includestdio.hadd1(inta[],intn){inti;for(i=0;in;i++)a[i]++;}main(){staticintarray[]={0,1,2,3,4,5,6,7,8,9};intj;add1(array,10);for(j=0;j10;j++)printf(“%d”,array[j]);}4、uniondata{longw;floatx;inty;charz;}beta;main(){beta.w=123456;beta.y=888;beta.x=3.14;beta.z=’x’;printf(“%c”,beta.y);}5、#includestring.htypedefstructstudent{charname[10];longsno;floatscore;}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%s\n,d.sno,p-name);}4四、程序填空1、以下程序是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将缺省语句填上。main(){floatx,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、下面的程序是用指针来交换两个数据,请将缺省语句填上。voidexchange(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inta,b,*x,*y;a=10;b=20;x=&a;①②printf(“%d%d\n”,*x,*y);}五、程序设计题有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数。2、用自定义函数和数组求n个数的平均值,并用主函数调用参考答案:一、单项选择题1、B2、D3、C4、C5、A6、A7、D8、C9、C10、D11、D12、B13、B14、C15、D二、判断题(√)2、(×)3、(√)4、(×)5、(×)6、√)7、(√)8、(√)9、(√)10、(√)11、(×)12、(×)13、(√)14、(√)15、(√)三、写出程序的运行结果1、答案是:0,1,2,52、答案是:25811143、答案是:123456789104、答案是:x5、答案是:2002Shangxian四、程序填空1、答案是:①x=0②xamax③xamin2、答案:①y=&b;②exchange(x,y);五、程序设计题1、参考答案:5#defineN10structstudent{charnum[6];charname[8];intscore[4];floatave;}stu[N];main(){inti,j,max,maxi,sum;floataverage;/*输入*/for(i=0;iN;i++){printf(“\nInputscoresofstudent%d,\n”,i+1);printf(“No.:”);scanf(“%s”,stu[i].num);printf(“name:”);scanf(“%s”,stu[i].name);for(j=0;j3;j++){printf(“score%d:”,j+i);scanf(“%d”,&stu[i].score[j]);}}/*计算*/average=0;max=0;maxi=0;for(i=0;iN;i++){sum=0;for(j=0;ja;j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;if(summax){max=sum;maxi=i;}}average/=N;/*打印*/printf(“NO.namescore1score2score3average\n”);for(i=0;iN;i++){printf(“%s%10s”,stu[i].num,stu[i].name);for(j=0;j3;j++)printf(“%9d”,stu[i].score[j]);printf(“%8.2f\n”,stu[i].avr);}printf(“average=%6.2f\n”,average);printf(“Thehighestscoreis:%s,scoretotal:%d”,stu[maxi].name,max);}2、参考答案:floataverage(floata[],intn){floataver=0;intj;for(j=0;jn;j++)aver=aver+a[j];aver=aver/n;returnaver;}main(){floatx[10],y;intj;for(j=0;j10;j++)scanf(“%f”,&x[j]);y=average(x,10);printf(“aver=%.2f\n”,y);}复习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+163、若定义floata;现要从键盘输入a的数据,其整数位为3位,小数位为2位,则选用(a)。A)scanf(“%f”,&a);B)scanf(“%5.2f”,a);C)scanf(“%6.2f”,&a);D)scanf(“%f”,a);4、下列程序的运行结果是(d)main(){inta=3,b=2,c=1,k=4;printf(%d\n,ka?k:cb?c:a);}A)4B)3C)2D)15、以下程序中,while循环的循环次数是(d)。main(){inti=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)实参可以将数
本文标题:C语言复习题及答案老师给的
链接地址:https://www.777doc.com/doc-7028391 .html