C语言试题及答案解析(五)
班级 姓名 学号____________
题号 | 一 | 二 | 三 | 四 | 五 | 总得分 | 评卷人 | 审核人 |
得分 | ||||||||
一、选择题(每题1分,共20分)
1.以下叙述中正确的是( )
A. C程序中注释部分可以出现在程序中任意合适的地方
B. 花括号"{"和"}"只能作为函数体的定界符
C. 构成C程序的基本单位是函数,所有函数名都可以由用户命名
D. 分号是C语句之间的分隔符,不是语句的一部分
2.在一个C语言程序中( )
A. main函数必须出现在所有函数之前
B. main函数可以在任何地方出现
C. main函数必须出现在所有函数之后
D. main函数必须出现在固定位置
A. main函数必须出现在所有函数之前
B. main函数可以在任何地方出现
C. main函数必须出现在所有函数之后
D. main函数必须出现在固定位置
3.判断下面标识符中哪个是C语言中合法的用户定义标识符( )
A. a-b B. #abd C. typedef D. _max
4.为表示关系X≥Y≥Z,应使用C语言表达式( )
A. (X≥Y)&&(Y≥Z) B. X>=Y>=Z
C. (X>=Y)‖(Y>=Z) D. (X>=Y)&&(Y>=Z)
5.设有一分段函数: x=1 a<b且c=d
x=2 a>=b
则下列程序段哪个是正确的( )
A. if(a<b) B. if (a<b) C. if (a>b) 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;}
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.指出下列程序段中那个语句是不正确的( )(int x,y,z[10],*px,*py)
A. px=&x,py=px B. px=x C. py=&y D. px=z
9.在printf语句中按字符串输出的格式是( )
A. “%s” B. “%c” C. “%f” D. “%d”
10.C语言中,运算对象必须是整型的运算符是( )
A. % B. / C. %和/ D. >=
11.以下说法正确的是( )
A.C语言程序总是从第一个定义函数开始执行;
B.在C语言程序中,要使用的函数必须在main()函数中定义;
C.C语言程序总是从main()函数开始执行;
D. C语言程序的main()函数必须在程序的开始部分。
12.已定义以下函数
fun(int *p)
{ return *p; }
该函数的返回值是( )
A. 不确定的值 B. 形参p中存放的值
C. 形参p所指存储单元中的值 D. 形参p的地址值
13.对于scanf(“A=%d”,&a)语句,输入10的正确的输入形式是( )
A. a=10 B. A=10 C. 10 D. =10
14.当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是( )
A.c=b=a; B.(a=c)‖(b=c); C. (a=c)&&(b=c); D. a=c=b;
15.在C语言中,不正确的int类型的常数是( )
A .32768 B. 0 C. 037 D. 0xAF
16.若有以下说明语句(已知int占2个字节,long 占4个字节),则下面printf的输出结果是( )
A. 24 B. 26 C. 20 D. 30
union uarea
{ int x;
long y;};
struct str
{ char s[20];
union uarea z;};
main()
{printf(“%d\n”,sizeof(struct str));}
17.下列关于switch和break语句的讨论中,只有( )是正确的。
A. break语句是switch 语句的一部分
B. 在switch语句中可以根据需要使用或不使用break语句
C. switch语句中必须使用break语句
D. 以上三种说法都不正确。
18.以下不能正确定义二维数组的选项是 ( )
A. int a[2][2]={{1},{2}}; B. int a[2][]={{1,2},{3,4}};
C. int a[2][2]={{1},2,3}; D. int a[][2]={1,2,3,4};
19.执行以下程序后,输出结果是( )
A. –1 B. 1 C. 8 D. 0
main()
{ int y=11;
while(--y)
{ y--;}
printf(“%d\n”,y--);
}
20.main()
{ int a=5,*b,**c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是( )
A. 变量a的地址 B. 变量b中的值
C. 变量a中的值 D. 变量b的地址
二、写出下列程序的执行结果(每题5分,共20分)
1. 2.
3.4.
三、程序改错题(每题5分,共20分)
注:下列每小题有一个错误,出并改正
1. #i nclude "stdio.h"
main()
{ char c,*ch=&c;
while((c=getchar())!=’\n’)
{ if(ch>=’a’&&ch<=’z’)
putchar(*ch-’a’+’A’);
else
putchar(*ch);
}
}
2.求100以内的正整数中为13的倍数的最大值。
main()
{ int i;
for(i=100;i>=0;i--);
if(i%13==0) printf("%d",i);
}
3. 求1+2+3+…+100
main()
{ int i=1;
do
{ sum+=i; i++;
}while(i <=100);
printf("%d",sum);
}
4. 计算 1+1/2+1/3+…+1/10
main()
{ double t=1.0;
int i;
for(i=2;i<=10;i++)
t+=1/i;
printf("t=%f\n",t);
}
四、把以下的程序补充完整(每空2.5分,共10分)
1、1.以下程序中,select 函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= ;
return ; }
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= ;
return ; }
2.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下
1
1 1 其构成规律是:
1 2 1 (1) 第0列元素和主对角线元素均为1
1 3 3 1 (2) 其余元素为其左上方和正上方元素之和
1 4 6 4 1 (3) 数据的个数每行递增1
请将程序补充完整。
#define N 6
void yanghui(int x[N][N])
{ int i,j;
x[0][0]=1;
for(i=1;i<N;i++)
{ x[i][0]=c语言程序总是从什么开始执行 =1;
for(j=1;j<i;j++)
x[i][j]= ;
}
}
1 1 其构成规律是:
1 2 1 (1) 第0列元素和主对角线元素均为1
1 3 3 1 (2) 其余元素为其左上方和正上方元素之和
1 4 6 4 1 (3) 数据的个数每行递增1
请将程序补充完整。
#define N 6
void yanghui(int x[N][N])
{ int i,j;
x[0][0]=1;
for(i=1;i<N;i++)
{ x[i][0]=c语言程序总是从什么开始执行 =1;
for(j=1;j<i;j++)
x[i][j]= ;
}
}
五、编程题(每题10分,共30分)
注:每个编程题都应画出N-S图,N-S图占一半的分数
1.判断某一年是否为闰年。(规则:如果某年份能被4整除而不能被100整除,该年份为闰年;如果某年份能被4整除,且又能被400整除,该年份也为闰年。除此之外,都不是闰年。)
2.写一个函数,在主函数中输入一个数,然后调用该函数判断该数是否是素数,最后输出判断结果。(判断一个数m是否是素数可让该数m被2,3,4…去除,如果m能被其中的任何一个整数整除,则证明它不是素数;相反,如果m不能被2~之中的任何一个整数整除,则证明m为素数。)
3.编写函数,将整型数组中的各元素按相反顺序存放(不使用辅助数组)。要求采用两种方法:
1)函数中采用下标运算;
2)函数中利用指针自加或自减间接访问数组单元。
要求:输入、输出在主函数中完成。main函数和子函数都要写出。
参考答案
一、选择题(每题1分,共20分)
1-5:ABDDD 6-10:BABAA 11-15:CCBCA 16-20:ABBDC
二、写出下列程序的执行结果(每题5分,共20分)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论