c语言考试题及答案2020年(c语言考试真题)2020年计算机二级C语言考试每日一练(6月18日)备考全国计算机二级C语言考试的小伙伴们,复习的都怎么样了呢?环球青藤小编发布了2020年计算机二级C语言考试每日一练供大家参考复习,小伙伴们快来做一做,测试一下自己吧!了解更多全国计算机二级C语言备考资料敬请关注环球青藤计算机二级频道。 2020年计算机二级C语言考试每日一练(6月18日) 1.下列四组选项中,正确的C语言标识符是( )。 A、 %x B、a+b C、a123 D、123 答案:C 2、下列四组字符串中都可以用作C语言程序中的标识符的是( )。 A、print _3d db8 aBc B、Iam one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My-book line# His.age 答案:A 3.C语言中的简单数据类型包括( )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 答案:D 4.在C语言程序中,表达式5%2的结果是() A、2.5 B、2 C、1 D、3 答案:C 5.下列关于C语言文件的叙述中正确的是()。 A.文件由一系列数据依次排列组成,只能构成二进制文件 B.文件由结构序列组成,可以构成二进制文件或文本文件 C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成,其类型只能是文本文件 答案:C 更多2020年计算机二级C语言考试每日一练试题,请继续关注环球青藤计算机二级频道。需要及时了解考试动态的小伙伴可“ 免费预约短信提醒”届时环球青藤会及时为大家推送2020年计算机二级考试相关信息提醒。环球青藤友情提示:对于想要参加计算机二级考试的小伙伴们,环球青藤特地为您准备了计算机二级考试资料,如有需要请点击文章下方“免费下载计算机二级考试资料”下载学习。 2020年计算机二级C语言考试每日一练(6月12日)备考全国计算机二级C语言考试的小伙伴们,复习的都怎么样了呢?环球青藤小编发布了2020年计算机二级C语言考试每日一练供大家参考复习,小伙伴们快来做一做,测试一下自己吧!了解更多全国计算机二级C语言备考资料敬请关注环球青藤计算机二级频道。 2020年计算机二级C语言考试每日一练(6月12日) 1.下列关于数据库设计的叙述中,正确的是( )。 A.在需求分析阶段建立数据字典 B.在概念设计阶段建立数据字典 C.在逻辑设计阶段建立数据字典 D.在物理设计阶段建立数据字典 答案:A 2.数据库系统的三级模式不包括( )。 A.概念模式 B.内模式 C.外模式 D.数据模式 答案:D 3.以下选项中不能作为c语言合法常量的是( )。. A.0.1e+6 B.’cd’. C.”、a” D.’011 答案:B 4.if语句的基本形式是:if(表达式)语句,以下关于“表=迭式”值的叙述中正确的是( )。 A.必须是逻辑值 B.必须是整数值 C.必须是正数 D.可以是任意合法的数值 答案:D 5.计算机能直接执行的程序是( )。 A.源程序 B.目标程序 C.汇编程序 D.可执行程序 答案:D 更多2020年计算机二级C语言考试每日一练试题,请继续关注环球青藤计算机二级频道。需要及时了解考试动态的小伙伴可“ 免费预约短信提醒”届时环球青藤会及时为大家推送2020年计算机二级考试相关信息提醒。环球青藤友情提示:对于想要参加计算机二级考试的小伙伴们,环球青藤特地为您准备了计算机二级考试资料,如有需要请点击文章下方“免费下载计算机二级考试资料”下载学习。 2020年计算机二级C语言考试每日一练(6月19日)备考全国计算机二级C语言考试的小伙伴们,复习的都怎么样了呢?环球青藤小编发布了2020年计算机二级C语言考试每日一练供大家参考复习,小伙伴们快来做一做,测试一下自己吧!了解更多全国计算机二级C语言备考资料敬请关注环球青藤计算机二级频道。 2020年计算机二级C语言考试每日一练(6月19日) 1.在软件设计中不使用的工具是()。 A.系统结构图 B.PAD图 C.数据流图(DFD图) D.程序流程图 答案:C 2.以下选项中关于程序模块化的叙述错误的是()。 A.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块 C.把程序分成若干相对独立的模块,可便于编码和调试 D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序 答案:A 3.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。 A.-69 B.369 C.0.369 D.整数集合{1,2,3,4,5} 答案:B 4.有如下程序段: int x=12; double y=3.141593; prinff("%d%8.6f",x,y);其输出结果是( )。 A.123.141593 B.12 3.141593 C.12,3.141593 D.123.1415930 答案:A 5.在以下给出的表达式中,与while(E)中的(E)不等价的表达式是()。 A.(E0||E0) B.(E==0) C.(!E==0) D.(E!=0) 答案:B 更多2020年计算机二级C语言考试每日一练试题,请继续关注环球青藤计算机二级频道。需要及时了解考试动态的小伙伴可“ 免费预约短信提醒”届时环球青藤会及时为大家推送2020年计算机二级考试相关信息提醒。环球青藤友情提示:对于想要参加计算机二级考试的小伙伴们,环球青藤特地为您准备了计算机二级考试资料,如有需要请点击文章下方“免费下载计算机二级考试资料”下载学习。 c语言计算机二级考试选择题如图?全国计算机二级考试试题题库(附答案) 下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项在答题 卡相应位置上涂黑,答在试卷上不得分。 (1) 应用软件是指 A) 所有能够使用的软件 B) 能被各应用单位共同使用的某种软件 C) 所有微机上都应使用的基本软件 D) 专门为某一应用目的而编制的软件 (2) 下列述叙中错误的是 A) 计算机要经常使用不要长期闲置不用 B) 为了延长计算机的寿命,应避免频繁开关计算机 C) 在计算机附近应避免磁场干扰 D) 计算机用几小时后,应关机一会儿再用 (3) 下列字符中,ASCII码值最小的是 A) A B) a C) Z D) x (4) 用晶体管作为电子器件制成的计算机属于 A) 第一代 B) 第二代 C) 第三代 D) 第四代 (5) 下列各不同进制的四个无符号数中,最小的数是 A) ()2 B) (37)8 C) (75)10 D) (2A)16 (6) 二进制数转换成十六进制数是 A) B) C) D) (7) 下列各无符号十进制数中,能用八位二进制表示的是 A) 296 B) 333 C) 256 D) 199 (8) 计算机的软件系统可分类为 A) 程序与数据 B) 系统软件与应用软件 D) 操作系统与语言处理程序 D) 程序、数据与文档 (9) 486机中的CPU同时能处理的二进制位数为 A) 8 B) 16 C) 32 D) 64 (10) 在使用计算机的过程中,需要重新启动DOS,则要 A) 按Ctrl+Break键 B) 按^C键 C) 按Ctrl+Alt+Del键 D) 按^H键 (11) 现要从软盘启动DOS(软盘中已存有DOS系统),设有如下一些操作:①打开计算机 电源;②将该软盘插入A驱动器;③关好A驱动器门。则冷启动的操作顺序应为 A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→① (12) 设当前盘中某一文件路径为ACB,当前目录为A。下列命令中错误的是 A) CD.. B) RD ACB C) TYPE ACB D) TYPE CB (13) 设当前盘中的根目录下有一子目录AB,在子目录AB下有一文件。现要查看文件 的内容,应使用命令 A) TYPE AB B) TYPE AB C) TYPE D) DIR AB (14) 自动批处理文件必须放在 A) C盘根目录中 B) A盘根目录中 C) 启动盘的任一个目录中 D) 启动盘的根目录中 (15) 设当前盘当前目录为C:USERXYP,且当前盘当前目录为空,则下列命令中能正 确执行的是 A) RD C:USERXYP B) RD USERXYP C) MD USERXYPUSER D) MD USERXYPXY (16) 下列DOS命令中,合法的是 A) DISKCOMP B) TYPE C) COMP A: B: D) COMP A: A: (17) 设当前盘为C盘,所用的所有软盘已格式化,且容量相同,则下列DOS命令中错 误的是 A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C: (18) 下列DOS命令中错误的是 A) TYPE PRN B) TYPE PRN C) COPY *.TXT PRN D) COPY CON PRN (19) 下列四组DOS命令中,互相等价的一组是 A) COPY A:*.* B:与DISKCOPY A: B: B) COPY +与TYPE C) COPY + 与COPY + D) TYPE *.FORCON与COPY *.FOR CON (20) 设C盘目录结构如下: 且C盘根目录下文件的内容为 CD FORTRAN CD TC 如果在A驱动器中插入一张根目录中只有扩展名为.C的若干文件(即A盘中无DOS系统 文件)的软盘片,则由C盘启动DOS系统后,第一次键入下列命令中,正确的是 A) COPY A:*.C B) COPY A:*.C TC C) COPY A:*.C FORTRAN D) CD USER (21) C语言提供的合法的数据类型关键字是 A) Double B) short C) integer D) Char (22) 在C语言中,合法的长整型常数是 A) 0L B) 4962710 C) D) (23) 表达式:10!=9的值是 A) true B) 非零值 C) 0 D) 1 (24) 合法的C语言中,合法的长整型常数是 A) 't' B) "A" C) 65 D) A (25) 若有说明和语句: int a=5; a++; 此处表达式a++的值是 A) 7 B) 6 C) 5 D) 4 (26) 在下列选项中,不正确的赋值语句是 A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1; (27) 若有说明:int i,j=7, *p=i;,则与i=j;等价的语句是 A) I= *P; B) *P=*J; C) i=j; D) i=* *p; (28) 不能把字符串:Hello!赋给数组b的语句是 A) char b[10]={'H','e','l','l','o','!'}; B) char b[10];b="Hello!"; C) char b[10];strcpy(b,"Hello!"); D) char b[10]="Hello!"; (29) 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是 A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c] (30) 若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为6的表达式是 A) *p+6 B) *(p+6) C) *p+=5 D) p+5 (31) 若有以下说明: int w[3][4]o={{0,1},{2,4},{5,8}}; int(*p)[4]=w; 则数值为4的表达式是 A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1] (32) 若程序中有下面的说明和定义 struct abc {int x;char y;} struct abc s1,s2; 则会发生的情况是 A) 编译进错 B) 程序将顺利编译`连接`执行 C) 能顺利通过编译`连接`但不能执行 D) 能顺利通过编译`但连接出错 (33) 能正确表示a≥10或a≤0的关系表达式是 A)a=10 or a=0 B)a=10│a=0 C)a=10││a=0 D)a=10 ││a=0 (34) 下面程序的输出是 main() { int x=3,y=6,a=0; while(x++!=(y+=o1)) { a+o=1; if(y #include main() { char ss[10]="12345"; strcat(ss,"6789"); gets(ss);printf("%sn",ss); } A) ABC B) ABC9 C) 123456ABC D) ABC456789 (35) 下面程序的输出是 main() { char *a=""; int v1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++) switch(s[k]) { default:v4++; case '1': v1++; case '3': v3++; case '2': v2++; } printf("v1=%d,v2=%d,v3=%d,v4=%dn",v1,v2,v3,v4); } A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1 C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8 (36) 下面程序的输出是 main() {int k=11;printf("k=%d,k=%o,k=%xn",k,k,k);} A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b (37) 若有以下程序段,w和k都是整型变量: ┆ w=k; LB: if(w==0) go to LE; w--; printf("*"); goto LB; LE: ┆ 则不能与上面程序段等价的循环语句是 A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*"); C)w=k; D)w=k; while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0); (38) 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是 A)*p=a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p); C) p=a;scanf("%lf",a); D)p=a; scanf("%le",p); (39) 当执行下面程序且输入:ABC时,输出的结果是 #include #include main() { char ss[10]="12345"; gets(ss);printf("%sn",ss); } A) ABC B) ABC9 C) 123456ABC D) ABC456789 (40) 若有以下的说明和语句: main() {int t[3][2], *pt[3],k; fpr(k=o; k3;k++)pt[k]=t[k]; } 则以一选项中能正确表示t数组元素地址的表达式是 A) t[3][2] B) *pt[0] C) *(pt+1) D) pt[2] (41) 下面程序输出数组中的最大值,由s指针指向该元素. main() { int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s; flr(p=a, s=a; p-a10; p++) if(---?---)s=p; printf("The max:%d",*s): } 则在if语句中的判断表达式应该是 A) ps B) *p*s C) a[p]a[s] D) p-ap-s (42) 下面程序的输出是 #include main() { char*a="abcdefgh"; fun(a);puts(a); } fun (char * s) { int x=0,y;char c; for(y=strlen(s)-1;x A)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba (43) 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函数调用语句 中实参的个数是 A)3 B)4 C)5 D)6 (44) 下面程序的输出是 main() { int t=1; fun(fun(t));} fun(int h) { static int a[3]={1,2,3}; int k; for(k=0;k3;k++) a[k]+=a[k]-h; for(k=1;k3;k++) printf("%d",a[k]); printf("n"); return(a[h]);} A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5, 1,5,9, 1,3,5, 0,4,8, -1,3,7, (45) C语言中,函数的隐含存储类别是 A)auto B)static C)extern D)无存储类别 (46) 下面程序的输出是 int w=3; main() { int w=10; printf("%dn",fun(5)*w); } 2020年计算机二级C语言考试每日一练(6月15日)备考全国计算机二级C语言考试的小伙伴们,复习的都怎么样了呢?环球青藤小编发布了2020年计算机二级C语言考试每日一练供大家参考复习,小伙伴们快来做一做,测试一下自己吧!了解更多全国计算机二级C语言备考资料敬请关注环球青藤计算机二级频道。 2020年计算机二级C语言考试每日一练(6月15日) 1.下列叙述中正确的是()。 A.有一个以上根结点的数据结构不一定是非线性结构 B.只有一个根结点的数据结构不一定是线性结构 C.循环链表是非线性结构 D.双向链表是非线性结构 答案:B 2.下列关于二叉树的叙述中,正确的是()。 A.叶子结点总是比度为2的结点少一个 B.叶子结点总是比度为2的结点多一个 C.叶子结点数是度为2的结点数的两倍 D.度为2的结点数是度为1的结点数的两倍 答案:B 3.软件生命周期中的活动不包括()。 A.市场调研 B.需求分析 C.软件测试 D.软件维护 答案:A 4.设有定义:int a;float b;执行scanf("%2d%f",a,B.;语句时,若从键盘输入876 543.0回车则a和b的值分别是()。 A.87和6.0 B.876和543.0 C.87和543.0 D.76和543.0 答案:A 5.程序调试的任务是()。 A.设计测试用例 B.验证程序的正确性 C.发现程序中的错误 D.诊断和改正程序中的错误 答案:D 更多2020年计算机二级C语言考试每日一练试题,请继续关注环球青藤计算机二级频道。需要及时了解考试动态的小伙伴可“ 免费预约短信提醒”届时环球青藤会及时为大家推送2020年计算机二级考试相关信息提醒。环球青藤友情提示:对于想要参加计算机二级考试的小伙伴们,环球青藤特地为您准备了计算机二级考试资料,如有需要请点击文章下方“免费下载计算机二级考试资料”下载学习。 求c语言试题及答案!急啊!c语言考试题(一) 一、 单项选择题(每题2分,共20分) 1、以下选项中属于C语言的数据类型是( ) A.复数型 B.逻辑型 C.集合型 D.双精度型 2、一个C程序的执行是从( ) A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束 3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( ) A.3 B.0C.-12 D.9 4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。 A.cd\0e B.'c''d' C.cd D.cd e 5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。 A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3] 6、以下有宏替换不正确的叙述( ). A.宏替换不占用运行时间 B.宏名无类型 C.宏替换只是字符串替换 D.宏名必须用大写字母表示 7、执行char str[10]=”Chnina”; strlen(str)的值是( ) A.5 B.6 C.7 D.9 8、下面程序的输出结果是:( ) #define POWER(x) (x*x) main() {int i=4; printf("%d",POWER(i-2)); } A. -9 B. -7 C. 5 D. -6 9、在定义int a[3][4][2];后,第10个元素是( ) A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1] 10、下面程序的输出结果是:( ) typedef struct {long x[2];brshort y[4];brchar z[8];br}MYTYPE; MYTYPE a; main() { printf("%dn",sizeof(a));} A. 2 B. 8 C. 14 D. 24 二、 填空题(每空1分,共11分) 1、字符串"A"在内存中占用的字节数为 。 2、C语言中的标识符只能由字母、下划线和 组成。 3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是 if(a++=25b--=2c++) printf("***a=%d,b=%d,c=%dn",a,b,c); else printf("###a=%d,b=%d,c=%dn",a,b,c); 4、有如下定义a[]="B172\'a%%";则执行语句printf("%d",strlen(a));的结果为 。 5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i4;i++) p[i]=a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。 6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。 7、设x、y都是int型变量,初值都为1,则执行表达式:--xy++后,y的值为 。 8、语句for(i=1;i==10;i++)continue;循环的次数是 。 9、以下程序输出 。 main() {enum em {em1=3,em2=1,em3}; char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%sn",aa[em1],aa[em2],aa[em3]); } 三、 写程序结果(每题5分,共35分) 1、#include main() {int x,y,z;brx=1,y=2,z=3; x+=y+=z;brprintf("1:%dn",z+=xy?x++:y++);brx=0x02ff;y=0xff00;brprintf("2:%dn",(xy)4|0x005f);brx=y=z=-1; ++x||++y++z;brprintf("3:%d,%d,%dn",x,y,z);br} 2、#define f(x) x*x main() {int a=6,b=2,c;brc=f(a+b)/f(b);brprintf(“%dn”,c);br} 3、fun(int k) { printf("%d",k); if(k0) fun(k-1); } main( ) { int w=5; fun(w); printf("n"); } 4、#include main() {int x=1,y=0;brswitch(x)br{ case 1:brswitch(y)br{ case 0:printf(“firstn”);break;brcase 1:printf(“secondn”);break;br} case 2:printf(“thirdn”); } } 5、#include main() { int k=4; func(k); func(k); } func(int a) { static int m=0; m+=a; printf("%d",m); } 6、struct st { int x; int *y; }*p; int s[]={30,20}; struct st a[]={1,s[0],2,s[1]}; main() { p=a; printf("%d,",p-x); printf("%dn",++(*(++p)-y)); } 7、假定在当前盘目录下有2个文本文件,其名称和内容如下: 文件名: a1.txt a2.txt 内容: ABCDEF# abcdef# #include "stdio.h" main() {FILE *fp;brvoid fc();brif((fp=fopen("a1.txt","r"))==NULL)br{printf("Can not open file!n"); exit(1);} else{fc(fp);fclose(fp);} if((fp=fopen("a2.txt","r"))==NULL) {printf("Can not open file!n"); exit(1);} else{fc(fp);fclose(fp);} } void fc(fp1) FILE *fp1; {char c;brwhile((c=fgetc(fp1))!='#')putchar(c);br} 四、 程序填空(每空2分,共14分) 1、下面程序求矩阵a的主对角线元素之和,请填空。 main() { int a[3][3]={2,4,6,8,10,12,14,16,18}; int sum=0,i,j; for(i=0;i3; ① ) for(j=0; ② ;j++) if(i= =j) sum=sum+ ③ ; printf("sum=%dn",sum); } 2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。 coy(char s1[],char s2[]) { int i; for(i=0;s2[i]!= ① ;i++) s1[i]=s2[i]; ② ; } 3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。 main() { char a[]="students",t; int i,j; for(i=1;i7;i+=2) for(j=i+2;j8; ① ) if( ② ) {t=a[i];a[i]=a[j];a[j]=t;} puts(a); } c语言考试题(二) 一. 填空题(每题2分,共20分) 1. C语言基本数据类型有:_______________________________; 构造类型有:_____________________________________。 P.13 2. C语言源程序注注释符号是:________________________________, 为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4 3. 源程序TEST.C经编译产生的目标文件是:________________________; 经连接处理后,产生的可执行文件是:__________________________。 4. strlen(“1234 0xy)的值为:_____________________________; sizeof(float)的值为:____________________________ 5. 二维数组a[10] [50]最后一行的首地址为:_________________________; 最后一个元素的首地址为:____________________________________。 6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D : MYC MY . H应如何包含到源程序文件中:_________________________。P.130 7. 已知函数定义为:int stat(int a,float *p) {……………} 则此函数的两个参数类型分别是_______________ 、 _____________________。 8. 设int x,y,z=4; x=y=++z; x=(yz)?x+2;x++;则x的值是:_________; 设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。 9. 与if (x=0) 等价的写法是if ( ! x ); 判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)1e-6 )。 10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量; 定义文件指针的C语句是:_________________________________。 二. 单项选择题 (每题1分,共10分) 1. 组成C程序的基本单位是____________________________。 A.函数 B.标识符 C.表达式 D.语句 2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。 A.0至65536 B.0至65535 C.-32767至32768 D.-32768至32767 3. 在C语言中,逻辑值“真”是用_____________________表示的。 A.预定义为真值的宏 B.非零数 C.正数 D.非零整数 4. C语言对于嵌套if语句规定else总是与_____________________匹配。 A.与最外层的if B.与之前最近的if C.与之前最近的不带else的if D.与最近的{ }之前的if 5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。 A.3 B.9 C.4 D.10 6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。 A.该数组第一个元素的值 B.该数组所有元素的值 C.该数组第一个元素的首地址 D.该数组所有元素的首地址 7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。 A.(x=y=z) B.(x=y)AND(y=z) C.(x=y)(y=z) D.(xy)(y=z) 8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。 A. a[p-a] B.*(a) C.p D.*(*(a+i)) 9. 若有语句scanf(“%d%d”,a,b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。 A.12 34 B.12,34 C.1234 D.12:34 10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。 A.4 B.5 C.6 D.7 三. 分析程序,写出运行结果。(每题4分,共20分) 1. 源程序如下,运行时假定键盘输入字符串为``2004`` #include void main(void) { int n=0; char c; while( (c=getchar( )) ! =`n` ) /*字符型数字*/ { if (c=`0`c=`9` ) n = n*10 + c- `0` ; /*数字*/ } printf(“value=%d|n” ,n); } 结果为: value=2004 。 2. 源程序如下: #include void main(void) { int num[9]={399,398,397,396,395,299,290,311,301}; int score[9]={81,85,59,77,90,66,89,93,73}; int iMax,iPos,i; iPos=0; iMax=score[iPos]; for(i=1;i9;i++) if(scoreiMax) { iPos=i; iMax=score[iPox]; } printf(“num=%d,score=%d”,num[iPos];score[iPos]); 结果为: num=311, score=93 。 3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10 #include void main(void) { int i,a[10]; int *p; p=a; for(i=0;i10;i++) scanf(“%d“,p++); for(p=a;p SPAN;p++) if (*p%2)printf(“%3d”,*p); } 结果为: 1 3 5 7 9 。 4. 源程序如下,两次运行,分别输入数据13和21 #include #include void main(void) { int n,s; scant (“%d”,n); s=panduan( n); if(s==1)printf(“yesn”); else printf(“non); } int panduan(int n) { int k,j; k=(int)sqrt((double)n); for(j=2;j=k,j++) { if(n%j==0) break; } if(jk) retum(1); else retum(0); } 结果为 yes no 5.源程序如下,运行时假定键盘输入字符为:AxByCz #include #include void main(void) { char str[80]; int i; gets(str); for(i=0;str!=`\0`;i++) if(str=`a`str=`z`) str-=32; else if (str=`A`str=`Z`) str+=32; puts(str); } 结果为: aXbYcZ 。 四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分) 1. 求 s=1+2+3+、、、、、、、+100 include 改正为_________________________。 void sum (void) 改正为_________________________。 { int s,i; for (s=0,i=1;i=100;i++) { s=s+ i ++; 改正为__________________________。 } printf (“s=%f”,s) 改正为__________________________。 } 2. 源程序实现求x #include double pow(float . int) 改正为_________________________。 void main(void) { int i, n; float x; scanf (“%f,%d”,x,n); for (i=1; i9;i++) printf(“%d,%en”, i, pow(i,x); } 改正为______________________。 double v v pow(float x, int n) { int i; double p=0; 改正为______________________。 for (i=1; i i++)改正为_______________________。 p*=x; retum(p); } 3. 源程序实现排升序。 #include void main(void) { int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp; for (i=0; i9; i++) { iMin=0; 改正为_______________________。 for (j=i+1; j10;j++) if(a[iMin] iMin="j;"改正为_______________________。 if (iMin==i) 改正为_________________________。 { iTemp=a; a[iMin]=a; 改正为_________________________。 a[iMin]=iTemp; } } for(i=0; i10; i++) printf(“%4d”, a): } 4. 源程序为求平均值。 #include void main(void) { int i, sum; 改正为____________________。 float avg; int sc[10], *p=sc; for (i=0, i10; i++) 改正为____________________。 { scanf(“%d”, p++); sum+= *p; 改正为____________________。 } avg = sum/ 10; 改正为___________________。 printf(“avg=%f”, avg); } 5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和 #include void main(void { float exp , x , t; int i, n; scanf(“%f, %d”,x, n); t=0; 改正为___________________。 exp=1.0; for(i=1 ; i=n; i++) { if(t1e-6) loop; 改正为__________________。 t+=x/i; 改正为___________________。 exp*=t; 改正为___________________。 } printf(“n%15.6f”, exp); } 五. 编程题 (每题6分,共30分) 1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。 #include void swap (int *, int *); void main (void) { int x, y; scanf(“%d, %d”, x, y); swap( x, y); printf(“%d, %d”, x, y); } void swap( ) { } 2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。 #include void main (void) { int i; float scoer[36], precent; int count=0; for (i=0; i36; i++) { scanf(“%f”, score); } 3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。 #include #include void main (void) { char str [80]; int i, iA=0, ia=0, iother=0; } 4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。 #include void main(void) { int a[3] [3]={1,3,5,7,9,11,13,15,11}; int i, j, s1, s2; int t[3] [3]; printf(“%d, %d,n”,s1, s2); for(i=0; i3; i++) for(j=0; j3; j++) printf(“%3d”, t [j]); } 5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。 #include #include #include char *lstrchar(char*, char); void main(void) { char c, *p, str[80]; gets (str); scanf(“%c”, c); p=lstrchar(str,c); if(p==NULL) printf(“char %c not foundn”c); else printf(“The position is %d”, p-str); char “lstrchar( ) { } 历年全国计算机二级考试c语言真题及答案 |