C语言复习题及答案(共21页).doc

上传人:飞****2 文档编号:13995443 上传时间:2022-05-02 格式:DOC 页数:21 大小:129.50KB
返回 下载 相关 举报
C语言复习题及答案(共21页).doc_第1页
第1页 / 共21页
C语言复习题及答案(共21页).doc_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《C语言复习题及答案(共21页).doc》由会员分享,可在线阅读,更多相关《C语言复习题及答案(共21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上复习A:一、单项选择题1、如果要把常量327存入变量a中,a不能定义的类型是哪一个?()A) int B) char C) long D) float 2、若x 为unsigned int 型变量,则执行下列语句后x值为( ) x = 65535; printf(“%dn”,x);A)65535 B)1 C)无定值 D)-13、有以下程序main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ab);printf(%d,%dn,k,m);程序运行后的输出结果是 ( ) A)0,0 B) 0,1 C)1,0 D)1,14、在C语言中,如果下面的变

2、量都是int类型,则输出的结果是( )。 sum=pad=5; pAd=sum + + ,pAd + +, + + pAd; printf(%dn,pad); A) 7 B) 6 C) 5 D) 45、以下程序的输出结果是()。main() int a=4,b=5,c=0,d;d=!a&!b|!c;printf(%dn,d); A)1B)0C)非0的数D)-16、当执行以下程序段时()。x=-1;dox=x*x;while(!x);A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误7、全局变量的存储类型可以定义为()。A)auto或static B) ext

3、ern或 register C) auto或extern D) extern或static8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是()。A)auto B) register C) extern D) static9、已知:int a, x; 则正确的赋值语句是( )。 A) a=(a1+a2)/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

4、(%d, p);11、下述程序的输出结果是()。#include void main( ) struct complex int x ; int y; cnum2=1,3,2,7; printf(“%d”, cnum0.y/cnum0.x*cnum1.x) ; A) 0 B) 1 C) 3 D) 6 12、下述程序的输出结果是()。 #include void main( ) union unsigned char c ; unsigned int i4; z ; z.i0=0x39 ; z.i1=0x36; printf(“%c”,z.c); A) 6 B) 9 C) 0 D) 313、下述

5、关于C语言文件操作的结论中,()是正确的。A)对文件操作必须先关闭文件B)对文件操作必须先打开文件C)对文件操作顺序无要求D)对文件操作前必须先测试文件是否存在,然后再打开文件14、以下程序的输出结果是()。 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) B)123 456 780 C) D) 14715、对于所定义的二维数组a23,元素a12是数组的第( )个元素。A)3 B)4 C)5 D)6 二、判断题1、 赋值运算符的优先级低于关系运算符()

6、。2、 条件运算符的结合方向是“自左向右” ()。3、 C语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现()。4、 C程序中的函数不能嵌套调用,但可嵌套定义()。5、 若自定义函数要求函数名返回一个值,则该函数体中必须要有return语句()。6、 当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址()。7、 若有说明:static int a34;,则数组a中各数组元素可在程序的编译阶段得到初值0()。8、 若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值()。9、 利用指针和结构体类型可以构成表、树等复杂的数据

7、结构()。10、共用体变量的地址和它的各成员的地址都是同一地址()。11、printf函数中的“%0”格式参数表示用来输出unsigned型数据( )。12、在一个C程序中,所有要使用的变量和要调用的函数都必须在main( )函数中定义( )。13、赋值运算符的结合性是“自右至左”( )。14、一个C程序可以由多个源程序文件组成( )。15、do-while语句构成的循环,当while语句中的表达式的值为零时结束循环( )。三、写出下面各程序的运行结果专心-专注-专业1、 #includemain ( )int i=0, j=0, k=0, m;for (m=0; m4; m+)switch

8、(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、 #includemain ( )int i=1;while (i=15)if (+i% 3!=2)continue;elseprintf(“%d”, i);3、#include add1(int a , int n) int i; for(i =0;in;i+) ai+;main() static int array =0,1,2,3,4,5,6,7,8,9;int j;add1(array,10);f

9、or(j=0;j10;j+)printf(“%d”,arrayj);4、union data long w; float x; int y; char z; beta;main( ) beta.w=;beta.y=888;beta.x=3.14;beta.z=x;printf(“%c”,beta.y); 5、# include typedef struct student char name10; long sno; float score; STU;main( ) STU a=zhangsan,2001,95,b=Shangxian,2002,90,c=Anhua,2003,95,d,*p=

10、&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、以下程序是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将缺省语句填上。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, ami

11、n=%fn”, 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 %dn”,*x, *y); 五、程序设计题 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数。 2、用自定义函数和数组求n个数的平均值,并用主函数调用参考答案:一、单

