《历届重庆市、计算机二级C语言考试试题及答案》由会员分享,可在线阅读,更多相关《历届重庆市、计算机二级C语言考试试题及答案(19页珍藏版)》请在金锄头文库上搜索。
1、C 语言笔试试题 第 1 页 共 20 页二级二级 C C 语言笔试试卷语言笔试试卷(A)(A)2007 年 1 注意事项:注意事项:1.1.一、二题一、二题 为客观题,请将答案涂在机读答题卡上为客观题,请将答案涂在机读答题卡上2.2. 三、四、五、六题三、四、五、六题 为主观题,请将答案做在答题纸上为主观题,请将答案做在答题纸上一、单项选择题。一、单项选择题。 (每小题分,共(每小题分,共 2020 分)分)1在 C 程序的函数调用时,主调函数中 的实参和被调函数中的形参( ) 。 (A) 个数、次序必须相同,但数据类 型可以不考虑 (B) 个数、次序和对应参数的数据类 型都应该相同 (C)
2、 个数、次序和数据类型均可以不 相同 (D) 对应参数数据类型应相同,但个 数和次序可以不考虑 2如 a 为 int 型,则与表达式 a 等价的 C 语言关系表达式是( ) (A) a0 (B) a!=0 (C) a=0 (D) ab (B) p-a (C) +(p-a) (D) (p+)-a 9以下程序的输出结果是( ) 。 int x=3,y=4; void main( ) int x,y=5;x=y+;printf(“%d“,x); (A)3 (B) 4 (C) 5 (D) 6 10在 C 语言中,函数默认的存储类型为 ( ) 。 (A) auto(B) register (C)stat
3、ic (D) extern 11有定义:float y,*p=,假定变量 y 在内存中所占地址为 100103。那 么 p 的值为( ) 。 (A) 100(B) 101 (C) 102(D) 103 12. 有定义:int a10, n, *p1=a,*p2=,则正确的赋值语句为 ( ) 。 (A) n=p2-p1;(B) n=p2*p1; (C) n=p2+p1; (D) n=p1/p2; 13调用 strlen(“abcd0efng0“)的结 果为( )。(A) 4 (B) 5 (C) 8 (D) 10 14执行下面程序中输出语句后,a 的值 是( )。 #include main( )
4、 int a; printf(“%dn“,(a=3*5,a*4,a); (A)65 (B)20 (C)15 (D)10C 语言笔试试题 第 2 页 共 20 页15若有定义 int a,b,x;且变量都已正 确赋值,下面选项中合法的 if 语句是( ) 。 (A)if(a=b) x+; (B)if(a=b) x+; (D)if(a=b) x+; 16执行下面的程序后,变量 a 的值是( ) 。 #include #define SQR(X) X*X void main() int a=10,k=2,m=3; a/=SQR(m)/SQR(k); printf(“%d n“,a); (A)10 (
5、B)1 (C)5 (D)0 17若变量 t 为 double 类型,表达式 (t=1,t+5,t)的值是( )。(A)1 (B)6.0 (C)1.0 (D)6 18在 C 语言中,下面关于数组的描述中 正确的是( )。 (A)数组的大小是固定的,但可以有 不同类型的数组元素 (B)数组的大小是可变的,但所有数 组元素的类型必须相同 (C)数组的大小是固定的,所有数组 元素的类型必须相同 (D)数组的大小是可变的,可以有不 同的类型的数组元素 19下述程序的输出结果是( ) 。 #include void main() int a,b,c=241;a=c/100%9;b=-1printf(“%d
6、,%dn“,a,b); (A)2,0 (B)2,1 (C)6,1 (D)0,-1 20.若有以下说明和语句,则下列引用方 式中不正确的是( ) 。struct workerint no; char *name; work,*p= (A)work.no (B)(*p).no (C)p-no (D)work-no二、基本概念选择填空题(二、基本概念选择填空题(本大题后面有 若干备选项,请选择合适的备选项并将其号码填入各小题的空白处。每空 2 分,共 10 分) 1在 C 语言中,函数一般由两个部分组 成,它们是函数首部和 。 2任何程序都可调用标准函数 exit(), 当它被调用时就 程序的执行。
7、3一个 C 语言程序在可以被执行之前, 需要经过的 4 个处理程序是:编辑程 序、预处理程序、编译程序和 。 4在 C 语言中无固有的输入和输出语句, 但是用 C 语言编写的程序可以用函数 调用的形式来实现输入、输出,这些 函数由 提供。 5C 标准库函数 rewind 的作用是 。备选项: (A) 主函数(B) 函 数体(C) 函数首部(D) 用户自 定义函数(E) 终 止(F) 使读写指 针指向文件的 开头 (G) 标准 I/O 库/系统(H) 连 接程序(J) 判断文件 指针是否指向 文件末尾三、程序填空题。三、程序填空题。 (每空(每空 2 2 分,共分,共 2020 分)分) 。1.
8、 下面程序的功能是从键盘上输入一行 字符,将其中的小写字母转换为大写 字母后输出。请填空完善程序。 #include void main() char c; while(c= )!=n) if(c=a int i; char c; if( =NULL) printf(“Cant open this C 语言笔试试题 第 3 页 共 20 页file!n“); return; for(i=0;ivoid main()char *a=“abcd“,“12345“,“efghijk“,“ 67890“; char ; int j=0; p=a; for(;j void main() char str
9、=“abcdefg“,*p1,*p2,ch;p1=p2=str; while(*p2!=0) p2+; ; while(p1 #define N 11 void yh(int aN) int j,k; for(j=1;j void main() void fun(int *k); int w=5; fun( void fun(int *k) (*k)+; printf(“%dn“,*k+); 2下面程序的输出结果是( ) 。#include void main() char ch25=“1234“,“5678“,*p2;int j,k,s=0; for(k=0;k0 void main() i
10、nt k=4,m=1,p;p=func(k,m);printf(“%d,“,p);p=func(k,m);printf(“%dn“,p);C 语言笔试试题 第 4 页 共 20 页 int func(int a,int b) static int m=1,n=2;n+=m+1;m=n+a+b;return m; 4下面程序的输出结果是( ) 。#include void main() int a10=1,2,3,4,5,6,7,8,9,10,k,s,i; double ave; for(k=s=i=0;i,则输出结果是( ) 。 #include void main() char s40,c,
11、*str=s; int num=0,word=0;gets(str);while(c=*str+)!=0)if(c= ) word=0; else if(word=0) word=1;num+; printf(“%d wordsn“,num); 6. 下列程序的输出结果是( ) 。#include unsigned f(unsigned num) unsigned k=1;do k*=num%10; num/=10; while(num);return k; void main() int x=35,y=550; printf(“%d,%dn“,f(x),f(y); 五、编程序。五、编程序。
12、(每小题(每小题 1010 分,共分,共 2020 分)分) 1函数 delspace 的功能是删除一个字符 串中所有的空格。例如,输入字符串 为“This is a string“,则输出结果为 “Thisisastring“。测试用主函数如下 所示,请编制函数 delspace。 #include #include void main() char *delspace(char *str); char s81,*ds; gets(s); ds=delspace(s); printf(“nResult: %sn“, ds); 2. 已知两个 3 位数 abc 和 cba 之和为 1333(即
13、 abc+cba=1333) ,编程序求出 3 个数字 a、b 和 c。二级二级 C C 语言笔试试卷语言笔试试卷(A)(A)2007 年 2 注意事项:注意事项:1.1.一题为客观题,请将答案涂一题为客观题,请将答案涂 在机读答题卡上在机读答题卡上2.2.请将二、三、四、五题的答请将二、三、四、五题的答 案做在答题纸上案做在答题纸上 一一. .单项选择题。单项选择题。 (每小题(每小题 1 1 分,共分,共 2020 分)分)1. 一个 C 程序的执行是从( ) 。(A)本程序的 main 函数开始(B)本程序文件的第一个函数开始, 到本程序文件的最后一个函数结束(C)本程序的 main 函
14、数开始,到本 程序文件的最后一个函数结束(D)本程序文件的第一个函数开始, 到本程序 main 函数结束 2. 设有 C 语句:int x=3, y=4,z=5;,则下面 表达式中值为 0 的是( ) 。(A)xm=(n=4)+(k=10-7);printf(m=%dn”,m); (A)4 (B) 3 (C) 7 (D)14 7. 下面程序运行结果(或出现的情况) 是( ) 。#includevoid main() int x=3,y=0,z=0;if (x=y+z)printf(*);elseprintf(#n); (A)有语法错误不能通过编译(B)输出:*(C)可以通过编译,但不能通过连 接,因而不能运行(D)输出:# 8. 已有定义 int k=2; int *ptrl, *ptr2,且 ptr1 和 ptr2 均已指向变量 k,下面不能正确执 行的赋值语句是( ) 。(A)k =*ptr1+*ptr2; (B) ptr2 = k; (C) ptr1=ptr2; (D) k = *ptr1*(*ptr2); 9. 若有已经建好的链表结