课外学习>课外练习题>复习题5

1、下述对C语言字符数组的描术中错误的是

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符"="对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比较

 

2、为表示关系xyz,应使用C语言表达式

A)(x>=y)&&(y>=z) B(x>=y)AND(y>=z)

C)(x>=y>=z) D)(x>=y)&(y>=z)

 

3、设有如下定义:

int x=10,y=3,z;

则语句

printf("%d\n",z=(x%y,x/y));

的输出结果是

A)1   B)0

C)4   D)3

 

4、以下程序的输出结果是

main()

{ int x=10,y=10;

printf("%d %d\n",x--,--y);

}

A)10 10 B)9 9

C)9 10 D)10 9

 

5、定义如下变量和数组:

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是

for(i=0;i<3;i++) printf("%d",x[i][2-i]);

A)1 5 9 B)1 4 7

C)3 5 7 D)3 6 9

 

6、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为

A)a<>0   B)!a

C)a=0    D)a

 

7、阅读程序:

#include

main()

{int a[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n",p+9);

}

该程序有两个printf 语句, 如果第一个printf 语句输出的是194(十六进制), 则第二个printf语句的输出结果是

A)203 B)204

C)1a4 D)1a6

 

8、设有如下函数定义:

int f(char *s)

{ char *p=s;

while(*p!='\0') p++;

return(p-s);

}

如果在主程序中用下面的语句调用上述函数,则输出结果为

printf("%d\n",f("goodbey!"));

A)3 B)6

C)8 D)0

 

9、以下说法中正确的是

A)C语言程序总是从第一个的函数开始执行

B)C语言程序中,要调用的函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

 

10、执行下面的程序后,a的值为

main()

{ int a,b;

for (a=1,b=1;a<=100;a++)

{ if(b>=20)break;

if(b%3==1)

{b+=3;

continue;

}

b-=5;

}

}

A)7 B)8

C)9 D)10

 

11、以下程序段的输出结果是

int x=3;

do

{ printf("%3d",x-=2);}

while(!(--x));

A)1 B)3 0

C)1 -2 D)死循环

 

12、定义如下变量:

int n=10;

则下列循环的输出结果是

while(n>7)

{ n--;

printf("%d\n",n);

}

A)10    B)9   C)10      D)9

9       8      9        8

8       7      8        7

7       6

 

13、两次运行下面的程序,如果从键盘上分别输入64,则输出结果是

main( )

{ int x;

scanf("%d",&x);

if(x + + 5)printf("%d",x);

else printf("%d\n",x - -);

}

A)75 B)63 C)74 D)64

 

14、设有如下定义:

char *aa[2]={"abcd","ABCD"};

则以下就法中正确的是

A)aa数组元素的值分别是"abcd"ABCD"

B)aa是指针变量,它指向含有两个数组元素的字符型一维数组

C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D)aa数组的两个元素中各自存放了字符'a''A'的地址

 

15、以下程序的输出结果是

main( )

{ int a=-1,b=4,k;

k=(++a0&&!(b - -=0;

printf("%d%d%d\n",k,ab);

}

A)104 B)103 C)003 D)004

 

16、设有以下定义:

int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int (*prt)[3]=a,*p=a[0]

则下列能够正确表示数组元素a[1][2]的表达式是

A)*((*prt+1)[2]) B)*(*(p+5))

C)(*prt+1)+2 D)*(*(a+1)+2)

 

17、下列程序的输出结果是

main( )

{ char*p1,*p2,str[50]="xyz";

p1="abcd";

p2="ABCD";

strcpy(str+2,strcat(p1+2,p2+1));

printf"%s",str);

}

A)xyabcAB B)abcABz

C)ABabcz D)xycdBCD

 

18、执行下面的程序后,a的值是

#define SQR(X) X*X

main( )

{ int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

printf("%d\n",a);

}

A)10 B)1 C)9 D)0

 

19、下列程序执行后输出的结果是

