admin 管理员组

文章数量: 1086019


2024年4月22日发(作者:css scoped)

C语言程序设计题考试题库选择填空题完整答案精美篇

※试题说明:

选择题共15道,2分/道:数据类型1个、选择结构2个、循环

结构2个、数组3个、函数3个、预处理1个、指针2个、结构体1

个。基本操作题、程序改错题、程序填空题、程序设计题。考试时间

90分钟!

《顺序选择结构》

1、若有定义:int a, b; 要通过scanf("%d:%d", &a, &b);

使a得到5, b得到6, 则正确的输入形式为:C

A) 5 6 B) 5,6

C) 5:6D) 5;6

2、有如下程序段

int a=14,b=15,x;

char c='A';

x=(a&&b) && (c<'B'); //假或假为假,假且假为假,……,非0

为1,非1为0

执行该程序段后,x的值为D

A) ture B) false

C) 0 D) 1

3、以下不正确的if语句是( B )。

A) if(x>y) printf("%dn",x);

B) if (x=y)&&(x!=0) x+=y; //应该在两个括号外再加一个大括号

C) if(x!=y) scanf("%d",&x); else scanf("%d",&y);

D) if(x<="">

4、以下程序段运行结果是( C )。

int w=3,z=7,x=10;

printf("%dn",x>10?x+100:x-10);

printf("%dn",w++||z++);

printf("%dn",w>z);

printf("%dn",w&&z);

A) 0 B) 1 C) 0 D) 0

1 1 1 1

1 1 0 0

1 1 1 0

5、下面程序的输出是: C

#include

int main( )

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

k=(a++<=0) && (!(b--<=0)); //b此时变成了3

printf("%d %d %dn",k,a,b);

return 0;

}

A) 0 0 3 B) 0 1 2

C) 1 0 3D) 1 1 2

6、下面的程序,当j的取值分别为3,2,1时的输出结果分别是( A )。

#include

int main( )

{ int j,p=10;

scanf("%d",&j);

switch (j)

{ case 1:

case 2: printf("%d ",p++); break;

case 3: printf("%d ",--p);

}

return 0;

}

A) 9 10 10B) 9 8 7

C) 10 10 9 D) 9 9 9

7、下面程序的输出结果是( C )。

#include

int main( )

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

if ((++a<0) && (b--<=0))

printf("%d %dn",a,b);

else

printf("%d %dn",b,a);

return 0;

}

A) -1 1 B) 0 1

C) 1 0 D) 0 0

8、设ch是char型变量,值为'A',则表达式

ch=(ch>='A' && ch<='Z')?ch+32:ch的值是: B

A) Z B) a

C) z D) A

9、putchar(97);的输出结果是: B

A) b B) a

C) 97.0 D) 97

ASCII码:A~Z----65~90 a~z-----97~122 相差32

《循环体》

※1、对于for(表达式1;;表达式3) 可理解为( B )。

A) for(表达式1;0;表达式3)

B) for(表达式1;1;表达式3)

C) for(表达式1;表达式1;表达式3)

D) for(表达式1;表达式3;表达式3)

2、以下程序的输出结果是( C )。

#include

int main( )

{ int count,i=0;

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

{i+=2; printf("%d",i);}

return 0;

}

A) 20 B) 246

C) 2468D) 2222

3、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输

出最高成绩和最低成绩,当输入负数时结束输入。请填空。

#include

int 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=%fnamin=%fn",amax,amin);

return 0;

} D

A) x<=0 B) x>0

x>amin x<=amin

C) x>0 D) x>=0 //因为x<0时结束,所以x>=0

x>amin x

※4、执行以下程序后,输出的结果是( D )。#include

int main( )

{ int y=10;

do {y--;}

while (--y);

printf("%dn",y--);

return 0;

}

A) -1 B) 1

C) 8D) 0

5、有如下程序

#include

int main( )

{ int n=9;

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

return 0;

}

该程序段的输出结果是 B

A) 987 B) 876

C) 8765 D) 9876

6、下面程序的运行结果是( B )。

#include

int main( )

{ int s=0,i=1;

while (s<=10)

{ s=s+i*i;

i++;

}

printf("%d",--i);

return 0;

}

A) 4 B) 3

C) 5 D) 6

※7、以下程序段( C )。

x=-1;

do

{ x=x*x; }

while (!x);

A)是死循环B)循环执行两次

C)循环执行一次D)有语法错误

8、下面程序的功能是:输出100以内能被3整除且个位数为6的

所有整数,请填空。 C

#include

int main( )

{ int i,j;

for(i=0;______; i++) //因为100以内,所以不能超过100,即

i<10或i>=9 { j=i*10+6;

if (_______) continue;

printf("%d ",j);

}

return 0;

}

A) i<=10 B) i<10

j%3!=0 j/3

C) i<10 D) i<=9

j%3!=0 i%3

9、下列程序的输出结果是( B )。

#include

int main( )

{ int i, j, k;

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

{ for(k=1;k<=i;k++) printf(" "); //逐行在原有的基础上再空一格

for(j=0;j<=3;j++) printf("*"); //每行输出4个*号

printf("n");

}

return 0;

}

A) **** B) ****

**** ****

**** ****

C) **** D) ***

**** ***

**** ***

1、执行下面的程序段后,变量k中的值为____A______。

int k=3,s[2];

s[0]=k; k=s[1]*10; //因为s[1]未知,所以k未知!

A) 不定值B) 33

C) 30 D) 10

