江苏省C等级考试()
一、选择题(本题共20道小题,共40分。)
1. (14)    指针s所指字符串的长度为
char *s="\\"Name\\Address\n";
A) 19      B) 15        C) 18        D)说明不合法
2. 若有下面的程序片段:
int a[12]={0}, *p[3], **pp, i;
for(i=0; i<3; i++)
p[i]=&a[i*4];
pp=p;
字符串操作函数puts
则对数组元素的错误引用是
A) pp[0][1]        B) a[10]            C) p[3][1]          D) *(*(p+2)+2)
3. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
A) a<>0              B) !a             
C) a=0            D) a
4. 若已定义:
    int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;
    其中 0≤i≤9, 则对a数组元素不正确的引用上
    A) a[p-a]    B) *(&a[i])        C) p[i]          D) a[10]
5. 以下程序的输出结果是
      main(  )
    {    int    x=10,y=10,I;
          for(i=0;x>8;y=++i)
              printf("%d,%d ",x--,y);
    }
  A) 10 1 9 2  B) 9 8 7 6  C) 10 9 9 0  D) 10 10 9 1
6. 下面程序的输出是
void prtv(int *x)
printf("%d\n", ++*x);}
main()
{ int a=25;
prtv(&a);}
A) 23          B) 24               
C) 25          D) 26
7. 下面能正确进行字符串赋值操作的语句是
A)char s[5]={"ABCDE"};    B)char s[5]={'A'、'B'、'C'、'D'、'E'};
C) char *s;s="ABCDEF";    D)char *s; scanf("%s",s);
8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为
x=y=z=1;t=++x||++y&&++z;
A)不定值    B)2    C)1    D)0
9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是
A)k=*p1+*p2;
B)p2=k;
C)p1=p2;
D)k=*p1 *(*p2);
10. 请读程序:
#include<stdio.h>
#define SUB(X,Y) (X)*Y
main()
{ int a=3, b=4;
printf("%d", SUB(a++, b++));
}
上面程序的输出结果是
A) 12              B) 15               
C) 16                D) 20
11. sizeof(float)是:
A) int
B) float
C) double
D) 不确定
12. 若执行下面的程序时从键盘上输入3和4,则输出是
main()
{ int a,b,s;
scanf("%d %d",&a,&b);
s=a;
if(a<b)s=b;
s=s*s;
printf("%d\n",s);}
A) 14          B) 16        C) 18          D) 20
13. 以下程序的输出结果是
# include <stdio.h>
main()
  { printf("%d\n",NULL);  }
A) 不确定的(因变量无定义)  B)0    C)-1    D)1
14.  请读程序:
#include<stdio.h>
f(char *s)
{ char *p=s;
while( *p!='\0') p++;
return(p-s);
}
main()
{ printf("%d\n",f("ABCDEF"));}
上面程序的输出结果是
A) 3                B) 6                C) 8                D) 0
15. 下面各语句行中,能正确进行赋字符串操作的语句行是
A) char st[4][5]={"ABCDE"};        B) char s[5]={'A','B','C','D','E'};
C) char *s; s="ABCDE";        D) char *s; scanf("%s",s);
16. 若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是
    A) *p=&a;        scanf("%ld",p);
    B) p=(long *)malloc(8);  scanf("%ld",p);
    C) scanf("%ld",p=&a);
    D) scanf("%ld",&a);
17. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是
  A) p+1      B) a+1    C) a++    D) ++p
18. 下面程序的输出是
main()
{ enum team {my,your=4,his,her=his+10};
printf("%d %d %d %d\n",my,your,his,her);}
A) 0 1 2 3      B) 0 4 0 10        C) 0 4 5 15        D) 1 4 5 15
19. 以下程序输出结果是
main( )
{
int m=5;
if(m++>5)printf("%d\n",m);
else printf("%d\n",m--);
}
A)7      B)6
C)5      D)4
20. 以下程序运行后,输出结果是 int d=1;
fun(int p)
{
int d=5;
d+=p++;
printf("%d",d);
}
main()
{
int a=3;
fun(a);
d+=a++;
printf("%d\n",d);
}
A)84    B)99    C)95      D)44
二、填空题(每空1分,共10分。)
1. 程序由主要由__________、_________组成。
2. 在C语言中,不同运算符之间运算次序存在_________的区别,同一运算符之间运算次序存在________的规则。
3. 欲将字符串S1复制到字符串S2中,其语句是 ____________ 。
4. 结构化程序设计中的三种基本结构是_________、__________、___________。
5. 表达式x=x+1表示成增量表达式为___________。
6. 定义int a[]={1,2,3,4,5,6},*p=a;表达式(*++p)++的值是____________。
三、判断题(本题共10道小题,共10分。)
1. 在不得已的情况下(例如提高程序运行效率),才使用goto语句( )
2. 条件表达式可以取代if语句,或者用if语句取代条件表达式( )
3. 在C程序中对用到的所有数据都必须指定其数据类型( )
4. 可以对字符型数组进行整体输入、输出( )
5. 函数中的静态变量在函数每次调用时,都会重新设置初值( )
6. 实参和与其对应的形参共占用一个存储单元( )
7. 一个实型变量的值肯定是精确的( )
8. 在不同函数中可以使用相同名字的变量( )
9. 函数调用:strcat(strcpy(str1,str2),str3)的功能是将串str2连接到串str1之后再将串str1复制到串str3中( )

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