文档库 最新最全的文档下载
当前位置:文档库 › 桂林电子科技大学C语言程序设计习题集及答案

桂林电子科技大学C语言程序设计习题集及答案

一 单项选择题(每题2分,共44分) 1 以下叙述正确的是__C _。

A C 程序基本组成单位是语句

B

C 程序每一行只能写一个语句 C 简单C 语句必须以分号作为结束符

D 注释语句可以嵌套 2 一个C 语言程序是从_B __开始执行的。

A 程序中第一个函数

B 名为main 的函数

C 包含文件(头文件)的第一个函数

D 程序中的第一个语句 3 请选出合法的C 语言赋值语句_B __。

A a=b=58

B i++;

C a=58,b=58

D k=int(a+b); 4 下面标识符中,合法的用户标识符是 _B __。

A 1abc

B include

C a-b-c123

D char 5 以下所列的C 语言整形常量中,正确的是_A __。

A 0x10

B 0976

C 076L

D 01ff 6 C 语言中下列运算符的操作数必须为整型的是_A __。

A %

B ++

C /

D = 7 设a 和b 均为int 型变量,则执行以下语句后的输出为_B __。

int a=20; int b=3; printf("%d\n ",a+=(b%=2));

A 20

B 21

C 0

D 23 8 已知int i;,则执行语句 i=2.6;后,i 的值为_A __。

A 2

B 3

C 2.6

D 不确定 9 以下合法的字符常量为_D __。

A 'ab '

B '\482'

C '\'

D '\xaf ' 10 若y 为int 型变量,则执行以下语句后,y 的值是 _C __。

y=8; y+=y-=y*y;

A 64

B –56

C –112

D –48 11 以下合法的浮点型常量是_D __。

A e-3

B 1.5e+2.4

C 3.14e+2L

D 3.14 e +5

12 设int 数据占用两个字节,float 数据占用四个字节,double 数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为__A _。 printf("%d ",sizeof(a*b)+2/5);

A 4

B 8

C 6

D 7

13 设int 型占2个字节,且int i=-2;,则语句printf("%u ",i);的输出结果为_C __。

A 0

B -2

C 65534

D 65535 14 若x 、y 、z 均为整型常量,且a=100,则执行下列语句后的z 值为_A _。

x=a++; y=--a; z=x+y-a--;

A 100

B 400

C 200

D 300 15 若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n ",u,v,w);,则输出结果是_A __。

A 8,16,10

B 10,10,10

C 8,8,10

D 8,10,10 16 设x 、y 为int 型变量,则执行下列语句后,y 的值是__A _。

x=5; y=x++*x++; y=--y*--y;

A 529

B 2401

C 1209

D 625

17 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式

abc

1

的表达式是__D __。

A 1/a*b*c

B 1/(a*b*c)

C 1/a/b/(float)c

D 1.0/a/b/c

18 若有定义:int a=8,b=5,c;char d='A';,则执行语句c=a/b+d%a+0.5;后c的值为_A__。

A 2

B 2.5

C 3

D 类型不一致,无法计算,编译出错

19 在有以下程序:

main()

{ int i=10,j=1;

i=i+j++;

printf("%d,%d,%d\n",i++,++j,i);

}

执行后输出结果是_C_。

A 12,3,11

B 12,2,11

C 11,3,11

D 12,3,12

20 已知int i=65;,则putchar(i);printf("%d",i);printf("%c",i);的输出结果为_A__。

A A,65,A

B 65,65,A

C A,A,65

D A,A,A

21 已知int y,a,i=1;则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为_A__。

A -1,10

B -2,1.8

C 0,3

D 1,18

22 有以下程序:

main()

{ char a,b,c,d;

a='\'; b='\xbc';

c='\0xab'; d='\023';

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

}

编译时出现错误,以下叙述中正确的是_A__。

A 程序中只有a='\';语句不正确

B b='\xbc';语句不正确

C d='\023';语句不正确

D a='\';和c='\0xab';语句都不正确