12、项选择题1、B 2、D 3、C 4、C 5、 A 6、A 7、D 8、C 9、C 10、D 11、D 12、B 13、B 14、C 15、 D二、判断题() 2、() 3、() 4、() 5、()6、 ) 7、() 8、() 9、()10、()11、( )12、( ) 13、( ) 14、( ) 15、( )三、写出程序的运行结果1、 答案是:0,1,2,52、 答案是:2 5 8 11 143、答案是:4、答案是:x5、答案是:2002Shangxian四、程序填空1、答案是:x=0 xamax xamin2、答案:y=&b; exchange(x,y);五、程序设计题1、参考答案: #de

13、fine N 10struct student char num6;char name8;int score4;float ave; stuN;main() int i,j,max,maxi,sum; float average; /*输入*/for ( i=0; iN; i+) printf(“nInput scores of student %d,n”,i+1);printf(“No.:”);scanf(“%s”,stui.num);printf(“name:”);scanf(“%s”,stui.name);for(j=0;j3;j+) printf(“score %d:”,j+i); s

14、canf(“%d”,&stui.scorej); /*计算*/average=0;max=0;maxi=0;for(i=0; iN; i+) sum=0; for(j=0; jmax) max=sum; maxi=i; average/=N;/*打印*/printf(“NO. name score1 score2 score3 averagen”);for(i=0; iN; i+) printf(“%s%10s”, stui.num , stui.name); for(j=0; j3; j+) printf(“%9d”,stui.scorej); printf(“%8.2fn”,stui.av

15、r); printf(“average=%6.2fn”,average);printf(“The highest score is : %s, score total: %d”, stumaxi.name,max); 2、参考答案: float average( float a , int n) float aver=0; int j; for(j=0;jn;j+) aver=aver+aj; aver=aver/n; return aver; main() float x10,y; int j; for(j=0;j10;j+) scanf(“%f”,&xj); y=average(x,10)

16、; printf(“aver=%.2fn”,y); 复习B:一、单项选择题1、逗号表达式2,4,6,8的值为( )。 A )2 B)4 C)6 D)82、以下选项中非法的表达式是( ) A)0=x&x100 B)i=j = =0 C)(char)(65+3) D)x+1=x+13、若定义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=

17、1, k=4; printf(%dn, ka? k : cb? c: a);A) 4B) 3C) 2D) 15、以下程序中,while循环的循环次数是()。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的值是()。A)3B)4C)5D)不定7、有关函数参数,下列说法不正确的是()。A) 实参可以将数据传给形参; B) 实参和形参是不同的变量; C) 形参可以将数据传给实参; D) 实参和形参必须个数相等,类型一致。8、C语言中,

18、变量和函数具有两个属性是()。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、下述程序的执行结果是()。#includeunion un in

19、t i; char c2; ;void main( ) union un x; x.c0=10; x.c1=1; printf(“n%d”,x.i);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语句(

20、)。for (x=0, y=0; (y!=123) & (x4); x+) A)是无限循环B)循环次数不定C)循环执行4次D)循环执行3次15、若有如下说明:struct char ch; int i; double x; arr23=a,1,3.45,b,2,7.89,c,3,1.93;则表达式( )的值为2。A) arr01.ch B) arr01.i C) arr00.i D) arr02.i 二、判断题1、条件运算符的结合方向是“自左向右” ()。2、switch语句中每一个case的常量表达式的值必须互不相同()。3、循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现(

21、)。4、构成C程序的源文件之间以及函数与函数之间,相互位置可以任意()。5、C程序中的函数不能嵌套定义,但可嵌套调用()。6、从变量的作用域角度来分,可以分为全局变量和局部变量()。7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来()。8、若有说明:int a 4=0,0;,则只有a00和a01可得到初值0,其余元素均得不到初值0()。9、利用指针和结构类型不能构成更复杂的数据结构()。10、共用体类型可以出现在结构体类型定义中()。11、当一个case语句末包含break语句时,执行完该case语句后跳出switch结构( )。12、宏定义中的标识符可以用大写字母,也可以用

22、小写字母( )。13、do-while语句构成的循环,当while语句中的表达式的值为非零时结束循环( )。14、用“%”作求余运算时,该运算符两侧均应为整型数据 ( )。15、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式( )。三、写出程序的运行结果1、 #includemain ( )int a=1, b=3, c=5, d=4;if (ab)if (cd) x=1;elseif (ac)if (bd) x=2;else x=3;else x=6;else x=7;printf(“x=%d”, x);2、 #includemain ( )int k, j, m;for(k=5;

23、k=1; k- -)m=0;for (j=k, j=5; j+)m+=k*j;printf (“m=%dn”, m);3、#include 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+ai*j; j=j*10;

24、printf(“s=%dn”,s); 5、#include stdio.h#include string.hmain( ) char s1 =som things; char s2 =test; char s3 =good;printf(%sn,strcat(strcpy(s1,s2),s3);四、程序填空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); f

