一、单项选择题(10小题,每小题2分,共20分)
- 下列关于C语言注释的叙述中错误的是( )。
A.以“/”开头并以“/”结尾的字符串为C语言的注释部分
B.注释可出现在程序中任何位置,用来向用户提示或解释程序的意义
C.程序编译时,不对注释作任何处理
D.程序编译时,需要对注释进行处理
2、若有说明语句:char c=’\95’;,则变量c包含( )个字符。
A.1 B.2
C.3 D.语法错误
3、C语言中规定,if语句的嵌套结构中,else总是( )配对。
A.与最近的if 与第一个if B.与第一个if
C.与按缩进位置相同的if D.与最近的且尚未配对的if
4、运行下面程序,输出结果是( )。
main()
{ int i=10,j=0;
do
{ j=j+i;
i–;}while(i>5);
printf(“%d\n”,j);}
A.45 B.40
C.34 D.55
5、若有以下数组说明,则数值最小的和最大的元素下标分别是( )。
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
A.1,12 B.0,11 C.1,11 D.0,12
6、若有说明:int a[][4]={0,0};则下面不正确的叙述是( )。
A.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 B.二维数组a的第一维大小为1
C.因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a的行数为1
D.数组a的每个元素都可得到初值0
7、以下正确的函数形式是()。
A.double fun(int x,int y){z=x+y; return z;}
B. fun(int x, y){int z; return z;}
C.fun( x, y){int x,y; double z;z=x+y; return z;}
D.double fun(int x,int y){double z;z=x+y; return z;}
8、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是()。
A.函数调用可以作为独立的语句存在
B.函数调用可以作为一个函数的实参
C.函数调用可以出现在表达式中
D.函数调用可以作为一个函数的形参
9、若有说明:“int a=2,*p=&a,*q=p;”,则以下非法的赋值语句是()。
A.p=q; B.*p=q;
C.a=q; D. q=a;
10、设有以下说明语句,则下面的叙述中不正确的是()。
struct ex
{ int x;
float y;
char z;}example;
A.struct ex是结构体类型 B.ex是结构体类型名
C.x,y,z都是结构体成员名 D.struct是结构体类型的关键字
二、流程图绘制(2小题,每小题6分,共12分)
略
三、程序阅读题(4小题,每题5分,共20分)
1.以下程序运行时,如果从键盘键入5<回车>,则程序运行后的输出结果是什么?
#include<stdio.h>
int main()
{ int x,y;
scanf("%d",&x);
if(x<1) y=x;
else if(x<10) y=2x-1;
else y=3x-11;
printf("%d\n",y);
return 0;
} - 以下程序完成了什么式子的求解工作?
#include <stdio.h>
int main ( )
{ int i,j,sum,n;
for(i=1,sum=0;i<=20;i++)
{ for(n=1,j=1;j<=i;j++)
n=n*j;
sum=sum+n;
}
printf("%d\n",sum);
return 0;
} - 以下程序运行时,如果从键盘键入5<回车>,则程序运行后的输出结果是什么?
#include <stdio.h>
int main( )
{ int a[10]={16,10,8,4,2};
int num;
int i,j;
scanf("%d",&num);
for(i=0;i<5;i++)
{ if(num>a[i])
break; }
j=i;
for(i=4;i>=j;i–) {a[i+1]=a[i]; }
a[j]=num;
for(i=0;i<6;i++) printf("%5d",a[i]);
printf("\n “);
return 0;}
4.以下函数实现的功能是?
void add (int a[],int b[],int c[],int n)
{ int i;
for(i=0;i<n;i++)
c[i]=a[i]+b[i];
}
四、程序填空题(3小题,每空3分,共18分)
1.以下程序的功能是:由键盘输入a,b,c三个整数,输出其中最大的数。请填空。
#include<stdio.h>
int main()
{ int a,b,c,max;
scanf(”%d%d%d",&a,&b,&c);
【1】;
if(max<b) max=b;
if(max<c) 【2】;
printf("%d\n",max);
return 0;
} - 以下程序的功能是:求1!+2!+3!+4!+……+20!,请填空。
#include <stdio.h>
int main ( )
{ int i=1,sum=0,n=1;
while(【1】)
{ n=n*i;
【2】;
i++;
}
printf(“1!+2!+3!+4!+……+20!=%d\n”,sum);
return 0;
}
3.以下程序的功能是:在main函数中调用函数alter(),分别将两个int型的变量x和y的数值改变为它们的和以及它们的差,请填空。
#include<stdio.h>
int main()
{ void alter(int *p1,int *p2);
int x,y,【1】;
printf(“请输入两个整数:”);
scanf("%d%d",&x,&y);
alter(px,py);
printf(“处理后x=%d,y=%d\n”,*px,*py);
return 0;}
void alter(int *p1,int *p2)
{ int result1,result2;
【2】;
result2=*p1-*p2;
*p1=result1;
*p2=result2; }
五、编程题(3小题,每小题10分,共30分)
1.2略
3.输入4个整数,找出其中最大的数。(要求定义一个求两个数中最大数的函数,以此为基础再定义一个求四个数中最大数的函数,用函数的嵌套调用来处理本问题。)