admin 管理员组

文章数量: 1184232


2024年4月26日发(作者:cathy的寓意)

C语言试题及答案解析(

三)

班级 姓名 学号____________

题号

得分

一. 选择题(20分):

1. 判断下面标识符中哪个是C语言中合法的用户定义标识符:

A. a-b B. #abd C. typedef D. _max

2. ‘b’在内存中占 个字节,“B”在内存中占 个字节。

A. 1 B. 2 C. 3 D. 4

总得分

评卷人

审核人

3. 下列表达式的值哪些不等于0?

A. 2>>1 B. ~a&a C. 1>5 D. a^a

4. 设有一分段函数: x=1 a

x=2 a>=b

则下列程序段哪个是正确的?

A. if(ab) D. if (a>=b)

If(c==d) {if (c==d) if (c==d) x=2;

x=1; x=1; x=1; else

else x=2; else x=2;} else x=2; {if(c==d) x=1;}

5. 下列关于switch和break语句的讨论中,只有 是正确的。

A. break语句是switch 语句的一部分

B.在switch语句中可以根据需要使用或不使用break语句

C. switch语句中必须使用break语句

D.以上三种说法都不正确。

6. 若有两条语句:static char x[]=”abcde”;

static char y[]={‘a’,’b’,’c’,’d’,’e’};

则下列说法中正确的是: 。

A. x数组和y数组长度相同 B. x数组长度大于y数组长度

C. x数组长度小于y数组长度 D. 以上三种说法均错误。

7. 返回值为void的函数,其含义是:

A. 调用函数之后,被调用的函数没有返回值;

B. 调用函数之后,被调用的函数不返回

C. 调用函数之后,被调用的函数返回值为任意类型

D. 以上三种说法均不正确。

8. C语言中函数的隐含存储类别是 ,在一个C源程序文件中,若要定义一个只允

许在本源文件中所有函数使用的全局变量,则变量需要使用的存储类别是 。

A. auto B. static C. register D. extern

9. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++) s=s+1;

则与上述程序段功能等价的赋值语句是

A. s=a+b; B. s=a+c; C. s=s+c; D. s=b+c;

10. 以下叙述中不正确的是

A. 在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值。

B. 在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容。

C. 在C中,外部变量的隐含类别是自动存储类别。

D. 在C中,函数形参可以说明为register变量。

11. 对于scanf(“A=%d”,&a)语句,输入10的正确的输入形式是:

A. a=10 B. A=10 C. 10 D. =10

12. C语言中,运算对象必须是整型的运算符是 。

A. % B. / C. %和/ D. >=

13. 为表示关系x≥y≥z,应使用C语言表达式 。

A. (x≥y)&&(y≥z) B. (x>=y) and(y>=z) C. (x>=y)&&(y>=z) D. (x>=y)‖(y>=z)

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

是 。

A. a<>0 B. !a C. a=0 D. a

15. 以下说法正确的是 。

A. C语言程序总是从第一个定义函数开始执行;

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

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

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

16.下列描述中不正确的是

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

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

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

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

17. C语言中用于结构化程序设计的三种基本结构是

A. 顺序结构、选择结构、循环结构

B. if、switch、break

C. for、while、do-while

D. if、for、continue

18.若已定义x和y为double类型,则表达式(x=1,y=x+3/2)的值是

A. 1 B. 2 C. 2.0 D. 2.5

19.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后三位,并将

第四位四舍五入的是

A. x=(int)(x*1000+0.5)/1000.0; B. x=(x*1000+0.5)/1000.0;

C. x=x*1000+0.5/1000.0; D. x=(x/1000+0.5)*1000.0;

20. 执行以下程序后,输出结果是

A. –1 B. 1 C. 8 D. 0

main()

{ int y=11;

while(--y)

{ y--;}

printf(“%dn”,y--);

}

二. 写出下列程序的执行结果(20分):

1.执行下列程序后,变量I的正确结果是

int I=10;

switch (i){

case 9: i+=1;

case 10: i+=1;

case 11: i+=1;

default: I+=1;}

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

main()

{ int a[4][4]={{3,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,12,-33,0}};

int i,j,s=0;

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

{ for(j=0;j<4;j++)

{ if(a[i][j]<0) continue;

if(a[i][j]= =0) break;

s+=a[i][j];

}

}

printf("%dn",s);

}

3. 下面程序的输出结果是

aaa(char *s)

{ char *t=s;

while(*t) t++;

return(t-s);

}

main()

{ char b[]={“Hello!”};

printf(“%dn”,aaa(b));}

4. main()

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

p=a;

printf(“%d”,*p); printf(“%dn”,*(p+8));}

输出结果是 。

三. 程序改错:找出下列程序存在的错误,并进行改正。(20分)

1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。

#include

void main(){

int r;

float s;

scanf("%d",r);

s=PI*r^2;

printf("s=%fn",s);

}

2、以下程序用于计算一个一维数组各元素平方根的和。

#include

#include

void main(){

int a[10],i;

float sum;

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

i=0;

while (!(i=9)){

sum+=sqrt(a[i]);

i++;

}

}

3. 下面的函数是用于求一个3*5的二位数组m的最大元素值。

Max_value(m[3][5])

{ int i,j,max;

scanf(“%d”,&a[i]);


本文标签: 函数 程序 数组