25、or (i=2, 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_su

26、m=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_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,它的功能是:把分数最低的学生数

27、据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。#define N 16typedef struct char num10; int s;STREC;int fun(STREC *a, STREC *b) main() STREC sN=“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

28、”,72; STREC hN; int i, n; n=fun(s,h); printf(“The %d lowest score:n”,n); for(i=0; in; i+)printf(“%d %4dn”,hI.num, hI.s);printf(“n”); 2、从键盘输入一批字符(回车键结束),存入一个磁盘文件abc.txt中参考答案:一、单项选择题1、D 2、D 3、A 4、D 5、D 6、C 7、C 8、B 9、C 10、D 11、A 12、A 13、B 14、C 15、B 二、判断题1、()2、()3、()4、()5、()6、()7、()8、()9、()10、()11、( ) 1

29、2、( ) 13、( ) 14、( ) 15、( )三、写出程序的运行结果1、 答案是:x=22、答案是:m=153、答案是: 48 4、答案是:s=1234 5、答案是:testgood 四、程序填空1、答案是:n%10 = = 0 m%i= =02、答案是: date.year,date.month,date.day day_sum=0; day_sum+=1; 五、程序设计题1、参考答案: STREC fun(STREC *a, char *b) static STREC h=“”,-1; int k; for(k=0; kN;k+)if (!strcmp(ak.num, b) h=ak

30、; break;return h;2、参考答案: main( ) FILE *fp; char ch; fp=fopen(“abc.txt”,”w”); ch=getchar( ); while(ch!=n) fputc(fp, ch);ch=getchar();fclose(fp);复习C:一、单项选择题1、 有定义语句:int x, y;,若值11,变量y得到数值12,下面四组输入要通过scanf(%d,%d,&x,&y);语句使变量x得到数形式中,错误的是( ) A)11 12 B)11, 12 C)11,12 D)11 ,122、若有语句int a=1,b=2,c=3;则以下值为0的表

31、达式是( )A)a&b B)ab)|(bc) D)(!(a+b)=c&a)3、设int a=9;则printf(%d,%dn,a , a+);的输出结果是 ( ) 。A)9,10 B)10,9 C)9,9 D)10,104、以下叙述正确的是()。A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和if都不能定义为用户标识符5、运行以下程序后,如果从键盘上输入65 14,则输出结果为()。main() int m,n;printf(Enter m,n:

32、);scanf(%d%d,&m,&n);while(m!=n) while(mn) m-=n;while(nm) n-=m;printf(m=%dn,m);A)m=3B)m=2C)m=1D)m=06、运行下面的程序运行后,如果从键盘上输人5,则输出结果是()。main() int x;scanf(%d,&x);if(x-5) printf(%dx);else printf(%dx+);A)3B)4 C)5 D)67、定义函数时,若函数的类型缺省,则函数的默认类型是()。A)char B) void C)float D)int8、设有说明int (* prt)M; 其中的标识符prt是( )。A

33、)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量9、已知函数说明语句:void *fx( );则它的含义是( )。A)函数fx的返回值是一个空类型的指针B)函数fx的返回值可以是任意的数据类型C)函数fx无返回值D)指针fx指向一个函数,该函数无返回值10、对于下述定义,不正确的叙述是() 。union data int i; char c; float f;a, b;A)变量a所占内存的长度等于成员f的长度B)变量a的地址和它的各成员地址都是相同的C)可以在定义时对a初始化D)不能

34、对变量a赋值,故a=b非法11、C语言库函数fgets(str, n, fp)的功能是()。A)从文件fp中读取长度n的字符串存入B)从文件fp中读取长度不超过n-1的字符串存入str指向的内存C)从文件fp中读取n个字符串存入str指向的内存D)从串str读取至多n个字符到文件fp12、下述程序向文件输出的结果是()。#includevoid main( ) FILE *fp=fopen(“TEST”, “wb”); fprintf(fp, “%d%5.0f%c%d”, 58, 76273.0, -, 2278); fclose(fp);A) 58 75273 - 2278 B) .-227

35、8C) -2278 D) 因文件为二进制文件而不可读13、下面程序输出结果是() 。 #define MAX 5 int aMAX,k; main() printf(n); fun1(); fun3(); printf(t); fun2(); fun3(); fun1() for (k=0; kMAX;k+) ak=k+k; fun2() int aMAX,k; for (k=0;k5;k+) ak=k; fun3() int k; for (k=0;kMAX;k+) printf(%3d,*(a+k); A) 0 2 4 6 8 0 2 4 6 8B) 0 2 4 6 8 0 1 2 3 4C) 0 1 2 3 4 0 2 4 6 8D) 0 1 2 3 4 0 1 2 3 414、已知:int x;执行下面的程序段后,输出结果为( )。 for (x=3; x6; x+) printf (x%2)? “*%d”: “#%dn”, x); A)*3B)#3C)#3D)*3#4 #4 *4 *4#5 *5 *5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