#include stdio.h

f(int a)

{ int b=0;

static c=3

a=c++,b++;

return(a);

}

main( )

{ int a=2,i,k;

for(i=0;i2;i=++)

k=f(a++);

printf("%d\n",k);

}

A)3 B)0 C)5 D)4

 

20、下列程序的输出结果是

main( )

{ int a[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

printf("%d\n",**k);

}

A)4 4 B)2 2 C)2 4 D)4 6

 

21、阅读下列程序:

main( )

{ int n[3],i,j,k;

for(i=0;i3;i++)

n[i]=0;

k=2;

for (i=0;ik;i++)

for (j=0;jk;j++)

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

下述程序运行后输出结果是

A)2 B)1 C)0 D)3

 

22、字符'0'ASCII码的十进制数为48,则以下程序的输出结果是

#includestdio.h

main( )

{ union

{ int i[2];

long k;

char c[4];}r,*s=&r;

s->i[0]=0x39;

s->i[1]=0x38;

printf("%c\n",s->c[0])

}

A)39 B)9 C)38 D)8

 

23、设有以下定义:

typedef union

{ long i;int k[5];char c;}DATE;

struct date

{ int cat;DATE cow;double dog;}too;

DATE max;

则下列语句的执行结果是

printf("%d",sizeof(struct date)+sizeof(max));

A)25 B)30 C)18 D)8

 

24、执行以下程序后,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

 

25、下列程序执行后输出的结果是

int d=1;

fun (int q)

{ int d=5;

d + =p + +;

printf("%d".d);

}

main( )

{ int a=3;

fun(a);

d + = a + +;

printf("%d\n",d);

}

A)8 4 B)9 6 C)9 4 D)8 5

 

26、下列程序的输出结果是

main( )

{ char ch[2][5]={"6934,"8254"},*p[2];

int i,j,s=0;

for(i=0;i<2;i++)

p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>'0'&&p[i][j]<='9';j+=2)

s=10*s+p[i][j]-'0';

printf("%d\n",s);

A)6385 B)69825 C)63825 D)693825

 

27、以下程序的输出结果是

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);

primtf("%d\n",*p);

}

A)1 B)7 C)9 D)11

 

28、以下程序的输出结果是

#include"ctype.h"

space (char *str)

{ int i,t;char ts[81];

for(i=0,t=0;str[i]!='\0';i+=2)

if(! isspace(*str+i)&&(*(str+i)!='a'))

ts[t++]=toupper(str[i]);

ts[t]='\0';

strcpy(str,ts);

}

mian( )

{ char s[81]={"a b c d e f g"};

space(s);

puts(s);

}

A)abcdeg B)bcde C)ABCDE D)BCDEFG

 

29、下列程序的输出结果是(        .

int ast(int x,int y,int * cp,int * dp)

{ *cp=x+++y;

*dp=x-y--;

}

main()

{ int a,b,c,d;

a=4;b=3;

ast(a,b,&c,&d);

printf("%d %d %d %d\n",a,b,c,d);

}

 

30、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入.请填空.

main()

{ float x,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while(           )

{ if(x>amax)amax=x;

if(           )amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

 

31、以下程序的功能是:从键盘输入若干字符写入到指定文件中,当输入字符“#”时结束。

main()

{ FILE * fp;

char ch,fname[10];

printf("lnput the name of file\n");

gets(fname);

if((fp=           )==NULL)

{ printf("Cannot open\n"); exit(0);}

printf("Enter data\n");

while(            )

fputc(ch,fp);

fclose(fp);

}

 

32、以下函数creat用来建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾.单向链表的头指针作为函数值返回.请填空:

#include

struct list

{ char data;

struct list * next;

};

struct list *creat()

{ struct list * h,* p,* q;

char ch;

h=          malloc(sizeof(struct list));

p=q=h;

ch=getchar();

while(ch!='?')

{ p=          malloc(sizeof(struct list));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

            ;

            ;

}