二填空题(第1题2分,其余每题3分,共56分)

1 设x为int型变量,请写出描述“x是偶数”的表达式是_x%2==0__。

2 已知scanf("a=%d,b=%d,c=%d",&a,&b,&c);,若从键盘输入2、3、4三个数分别作为变

量a、b、c的值则正确的输入形式是_a=2,b=3,c=4__。

3 设有语句int a=3;,则执行了语句 a+=a-=a*a后,变量a的值是_-12__。

4 以下程序的输出结果是_10 6__。

main()

{ int a=-10,b=-3;

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

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

}

5 以下程序的输出结果是_242__。

main()

{ char c;

c=0362;

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

}

6 以下程序段(n所赋的是八进制数)执行后输出结果是32767_32767__。

int m=32767,n=032767; printf("%d,%o\n",m,n);

7 字符串"\\name\\\101ddress\b\xaf"的长度为:_15__。

8有以下程序段:

int m=0,n=0; char c='a';

scanf("%d%c%d",&m,&c,&n);

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

若从键盘上输入:10A10<回车>,则输出结果是_10,A,10__。

9 以下程序的输出结果是___。

main()

{ printf("%d,%o,%x\n",10,10,10);

printf("%d,%d,%d\n",10,010,0x10);

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

}

10 设a、b、c为整形变量,且a=2、b=3、c=4,则执行完语句 a*=16+(b++)-(++c);之后,

变量a的值为_28_。

11 以下程序的输出结果为__12_。

main()

{ int x=023;

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

}

12 以下程序的结果为___。

main()

{ int a=2,b=3,c,d;

c=(a++)+(a++)+(a++);

d=(++b)+(++b)+(++b);

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

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

}

13 以下程序

main()

{ char ch1,ch2,ch3;

scanf("%c%c%c",&ch1,&ch2,&ch3);

printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);

}

当输入ABC时运行结果为【1】,当输入A BC时运行结果为【2】。

14 若有定义:float x;,以下程序段的输出结果是___。

x=5.16894;

printf("%f\n",(int)(x*1000+0.5)/(float)1000);

15 以下程序的功能是:输入一个小写字母,输出对应的大写字母,将程序补充完整。

main()

{ char ch;

【1】 /* 从键盘输入一个小写字母 */

【2】 /* 将该字母转换为大写字母 */

【3】 /* 输出转换后的结果 */

}

16 当运行以下程序时,在键盘上从第一列开始输入9876543210↙(此处↙代表回车),则

程序的输出结果是___。

main()

{ int a; float b,c;

scanf("%2d%3f%4f",&a,&b,&c);

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

}

17 以下程序的运行结果是___。

main()

{ printf("%12.5f\n",123.1234567);

printf("%12f\n",123.1234567);

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

printf("%12.8s\n","abcdefghij");

}

18 运行以下程序时,如从键盘上输入abcdefg↙,则输出结果是___。

main()

{ char ch1,ch2,ch3;

ch1=getchar(); ch2=getchar(); ch3=getchar();

putchar(ch1); putchar(ch2); putchar(ch3);

putchar('\n');

19 运行以下程序时,如从键盘上输入:a=3,b=5↙35,35.12↙abc↙后,结果是___。

main()

{ int a,b; float x,y; char c1,c2;

scanf("a=%d,b=%d",&a,&b);

scanf("%f,%e",&x,&y);

scanf("%c%c%c",&c1,&c1,&c2);

printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);

}

顺序、选择结构程序设计

一单项选择题(每题2分,共40分)

1 以下程序运行后的输出结果是_B_。

main()

{ int a=0,b=0;

a=10; b=20; printf("a+b=%d\n",a+b);

}

A a+b=10

B a+b=30

C 30

D 出错

2 以下程序运行后的输出结果是_C__。

main()

{ double d=3.2; int x,y;

x=1.2; y=(x+3.8)/5.0;

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

}

A 3

B 3.2

C 0

D 3.07

3 以下程序运行后的输出结果是__C_。

