江苏省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]={"65ab21"};
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);
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<stdio.h>
#define PT 5.5
#define S(x) PT*x*x
main( )
{
int a=1,b=2;
printf("%4.1f\n",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 a[3]={5,&a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
则表达式_____的值是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<b)
if(c<d)x=1;
else if(a<c)
if(b<d)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<stdio.h>
#include<string.h>
main()
{ char *p1="abc",*p2="ABC",str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n", str);}
10. 执行以下程序后,y的值是
main ( )
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)  y + = * (p + x);
printf("%d\n",y);    }
A) 17          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=&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) 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"; 则数组 array所占的空间为
    A) 4个字节      B) 5个字节        C) 6个字节      D) 7个字节
17. 以下程序运行后,输出结果是
fut(int **s, int p[2][3])
{
**s=p[1][1];scanf输入整型数组
}
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型变量,则下面for循环语句的执行结果是
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-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. 假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为  __________。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。