江苏省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小时内删除。
发表评论