1、江苏省计算机等级考试 - 学年 第 学期 c程序设计 试卷(3 )题号一二三四五六七八九总 分得分一、选择题(本题共20道小题,共40分。)1. 若有说明,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); 2. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是main( ) int x;scanf(%d,&x);if(x + + 5) printf(%d,
2、x);else printf(%dn,x - -); A) 7和5 B) 6和3 C) 7和4 D) 6和4 3. 下面程序的输出是A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC#include#includemain() char *p1=abc,*p2=ABC,str50=xyz;strcpy(str+2,strcat(p1,p2);printf(%sn, str); 4. 若有以下说明: int a12=1,2,3,4,5,6,7,8,9,10,11,12; char c=a,d,g; 则数值为4的表达式是A)ag-c B)a4 C)ad-
3、c D)ad-c 5. 以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量 6. 请选出以下程序段的输出结果#include#define MIN(x,y) (x)n B) p-n + + C) (*p).n + + D) + + p-n 9. C语言中形参的缺省存储类别是A)自动(auto) B)静态(static) C)寄存器(register) D)外部(extern) 10. 执行下面的程序段后,变量k中的值为 int k=3, s2; s0=k; k=s1*1
4、0; A) 不定值 B) 33 C) 30 D) 10 11. 已知字母A的ASCII码为十进制的65,下面程序的输出是main() char ch1,ch2;ch1=A+5-3;ch2=A+6-3;printf(%d,%cn,ch1,ch2);A) 67,D B) B,C C) C,D D) 不确定的值 12. 语句:printf(%d n,12 &012);的输出结果是 A) 12 B) 8 C) 6 D) 012 13. 以下说法中正确的是A) C语言程序总是从第一个的函数开始执行B) 在C语言程序中,要调用的函数必须在main()函数中定义C) C语言程序总是从main()函数开始执行
5、D) C语言程序中的main()函数必须放在程序的开始部分 14. 以下程序运行后,输出结果是main( )char *s=abcde;s+=2;printf(%ldn,s);A)cde B)字符c的ASCII码值 C)字符c的地址 D)出错 15. 设x和y均为int型变量,则执行下的循环后,y值为for(y=1,x=1;y=10)break;if(x%2=1)x+=5;continue;x-=3;A)2 B)4 C)6 D)8 16. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为if(ab)if(cd)x=1;else if(ac)if(bd)x=2;else x=3;
6、else x=6;else x=7;A)1 B)2 C)3 D)6 17. 设所有变量均为int型,则表达式(a=2,b=5,b+,a+b)的值是A.7 B.8 C.6 D.2 18. 设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为:A) 0-255B) 1-32767C) 0-65535D) 0-2147483647 19. 下面的程序main() int x=3,y=0,z=0;if(x=y+z)printf(* * * *);else printf(# # # #);A) 有语法错误不能通过编译B) 输出* * * *。C) 可以通过编译
7、,但是不能通过连接,因而不能运行。D) 输出# # # #。 20. 若有以下函数调用语句: fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参的个数是A)3B)4C)5D)6 二、填空题(每空1分,共10分。)1. 若有定义:double x35,则x数组中行下标的下限为_,列下标的下限为_。 2. 设有说明语句int a34=1,2,3,4,5,6,7,8;则a02的初始化值为_,a22的初始化值为_。 3. 表达式7/2的结果是_。表达式7%2的结果是_。 4. 若已知a1.5,b15,c1,则表达式a*b&c的运算结果是_。 5. C语言的标识符只能由大
8、小写字母,数字和下划线三种字符组成,而且第一个字符必须为_。 6. 定义int a1,2,3,4,5,6,*pa;表达式(*p)的值是_。 7. 已有int i,j; float x;为将-10赋给i,12赋给j,410.34赋给x;则对应scanf(%d,%d,%d,&i,&j,&f)调用语句的数据输入形式是_ 三、判断题(本题共10道小题,共10分。)1. 在实际编程中,do-while循环完全可以用for循环替换( ) 2. do-while循环中,根据情况可以省略while( ) 3. 若调用一个函数,且此函数中没有return语句,则返回一个不确定的值( ) 4. 函数调用:strc
9、at(strcpy(str1,str2),str3)的功能是将串str2复制到串str1中后再将串str3连接到串str1之后( ) 5. 自增运算符(+)或自减运算符(-)只能用于变量,不能用于常量或表达式( ) 6. 全局变量使得函数之间的耦合性更加紧密,不利于模块化的要求( ) 7. 函数的定义可以嵌套,但函数的调用不可以嵌套( ) 8. 一个变量在内存中占据一定的存储单元( ) 9. 在while循环中允许使用嵌套循环,但只能是嵌套while循环( ) 10. 字符型数组中可以存放字符串( ) 四、程序填空(本题共5道小题,每题4分,共20分。)1. 设有以下程序:main() int
10、 n1,n2;scanf(%d,&n2);while(n2!=0) n1=n2%10;n2=n2/10;printf(%d,n1);程序运行后,如果从键盘上输入1298;则输出结果为_。 2. 以下程序输出的最后一个值是_。int ff(int n) static int f=l;f=f*n;return f;main() int i;for(I=1;I=5;I+ printf(%dn,ff(i); 3. 编写程序,计算s=1+(1+2)+(1+2+3)+(1+2+3+n)的值。#include main() int n,s,sum=0; scanf(%d,&n); for(int i=1;i
11、=n;i+) _; for(int j=1;j=i;j+) _; sum+=s; printf(%d,sum); 4. 若输入3个整数3,2,1,则下面程序的输出结果是_。#includevoid sub( n,uu)int n, uu ; int t;t=uun-; t+=3*uun;n=n+;if(t=10) uun+=t/10; uun=t%10;else uun=t;main( ) int i, n, aa10=0,0,0,0,0,0scanf( %d%d%d,&n,&aa0,&aa1);for(i=1; in; i+) sub(i,aa);for(i=0; i=n; i+) prin
12、tf(%d,aai);printf(n); 5. 下列程序的输出结果是_。int ast(int x,int y,int * cp,int * dp) *cp=x+y; *dp=x-y;main() int a,b,c,d;a=4;b=3;ast(a,b,&c,&d);printf(%d %dn,c,d); 五、编程题(本题共2道小题,共20分。)1. 打印出杨辉三角形(要求打印出10行如下图) 11 11 2 11 3 3 11 4 6 4 11 5 10105 12. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出1000以内的所有完数。 江苏省计算机等级考
13、试 - 学年 第 学期 c程序设计3 试卷(参考答案)题号一二三四五六七八九总 分得分一、选择题(本题共20道小题,共40分。)1. D2. A3. D4. D5. D6. A7. A8. D9. A10. A11. A12. B13. C14. C15. C16. B17. B18. C19. D20. A二、填空题(每空1分,共10分。)1. 2 , 42. 0 , 83. 3 , 14. 15. 字母数字或下划线6. 37. 10,12,410.34三、判断题(本题共10道小题,共10分。)1. 对2. 错3. 对4. 对5. 对6. 对7. 错8. 对9. 错10. 错四、程序填空(本
14、题共5道小题,每题4分,共20分。)1. 89212. 1203. s=0 , s+=j4. 2 7 2 1 或27215. 7 1五、编程题(本题共2道小题,共20分。)1. main()int i,j;int a1010;printf(n);for(i=0;i10;i+)ai0=1;aii=1;for(i=2;i10;i+)for(j=1;ji;j+)aij=ai-1j-1+ai-1j;for(i=0;i10;i+)for(j=0;j=i;j+)printf(%5d,aij);printf(n);2. main()static int k10;int i,j,n,s;for(j=2;j1000;j+)n=-1;s=j;for(i=1;i if(j%i)=0)n+;s=s-i;kn=i;if(s=0)printf(%d is a wanshu,j);for(i=0;i printf(%d,ki);printf(%dn,kn);