main()

{ double d; float f; long l; int i;

i=f=l=d=20/3;

printf("%d %ld %.1f %.1f\n",i,l,f,d);

}

A 6 6 6.0 6.0

B 6 6 6.7 6.7

C 6 6 6.0 6.7

D 6 6 6.7 6.0

4 以下程序运行后的输出结果是_D__。

main()

{ int a=1,b=2;

a=a+b; b=a-b; a=a-b;

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

}

A 1,2

B 1,1

C 2,2

D 2,1

5 以下程序运行后的输出结果是_A__。

main()

{ int x,y,z;

x=y=2; z=3;

y=x++-1; printf("%d %d ",x,y);

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

y=z---1; printf("%d %d ",z,x);

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

}

A 3 1 4 3

B 3 1 3 3

C 3 1 4 3

D 2 1 3 2

2 4 1 4 2 4 2 2 2 4 1 2 1

3 1 2

6 以下程序运行后的输出结果是_D__。

main()

{ int x,y,z;

x=y=1;

z=x++,y++,++y;

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

}

A 2,3,3

B 2,3,2

C 2,3,1

D 2,2,1

7 以下程序运行后的输出结果是_D__。

main()

{ int x=4,y=7;

x-=y; y+=x;

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

}

A 4 7

B -3 -3

C -3 11

D -3 4

8 以下程序运行后的输出结果是__C_。

main()

{ unsigned short a=65536; int b;

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

}

A 65536

B 0

C 1

D -1

9 以下程序:

#include

main()

