1、江苏省计算机等级考试 - 年 第 学期 c程序设计 试卷( ) 题号 一 二 三 四 五 六 七 八 九 总 分 得分 一、选择题(本题共20道小题,共40分。) 1. 如下程序运行后,输出成果是 main( ) { char *s="abcde"; s+=2; printf("%ld\n",s); } A)cde B)字符c的ASCII码值 C)字符c的地址 D)犯错 2. 下面程序的运行成果是 main() { char ch[7]={"65a
2、b21"}; int i,s =0 for(i=0;ch[i]>='0'&&ch[i]<'9';i+=2) s=10*s+ch[i]-'0' printf("%d\n",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);
3、 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) 有语法错误
4、无输出成果
6. 如下程序运行后,输出成果是
#include
5、体现式_____的值是6。 A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n 8. 当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为 if(a
6、ABC
#include
7、 B) 18 C) 19 D) 20 11. 设已经有定义: char *st="how are you"; 下列程序段中正确的是 A) char a[11], *p; strcpy(p=a+1,&st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st); D) char a[], *p; strcpy(p=&a[1],st+2); 12. 若有阐明:int i,j=7, *p=
8、i;,则与i=j;等价的语句是 A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p; 13. 执行语句:for(i=1;i++<4;)后;变量i的值是 A)3 B)4 C)5 D)不定 14. 两次运行下面的程序,假如从键盘上分别输入6和4,则输出成果是 main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A)
9、 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,%d\n",c,d); } 输出成果是 A)50,30 B)30,50 C)80,-20 D)80,20 16. 设有数组定义: char array [ ]="China"
10、 则数组 array所占的空间为 A) 4个字节 B) 5个字节 C) 6个字节 D) 7个字节 17. 如下程序运行后,输出成果是 fut(int **s, int p[2][3]) { **s=p[1][1]; } main() { int a[2][3]={1,3,5,7,9,11},*p; p=(int *)malloc(sizeof(int)); fut(&p,a); printf("%d\n",*p); } A)1 B)7 C)9 D)11 18. 设j为int型变量,则下面fo
11、r循环语句的执行成果是 for(j=10;j>3;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- 20. 设有如下定义: int (*ptr)*(); 则如下论述中正确的是 A)ptr是指向一维组数的指针变量 B)ptr是指向int型数据的指针变量
12、 C)ptr是指向函数的指针,该函数返回一个int型数据 D)ptr是一个函数名,该函数的返回值是指向int型数据的指针 二、填空题(每空1分,共10分。) 1. C语言数组的下标总是从__________开始,不能够为负数;组成数组各个元素具备相同的__________。 2. 在C语言中(以16位PC机为例),一个char数据在内存中所占字节数为_______,一个int数据在内存中所占字节数为_______,一个long数据在内存中所占字节数为_______,一个float数据在内存中所占字节数为_______。 3. C程序是由________组成的,一个C程序
13、中最少包括________ 。因此,________是C程序的基本单位。 4. 假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为 __________。 三、判断题(本题共10道小题,共10分。) 1. 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存储整型数( ) 2. 全局变量使得函数之间的"耦合性"愈加快密,不利于模块化的要求( ) 3. 若调用一个函数,且此函数中没有return语句,则返回一个不确定的值( ) 4. 用户若需要调用标准库函数,调用前必须重新定义( ) 5. 函数调用:strcat(strcpy
14、str1,str2),str3)的功效是将串str2复制到串str1中后再将串str3连接到串str1之后( ) 6. 在实际编程中,do-while循环完全能够用for循环替代( ) 7. C程序的注释只能是一行( ) 8. 自增运算符(++)或自减运算符(--)只能用于变量,不能用于常量或体现式( ) 9. 在函数内的复合语句中定义的变量在本函数范围内有定义( ) 10. 一个变量在内存中占据一定的存储单元( ) 四、程序填空(本题共5道小题,每题4分,共20分。) 1. 如下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
15、
#include
16、prime用来判断自变量是否为素数。素数是只能被1和自身整除且不小于1的自然数。
#include
17、x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
if(x%i = = 0) return (0); _________ ; }
3. 如下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data 域不放数据,表空的条件是ph->next = = NULL).
#include
18、 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); }
19、
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=%d\n",a);
printf("b=%d\n",b);
}
执行该程序后,a的值为_________,b的值为__________。
5. 如下程序调用invert函数按逆序重新放置a数组中元素的值。a数组中的值在main函数中读入。
#include
20、efine N 10
invert(s,i,j)
int *s,i,j;
{ int t; if(i 21、算1-1/2+1/3-1/4-...+1/99-1/100的值,并显示出来。
2. 从键盘输入一个5*5整型数组赋值,找出其中的最小值并显示出来。
江苏省计算机等级考试
- 年 第 学期 c程序设计 试卷(参考答案)
题号
一
二
三
四
五
六
七
八
九
总 分
得分
一、选择题(本题共20道小题,共40分。)
1. C
2. C
3. D
4. D
5. D
22、
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分。 23、
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;c<100;c++)
{if(c%2==0)
s=-1;
else
s=1;
ch+=s*(1/(float)c);
}
printf("sum=%f",ch);
}
2. #include "stdio.h"
main()
{
int i=0,j=0,Max=0;
int but[5][5];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&but[i][j]);
scanf("%d",&but[i][j]);
Max=but[0][0];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if (Max>but[i][j])
Max=but[i][j];
printf("最小值是%d",Max);
}