2、已知数组a的赋值情况如下所示,则执行语句a[2]++; 后,a[1]

和a[2]的值

分别是____B____。

a[0] a[1] a[2] a[3] a[4]

┌──┬──┬──┬──┬──┐

│10 │20 │30 │40 │50 │

└──┴──┴──┴──┴──┘

A) 20和30 B) 20和31 //数组的位置不会变化,++放后面或前

面变的是数值!

C) 21和30 D) 21和31

3、有如下程序

#include

int main( )

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

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

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

printf("%dn",s);

return 0;

}

该程序的输出结果是___B_____。

A) 18 B) 19

C) 20 D) 21

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

#include

int main( )

{ char p1[ ]="abcd", p2[ ]="efgh",str[50]="ABCDEFG";

strcat(str,p2); strcat(str,p1); //先把p2的值赋给str, 再把p1的

值赋给str

str本身也有值!按顺序来就行。

printf("%s",str);

return 0;

}

A) ABCDEFGefghabcd B) ABCDEFGefgh

C) efghabcd D) ABCDEFGabcdefgh

5、下面程序的输出是____C____。

#include

int main( )

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

printf("%dn",a[a[1]*a[2]]);

return 0;

}

A) 3 B) 4

C) 7D) 2

6、若有以下说明:

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

c='a',d,g;

则数值为4的表达式是____D____。

A) a[g-c] B) a[4]

C) a['d'-'c'] D) a['d'-c] //’d’-‘a’=3,相当于a[3]=4

7、以下程序执行后的输出结果是____D____。

#include

#include

int main( )

{ static char s1[50]={"some string *"};

static char s2[ ]={"test"};

printf("%d,",strlen(s2)); //%d后面的小逗号要注意!

strcat(s1,s2);

printf("%sn",s1);

return 0;

}

A) 13,some string *test B) 13 some string *test

C) 4,test D) 4,some string *test

8、下列一组初始化语句中,正确的是___B_____。

A) int a[8]={ }; //没有赋初值!B) int a[9]={0,7,0,4,8};

C) int a[5]={9,5,7,4,0,2}; //超出容量!D) int a[7]=7*6; //没有花

括号!

//为数组中的元素赋初值,称为初始化

9、下列一维数组初始化语句中,正确且与语句

float a[ ]={0,3,8,0,9};等价的是____D____。

A) float a[6]={0,3,8,0,9}; B) float a[4]={0,3,8,0,9};

C) float a[7]={0,3,8,0,9}; D) float a[5]={0,3,8,0,9}; //因为是等价,

所以最好刚刚好!

《指针》

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

void func(int *a,int b[ ])

{

b[0]=*a+6;

}

int main()

{

int a,b[5];a=0;b[0]=3;

func(&a,b);

printf("%dn",b[0]);

return 0;

}

A) 6B) 7

C) 8 D) 9

正确答案是: A

2、下面程序的输出结果是

#include

void prt(int *x., int *y., int *z)

{

printf("%d,%d,%dn",++*x,++*y,*(z++));

}

int a=10,c=20,b=40;

int main()

{

prt(&a,&b,&c);

prt(&a,&b,&c);

return 0;

}

A) 11,42,31 B) 11,41,20

12,22,41 12,42,20

C) 11,21,40 D) 11,41,21

11,21,41, 12,42,22

正确答案是: B

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

int 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("%dn",y);

return 0;

}

A) 17 B) 18

C) 19D) 20

正确答案是: C

4、假设已有如下定义语句

char c[8]="Tianjin",*s=c;

int i;

则下面输出语句中,错误的是

A) printf("%sn",s);B) printf("%sn",*s);

C) for(i=0;i<8;i++) D) for(i=0;i<8;i++)

printf("%c",c[i]); printf("%c",s[i]);

正确答案是: A

5、下面程序的输出结果是

int main()

{

int j,a[]={1,3,5,7,9,11,13,15},*p=a+5;

for(j=3; j>0; j--)

{

switch(j)

{

case 1:

case 2: printf("%d ",*p++); break;

case 3: printf("%d ",*(--p));

}

}

return 0;

}

A) 9 9 11B) 9 11 11

C) 7 7 9 D) 7 9 9

正确答案是: A

6、设有如下定义:

int arr[]={6,7,8,9,10};

int *ptr;

则下列程序的输出结果为

ptr=arr;

*(ptr+2)+=2;

printf("%d,%dn",*ptr,*(ptr+2));

A) 8,10 B) 6,8

C) 7,9 D) 6,10

正确答案是: D

7、变量的指针,其含义是指该变量的_______。

A) 值

B) 地址

C) 名

D) 一个标志

正确答案是: B

8、有变量定义和函数调用语句:int a = 25; print_value(&a);下

面函数的正确输出结果是_______。

void print_value(int *x)

{ printf("%dn", ++*x);}

A) 23

B) 24

C) 25

D) 26

正确答案是: D

9、下面程序段的运行结果是_____。

char *s = "abcde";

s += 2; printf("%d", s);

A) cde

B) 字符'c'

C) 字符'c'的地址

D) 无确定的输出结果

正确答案是: C

《编译预处理》

1、以下for语句构成的循环执行了

#include

#define N 2

#define M N+1

#define NUM (M+1)*M/2

int main()

{

int i,n=0;

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

{

n++;

printf("%d",n);

}

printf("n");

return 0;

}

A) 5次B) 6次


本文标签: 输出 结果 程序 输入 语句