{ char c1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar(); c6=getchar();

putchar(c1); putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是__B_。

A 1267

B 1256

C 1278

D 1245

10 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是__C_。

A 'a'&&'b'

B a&&b||c

C a&&b&&c

D a||b&&c

11 在嵌套使用if语句时,C语言规定else总是_C__。

A 和之前与其具有相同缩进位置的if配对

B 和之前与其最近的if配对

C 和之前与其最近不带else的if配对

D 和之前的第一个if配对

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

_D__。

A a<>0

B !a

C a=0

D a

13 以下程序运行后的输出结果是__C_。

main()

{ int a=2,b=-1,c=2;

if(a

if(b<0) c=0;

else c++;

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

}

A 0

B 1

C 2

D 3

14 若k是int型变量,下面的程序段的输出结果是 C 。

k=-3;

if(k<=0) printf("####")

else printf("&&&&");

A ####

B &&&&

C ####&&&&

D 有语法错误,无输出

15 以下程序运行后的输出结果是_A__。

main()

{ int a=0,b=0,c=0,d=0;

if(a=1) b=1;c=2;

else d=3;

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

}

A 0,1,2,0

B 0,0,0,3

C 1,1,2,0

D 编译有错

16 以下程序运行后的输出结果是_A__。

main()

{ int x1=1,x2=0,x3=0;

if(x1=x2+x3) printf("****");

else printf("####");

}

A ****

B 有语法错误

C ####

D 无输出结果

17 当a=1,b=3,c=5,d=4时,执行下面一行程序后,x的值是_B__。

if(a

if(c

else if(a

if(b

else x=3;

else x=6;

else x=7;

A 1

B 2

C 3

D 6

18 下列叙述中正确的是_D__。

A break语句只能用于switch语句

B 在switch语句中必须使用default

C break语句必须与switch语句中的case配对使用

D 在switch语句中不一定使用break语句

19 若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是___。

A switch(x)

B switch((int)x);

{ case 1.0:printf("*\n"); { case 1:printf("*\n");

case 2.0:printf("**\n"); } case 2:printf("**\n"); }

C switch(a+b)

D switch(a+b)

{ case 1:printf("*\n"); { case 1:printf("*\n");

case 2+1:printf("**\n"); } case c:printf("**\n"); } 20 以下程序运行后的输出结果是___。

#include

main()

{ int x=1,y=0,a=0,b=0;

switch(x)

{ case 1:

switch(y)

{ case 0:a++;break;

case 1:b++;break;

}

case 2:a++;b++;break;

}

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

}

A a=2,b=1

B a=1,b=1

C a=1,b=0

D a=2,b=2

二填空题(每题3分,共30分)

1 以下程序运行后的输出结果是___。

#include

main()

{ int i=010 , j=10;

printf("%d,%d\n",++i,j--);

}

2 以下程序运行后的输出结果是___。

#include

main()

{ printf("%d%d%d\n",'\0','\0','\0'); }

3 以下程序运行后的输出结果是___。

main()

{ int i=5,j,k;

j=i+++i+++i++;

k=(++i)+(++i)+(++i);

printf("i=%5d j=%5d\nk=%5d\n",i,j,k);

}

4 下面的程序运行时从键盘上输入9876543210<回车>,程序的输出结果是___。

main()

{ int a; float b,c;

scanf("%2d%2f%2f",&a,&b,&c);

printf("a=%d,b=%.1f,c=%.0f",a,b,c);

}

5 下面程序的输出结果是___。

main()

{ char ch1,ch2;

ch1='A'+'5'-'3'; ch2='A'+'6'-'3';

printf("%d,%c\n",ch1,ch2);

}

6 执行下面的语句:printf("%d\n",(a=3*5,a*4,a+5));,输出是___。

7 以下程序运行后的输出结果是___。

main()

{ int x=10; printf("%d,%d\n",--x,--x); }

8 为表示关系x ≥y ≥z,应使用C 语言表达式___。 9 下面的程序段的输出结果是___。

int x=3;

if((x%2)?printf("**%d ",x):printf("##%d\n ",x)); 10 以下程序运行后的输出结果是___。

main()

{ int m=5; switch(m/2) { case 1: m++; case 2: m+=3;

case 5: m+=6;break; default: m-=7; }

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

三 程序填空(每空5分,共30分)

1 下列程序的输出结果是16.00,请填空。

main()

{ int a=9,b=2;

float x= 【1】 ,y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n ",z); }

2 完成以下程序,输入变量a,b,c 的值,判断a,b,c 能否组成三角形,计算三角形面积。

(公式为: )。

#include

【2】 ; main()

{ int a,b,c; 【3】

printf("please input the value of a,b,c ") scanf("%d %d %d ", 【4】 ); if( 【5】 ) { 【6】

s=sqrt(p*(p-a)*(p-b)*(p-c));

printf("Yes,this is a triangle!\n the area is %.2f.\n ",s); }

else printf("No,this is not a triangle!\n ") }

循环结构程序设计

一 单项选择题(每题2分,共40分)

2

c

b a p )

c p )(b p )(a p (p s ++=---=其中

1 以下程序中,while循环的循环次数是___。

main()

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(i==5) break;

i++;

}

……

}

A 1

B 10

C 6

D 死循环

2 以下程序的执行结果是___。

main()

{ int n=9;

while(n>6) { n--; printf("%d",n); }

}

该程序的输出结果是

A 987

B 876

C 8765

D 9876

3 以下程序段,while循环执行的次数是___。

int k=0;

while(k=1) k++;

A 无限次

B 有语法错

C 一次也不执行

D 执行1次

4 以下叙述正确的是___。

A do-while语句构成的循环不能用其它语句构成的循环来代替

B do-while语句构成的循环只能用break语句退出

C 用do-while语句构成的循环,在while后的表达式为非零时结束循环

D 用do-while语句构成的循环,在while后的表达式为零时结束循环

5 以下程序的执行结果是___。

main()

{ int a,y;

a=10; y=0;

do{ a+=2; y+=a;

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

if(y>20) break;

}while(a=14);

}

A a=12 y=12

B a=12 y=12

a=14 y=16 a=16 y=28

a=16 y=20

a=18 y=24

C a=12 y=12

D a=12 y=12

a=14 y=26

a=14 y=44

6 以下程序的执行结果是___。

main()

{ int x=23;

do{ printf("%d",x--); }while(!x);

}

A 321

B 23

C 不输出任何内容

D 陷入死循环

7 有以下程序段,输出结果是___。

int x=3;

do { printf("%d ",x-=2); }while(!(--x));

A 1

B 3 0

C 1 -2

D 死循环

8 以下程序的输出结果是___。

main()

{ int a=0,i;

for(i=1;i<5;i++)

{ switch(i)

{ case 0: case 3: a+=2;

case 1: case 2: a+=3;

default:a+=5;

}

}

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

}

A 31

B 13

C 10

D 20

9 以下程序的输出结果是___。

main()

{ int i=0,a=0;

while(i<20)

{ for(; ;)

if((i%10)==0) break;

else i--;

i+=11; a+=i;

}

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

}

A 21

B 32

C 33

D 11

10 以下循环体的执行次数是___。

main()

{ int i,j;

for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d \n",i);

}

A 3

B 2

C 1

D 0

11 下列程序的输出结果是___。

main()

{ int i,j,m=0,n=0;

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

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

if(j>=i) m=1;n++;

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

}

A 4

B 2

C 1

D 0

12 下列程序的输出结果是___。

main()

{ int i,sum;

for(i=1;i<=3;sum++) sum+=i;

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

}

A 6

B 3

C 死循环

D 0

13 以下程序执行后sum的值是___。

main()

{ int i,sum;

for(i=1;i<6;i++) sum+=i;

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

}

A 15

B 14

C 不确定

D 0

14以下程序执行后的输出结果是___。

main()

{ int i,n=0;

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

{ do{ if(i%3) continue; n++; } while(!i);

n++;

}

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

}

A n=5

B n=2

C n=3

D n=4

15 下列语句中,能正确输出26个英文字母的是___。

A for(a='a';a<='z';printf("%c",++a));

B for(a='a';a<='z';) printf("%c",a);

C for(a='a';a<='z';printf("%c",a++));

D for(a='a';a<='z';printf("%c",a));

16 以下程序执行后的输出结果是___。

main()

{ int x=1,y=1;

while(y<=5)

{ if(x>=10) break;

if(x%2==0)

{ x+=5; continue; }

x-=3; y++;

}

printf("%d,%d",x,y);

}

A 6,6

B 7,6

C 10,3

D 7,3

17 以下程序执行后的输出结果是___。

main()

{ int a=5;

while(!(a-->5))

{ switch(a)

{ case 1:a++;

case 4:a+=4;

case 5:a+=5;break;

default:a-=5;

}

}

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

}

A 12

B 7

C 5

D 13

18 对于下面的for循环语句,可以断定它执行___次循环。

for(x=0,y=0;(y!=67)&&(x<5);x++) printf("----");

A无限 B 不定 C 5次 D 4次19 在执行以下程序时,如果从键盘上输入:ABCdef,则输出结果为___。

#include "stdio.h"

main()

{ char ch;

while((ch=getchar())!='\n')

{ if(ch>='A' && ch<='Z') ch=ch+32;

else if(ch>='a' && ch<='z') ch=ch-32;

printf("%c",ch);

}

printf("\n");

}

A ABCdef

B abcDEF

C abc

D DEF

20 当执行以下程序时,___。

int a=1;

do{ a=a*a; }while(!a);

A 循环体将执行1次

B 循环体将执行2次

C 循环体将执行无限次

D 系统将提示有语法错误

二填空题(每空3分,共33分)

1 若输入字符串:abcde<回车>,则以下while循环体将执行___次。

while((ch=getchar())=='e') printf("*");

2 以下while循环执行的次数是___。

k=0; while(k=10) k=k+1;

3 下列程序的输出结果是___。

main()

{ int x=0,y=5,z=3;

while(z-->0 && ++x<5) y=y-1;

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

}

4 下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。

main()

{ int a,b,c,i;

a=c=0;

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

{ a+=i;

_ 【1】 ; c+=b;

}

printf("偶数之和=%d\n 奇数之和=%d\n ",a, 【2】 );

}

5 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

main()

{ int i,j;

for(i=0; _ 【1】 ; i++) { j=i*10+6;

if(_ 【2】 )continue; printf("%d\n ",j); } }

6 以下程序的输出结果是___。

main()

{ int s,i;

for(s=0,i=1;i<3;i++,s+=i); printf("%d\n ",s); }

7 要使以下程序段输出10个整数,请填入一个整数。

for(i=0;i<=___;printf("%d \n ",i+=2)) ; 8 程序的功能是根据以下近似公式求π值:

请填空完成求π的功能。

#include "math.h " main()

{ int n=30000; double s=0.0; long i; for(i=1;i<=n;i++) s=s+_ 【1】 ; printf("pi=%f\n ",_ 【2】 ); }

三 程序填空题(每空3分,共27分)

1 下列程序是求 的值。

#include "stdio.h " main()

{ int i=2; float sum=1;; while( 【1】 )

{ sum=sum+1.0/i; 【2】 ; } printf("sum=%f\n ", 【3】 ); }

2 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为负数时,结束输入。 main()

50

141211++++ n n ?++?+?+=1331221162 π

{ float x,max,min;

scanf("%f",&x);

max=min= 【1】 ;

do{ if(x>max) max=x;

if(x

scanf("%f",&x);

} while( 【3】 );

printf("%f,%f",max,min);

}

3 下面的程序用来求出所有的水仙花数。所谓水仙花数是指一个3位数,它的各位数字的

立方和恰好等于它本身。

main()

{ int n,i,j,k;

for(n=100; 【1】 ) /* 判断3位数n是否是水仙花数 */

{ i=n/100; /* i是n的百位上的数字 */ j= 【2】 ; /* j是n的十位上的数字 */

k=n%10; /* k是n的个位上的数字 */

if( 【3】 ) printf("%d\n",n);

}

}

数组

一单项选择题(每题2分,共40分)

1 以下对一维整型数组a的正确定义(说明)的是___。

A int a(10); B)int n=10,a[n]; C int n; D #define SIZE 10

scanf("%d",&n); int a[SIZE];

int a[n];

2 若有定义(说明)int a[10];,则对数组a的元素正确引用的是___。

A a[10]

B a[3.5]

C a(5)

D a[10-10]

3 执行下面程序段后,变量k 的值是___。

int k=3,s[2];

s[0]=k; k=s[1]*10;

A 不定值

B 33

C 30

D 10

4 以下程序的输出结果是___。

main()

{ int i,k,a[10],p[3];

k=5;

for(i=0;i<10;i++) a[i]=i;

for(i=0;i<3;i++) p[i]=a[i*(i+1)];

for(i=0;i<3;i++) k+=p[i]*2;

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

}

A 20

B 21

C 22

D 23

5 以下对一维整型数组a初始化的语句中正确的是___。

A int a[10]=(0,0,0,0,0);

B int a[10]=();

C int x=2,a[10]={10*x};

D int a[10]={0};

6 若有以下说明,则数值为4的表达式是___。

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

char c='a',d,g;

A a[g-c]

B a[4]

C a['d'-'c']

D a['d'-c]

7 下列程序运行后的输出结果是___。

#define MAX 10

void main()

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

sum=1;

for(i=0;i

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

}

A sum=55

B sum=-54

C sum=-55

D sum=54

8 以下程序的输出结果是___。

main()

{ int y=18,i=0,j,a[8];

do{ a[i]=y%2; i++; y=y/2; }while(y>=1);

for(j=i-1;j>0;j--) printf("%d",a[j]);

}

A 1000

B 1001

C 1010

D 1100

9 以下对二维数组a的正确定义(说明)的是___。

A int a[3][];

B float a(3,4); Cdouble a[1][4]; D float a(3)(4);

10 若有定义(说明)int a[3][4];,则对数组a的元素的引用非法的是___。

A a[2][2*1]

B a[1][3]

C a[4-2][0]

D a[0][4]

11 以下不能对二维数组a进行正确初始化的语句是___。

A int a[2][3]={0};

B int a[][3]={{1,2},{0}};

C int a[2][3]={{1,2},{3,4},{5,6}};

D int a[][3]={1,2,3,4,5,6};

12 下列数组定义语句中,正确的是___。

A char a[][]={'a','b','c','d','e','f'};

B char a[2][3]='a','b';

C char a[][3]={'a','b','c','d','e','f'};

D char a[][]={{'a','b','c','d','e','f'}};

13 下列程序运行后的输出结果是___。

main()

{ int a[4][4],i,j,k;

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

for(j=0;j<4;j++) a[i][j]=i-j;

for(i=1;i<4;i++)

for(j=i+1;j<4;j++)

{ k=a[i][j]; a[i][j]=a[j][i]; a[j][i]=k; }

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

{ printf("\n");

for(j=0;j<4;j++) printf("%4d",a[i][j]);

}

}

A 0 -1 -2 -3

B 0 1 2 3

1 0 -1 -

2 -1 0 1 2

2 1 0 -1 -2 -1 0 1

3 2 1 0 -3 -2 -1 0

C 0 -1 -2 -3

D 0 1 2 3

1 0 1

2 -1 0 -1 -2

2 -1 0 1 -2 1 0 -2

3 -2 -1 0 -3 2 1 0

14以下程序的输出结果是___。

main()

{ int i,a[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);

}

A 0650

B 1470

C 5430

D 输出值不定

15有以下程序:

main()

{ int x[3][2]={0},i;

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

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

}

若运行时输入:2 4 6<回车>,则输出结果是___。

A 2 0 0

B 2 0 4

C 2 4 0

D 2 4 6

16 下列描述不正确的是___。

A 字符型数组中可以存放字符串

B 可以对字符型数组进行整体输入和输出

C 可以对整型数组进行整体输入和输出

D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

17 对于以下定义,叙述正确的是___。

char x[]="a bcdef";

char x[]={'a','b' 'c','d','e','f'};

A 数组x和数组y等价

B 数组x和数组y的长度相等

C 数组x的长度大于数组y的长度

D 数组x的长度小于数组y的长度

18 以下选项中,不能正确赋值的是___。

A char s1[10];s1="Ctest";

B char s2[]={'C','t','e','s','t'};

C char s3[20]="Ctest";

D char s4[30];strcpy(s4,"Ctest");

19 若有定义和语句:char s=[10];s="abcd";printf("%s\n",s);,则输出结果是___。

(以下□表示空格)

A abcd

B a

C abcd□□□□□

D 编译不通过

20 当执行下面程序时,如果输入ABC,则输出结果是___。

#include

#include

main()

{ char ss[10]="12345";

gets(ss); strcat(ss, "6789");

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

}

A ABC6789

B ABC67

C 12345ABC6

D ABC45678

二填空题(每空3分,共24分)

1 若int类型变量占两个字节,定义int x[10]={0,2,4};,则数组x在内存中所占的字节

数是___。

2 若有定义char a[]="\\141\141abc\t";,则数组a在内存中所占的字节数是___。

3 下列程序的输出结果是___。

main()

{ int i,a[10];

for(i=9;i>=0;i--) a[i]=10-i;

printf("%d%d%d\n",a[2],a[5],a[8]);

}

4 下列程序运行的结果是___。

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

}

5 有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现

字符串复制。(注意:不得使用逗号表达式)

while(s[i])

{ d[j]=___; j++ ; }

d[j]=0;

6 下面程序运行的结果是___。

main()

{ char s[]="abcdef";

s[3]='\0';

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

}

7 以下程序的输出结果是___。

main()

{ char ch[3][5]={"AAAA","BBB","CC"};

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

}

8 以下程序的输出结果是___。

main()

{ char ch[]="abc",x[3][4]; int i;

for(i=0;i<3;i++) strcpy(x[i],ch);

for(i=0;i<3;i++) printf("%s",&x[i][i]);

printf("\n");

}

三程序填空题(每空3分,共36分)

1 以下程序的功能是:从键盘上输入若干个学生的成绩(用输入负数结束输入),统计出平均成绩,并输出低于平均分的学生成绩。请填空。

#include "stdio.h"

main()

{ int n=0,i; float x[1000],sum=0.0,ave,a;

printf("Enter mark:\n"); scanf("%f",&a);

while(a>=0.0 && n<1000)

{ sum+= 【1】 ; x[n]= 【2】 ;

n++; scanf("%f",&a);

}

ave= 【3】 ;

print("Output:\n");

printf("ave=%f\n",ave);

for(i=0;i

}

2 以下程序的功能是求出矩阵x的上三角元素之积。其中矩阵x的行列数和元素的值均由键盘输入。请填空。

#define M 10

main()

{ int x[M][M]; int n,i,j; long s=1;

printf("Enter a integer(<=10):\n");

scanf("%d",&n);

printf("Enter %d data on each line for the array x\n",n);

for( 【1】 )

for(j=0;j

for(i=0;i

for( 【2】 ) 【3】 ;

printf("%ld",s);

}

3 以下程序,数组a中存放一个递增数列。输入一个整数,并将它插入到数组a中,使之仍为一个递增数列。请填空。

main()

{ int a[ 【1】 ]={1,10,20,30,40,50,60,70,80,90},x,i,p;

scanf("%d",&x);

for(i=0,p=10;i<10;i++)

if(x

for(i=9;i>=p;i--) a[i+1]=a[i];

【3】 ;

for(i=0;i<=10;i++) printf("%5d\n",a[i]);

printf("\n");

}

4 以下程序的功能是:将t数组的内容连接到s数组内容的后面,使s数组保存连接后的

新字符串。

main()

{ static char s[30]="abcdefg",t[]="abcd"; int i=0,j=0;

while(s[i]!='\0') 【1】 ;

while(t[j]!='\0') { s[i+j]=t[j]; j++; }

【2】 ;

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

}

函数

一单项选择题(每题2分,共40分)

1 以下正确的函数定义是___。

A double fun(int x,int y)

B double fun(int x,y)

{ z=x+y; return z; } { int z; return z; }

C fun (x,y)

D double fun(int x,int y)

{ int x,y; double z ; { double z;

z=x+y; return z; } return z; }

2 以下正确的说法是___。

A 实参和与其对应的形参各占用独立的存储单元

B 实参和与其对应的形参共占用一个存储单元

C 有当实参和与其对应的形参同名时才共占用相同的存储单元

D 形参是虚拟的,不占用存储单元

3 若调用一个函数,且此函数中没有return语句,则正确的说法是___。

A 该函数没有返回值

B 该函数返回若干个系统默认值

C 能返回一个用户所希望的函数值

D 返回一个不确定的值

4 以下正确的描述是___。

A 函数的定义可以嵌套,但函数的调用不可以嵌套

B 函数的定义不可以嵌套,但函数的调用可以嵌套

C 函数的定义和函数的调用均不可以嵌套

D 函数的定义和函数的调用均可以嵌套

5 若用数组名作为函数调用的实参,传递给形参的是___。

A 数组的首地址

B 数组中第一个元素的值

C 数组中的全部元素的值

D 数组元素的个数

6 以下不正确的说法是___。

A 在不同函数中可以使用相同名字的变量

B 形式参数是局部变量

C 在函数内定义的变量只在本函数范围内有定义

D 在函数内的复合语句中定义的变量在本函数范围内有定义

7 已知一个函数的定义如下:

double fun(int x, double y) { …… }

则该函数正确的函数原型声明为___。

A double fun(int x,double y)

B fun(int x,double y)

C double fun(int,double);

D fun(x,y);

8 关于函数声明,以下不正确的说法是___。

A 如果函数定义出现在函数调用之前,可以不必加函数原型声明

相关文档
相关文档 最新文档