2022年2022年江苏计算机等级考试 .pdf
学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料江苏省计算机等级考试 - 学年 第学期 c程序设计试卷( )题号一二三四五六七八九总 分得分一、选择题(本题共20 道小题,共40 分。 )1. 以下程序运行后,输出结果是main( ) char *s=abcde; s+=2; printf(%ldn ,s); A)cde B)字符 c 的 ASCII 码值C)字符 c 的地址D)出错2. 下面程序的运行结果是main() char ch7=65ab21; int i ,s =0 for(i=0;chi=0&chi9;i+=2) s=10*s+chi-0 printf(%dn ,s); A)12ba56 B)6521 C)6 D)62 3. 若有说明, 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); 4. 若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元:int *p; p=_ malloc( sizeof(int); 则应填入A) int B) inst * C) (*int) D) (int *) 5. 若 k 是 int 型变量,且有下面的程序片段:k=-3 if(k=0) printf(#) else printf(&); 上面程序片段的输出结果是A) # B) & C) #& D) 有语法错误,无输出结果6. 以下程序运行后,输出结果是#include #define PT 5.5 #define S(x) PT*x*x main( ) int a=1,b=2; printf(%4.1fn ,S(a+b) A)49.5 B)9.5 C)22.0 D)45.0 7. 设有以下语句:struct st int n; struct st *next; static struct st a3=5,&a1,7,&a2,9,0,*p; p=&a0; 则表达式 _的值是 6。A)p + + -n B) p-n + + C) (*p).n + + D) + + p-n 8. 当 a=1,b=3,c=5,d=4 时,执行下面一段程序后,x 的值为if(ab) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料if(cd)x=1; else if(ac) if(bd)x=2; else x=3; else x=6; else x=7; A)1 B)2 C)3 D)6 9. 下面程序的输出是A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC #include #include main() char *p1=abc,*p2=ABC,str50=xyz; strcpy(str+2,strcat(p1,p2); printf(%sn, str); 10. 执行以下程序后,y 的值是main ( ) int a=2,4,6,8,10; int y=1,x,*p; p=&a1; for(x=0;x3;x+) y + = * (p + x); printf(%dn,y); A) 17 B) 18 C) 19 D) 20 11. 设已有定义 : char *st=how are you; 下列程序段中正确的是A) char a11, *p; strcpy(p=a+1,&st4); B) char a11; strcpy(+a, st); C) char a11; strcpy(a, st); D) char a, *p; strcpy(p=&a1,st+2); 12. 若有说明 :int i , j=7, *p=&i; ,则与 i=j; 等价的语句是A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p; 13. 执行语句: for(i=1;i+5) printf(%d,x); else printf(%dn,x - -); A) 7 和 5 B) 6 和 3 C) 7 和 4 D) 6 和 4 15. 有以下程序int fun(int x,int y,int *cp,int *dp) *cp=xy;*dp=x-y; main() int a,b,c,d; a=30;b=50; fun(a,b,&c,&d); printf(%d,%dn,c,d); 输出结果是A)50,30 B)30,50 C)80,-20 D)80,20 16. 设有数组定义 : char array =China; 则数组array 所占的空间为A) 4 个字节B) 5 个字节C) 6 个字节D) 7 个字节17. 以下程序运行后,输出结果是fut(int *s , int p23) *s=p11; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - 学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料 main() int a23=1,3,5,7,9, 11,*p; p=(int *)malloc(sizeof(int); fut(&p ,a); printf(%dn ,*p); A)1 B)7 C)9 D)11 18. 设 j 为 int 型变量 ,则下面 for 循环语句的执行结果是for(j=10;j3;j-) if(j%3)j-; -j;-j; printf(%d,j); A)6 3 B)7 4 C)6 2 D)7 3 19. 设 C 语言中,一个int 型数据在内存中占2 个字节,则unsigned int 型数据的取值范围为:A) 0-255 B) 1-32767 C) 0-65535 D) 0-2147483647 20. 设有如下定义:int (*ptr)*(); 则以下叙述中正确的是A)ptr 是指向一维组数的指针变量B)ptr 是指向 int 型数据的指针变量C)ptr 是指向函数的指针,该函数返回一个int 型数据D)ptr 是一个函数名 ,该函数的返回值是指向int 型数据的指针二、填空题(每空1 分,共 10 分。 )1. C 语言数组的下标总是从_开始,不可以为负数;构成数组各个元素具有相同的 _。2. 在 C 语言中 (以 16位 PC机为例), 一个 char数据在内存中所占字节数为_,一个 int 数据在内存中所占字节数为_, 一个 long 数据在内存中所占字节数为_,一个 float 数据在内存中所占字节数为_。3. C 程序是由 _构成的,一个 C 程序中至少包含_ 。 因此,_是 C 程序的基本单位。4. 假定一个二维数组为aMN ,则 ai 的地址值 (以字节为单位 )为_。三、判断题(本题共10 道小题,共10 分。 )1. 若 a 是实型变量, C 程序中允许赋值a=10,因此实型变量中允许存放整型数()2. 全局变量使得函数之间的耦合性 更加紧密,不利于模块化的要求()3. 若调用一个函数,且此函数中没有return 语句,则返回一个不确定的值()4. 用户若需要调用标准库函数,调用前必须重新定义()5. 函数调用 :strcat(strcpy(str1,str2),str3) 的功能是将串str2 复制到串 str1 中后再将串str3 连接到串 str1 之后 ( ) 6. 在实际编程中,do-while 循环完全可以用for 循环替换()7. C 程序的注释只能是一行()8. 自增运算符 (+)或自减运算符 (-) 只能用于变量,不能用于常量或表达式()9. 在函数内的复合语句中定义的变量在本函数范围内有定义()10. 一个变量在内存中占据一定的存储单元()四、程序填空(本题共5 道小题,每题4 分,共 20 分。 )1. 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。#include #include main( ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料 int num26,i; char c; for(i=0; i26; i+) numi=0; while( _!=#) /* 统计从终端输入的大写字母个数*/ if( isupper(c) numc-65+=1; for(i=0; i26; i+) /*输出大写字母和该字母的个数*/ if(numi) printf(%c:%dn,i _ , numi); 2. 以下程序求a数组中的所有素数的和, 函数 isprime 用来判断自变量是否为素数。素数是只能被1 和本身整除且大于1的自然数。#include main() int i,a10,*p=a,sum=0; printf(Enter 10 num:n); for(i=0;i10;i + + ) scanf(%d,&ai); for(i=0;i10;i + + ) if(isprime(*(p+ _) = = 1) printf(%d,*(a+i); sum+=*(a+i); printf(nThe sum=%dn,sum); isprime(x) int x; int i; for(i=2;inext = = NULL). #include struct list int data;struct list *next; _creatlist() struct list *p,*q,*ph; int a; ph=(struct list *) malloc(sizeof(struct list); p=q=ph; printf(Input an integer number,enter -1 to end:n); scanf(%d,&a): while(a!=-1) p=(struct list *)malloc(sizeof(struct list); p-data=a; q-next=p; _=p; scanf(%d,&a); p-next=0; return(ph); main() struct list *head; head=creatlist(); 4. 设有以下程序:main() int a, b, k=4, m=6, *p1=&k, *p2=&m; a=pl=&m; b=(*p1) (*p2)+7; printf(a=%dn,a); printf(b=%dn,b); 执行该程序后,a的值为 _,b 的值为 _。5. 以下程序调用invert 函数按逆序重新放置a 数组中元素的值。a 数组中的值在main 函数中读入。#include #define N 10 invert(s,i,j) int *s,i,j; int t; if(ij) t=*(s+i); *(s+j)=(s+j);*(s+j)=t; invert(s, _ ,j-1); main() int aN,i; for(i=0;iN;i + + ) scanf(%d,a+ _ ); invert(a,0,N-1); for(i=0;iN;i + + ) printf(%d,ai); printf(n); 五、编程题(本题共2 道小题,共20 分。 )1. 计算 1-1/2+1/3-1/4-.+1/99-1/100 的值,并显示出来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 7 页 - - - - - - - - - 学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料2. 从键盘输入一个5*5 整型数组赋值,找出其中的最小值并显示出来。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 7 页 - - - - - - - - - 学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料江苏省计算机等级考试 - 学年 第学期 c程序设计试卷(参考答案)题号一二三四五六七八九总 分得分一、选择题(本题共20 道小题,共40 分。 )1. C 2. C 3. D 4. D 5. D 6. B 7. D 8. B 9. D 10. C 11. A 12. B 13. C 14. A 15. B 16. C 17. C 18. B 19. C 20. C 二、填空题(每空1 分,共 10 分。 )1. 0 , 数据类型2. 1 ,2 ,4 ,4 3. 函数,main() ,函数4. a+i 或*(a+i) 三、判断题(本题共10 道小题,共10 分。 )1. 错2. 对3. 对4. 错5. 对6. 对7. 错8. 对9. 错10. 对四、程序填空(本题共5 道小题,每题4 分,共 20 分。 )1. (c=getchar() , +65 或 +A 2. I , return 1 或 return (1) 3. struct list * , q 4. 0 , 7 5. i+1 , i 五、编程题(本题共2 道小题,共20 分。 )1. #include stdio.h main() int c,s; float ch; ch=0; for (c=1;c100;c+) if(c%2=0) s=-1; else 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 学习资料收集于网络,仅供学习和参考,如有侵权,请联系网站删除学习资料s=1; ch+=s*(1/(float)c); printf(sum=%f,ch); 2. #include stdio.h main() int i=0,j=0,Max=0; int but55; for(i=0;i5;i+) for(j=0;j5;j+) scanf(%d,&butij); scanf(%d,&butij); Max=but00; for(i=0;i5;i+) for(j=0;jbutij) Max=butij; printf( 最小值是 %d,Max); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 7 页 - - - - - - - - -