当前位置:首页 > 华北电力大学(北京)2009-2010学年第 一学期C语言考试试卷及答案(A)
华北电力大学 _2009-2010_学年第 一_学期考试试卷(A)
课程名称 高级程序设计语言C 课程编号 专业班级 全校各专业 考试方式 闭卷 命题教师 郑玲 需要份数 试卷页数 4 主任签字 考核日期时间 1月15 送交日期 A B卷齐全 备 注 1月7 是 班级: 姓名: 学号: 一、 选择题(每题 1 分,共 20 分)
1. C语言程序是由 构成的。
A)一些可执行语言 B)main函数 C)函数 D)包含文件中的第一个函数 2. 下列说法错误的是: 。
A) C程序运行步骤是编辑、编译、连接、执行。 B) C语言的变量名必须用小写,常量用大写。 C) C语言的三种基本结构是顺序、选择、循环。 D) C程序一定由函数构成的。 3.下列正确的标识符是 。
A) -a1 B) a[i] C) a2_i D) int t 4.下列可以正确表示字符型常量的是 。 A) ′\\t′ B) \ C) ′\\97′ D) 297
5.设a是char型变量,a=′1′,则把其值变成整数1的表达式是 。 A) (int)a B) int(a) C) a=a-48 D) a/(int)a
6.设x,t均为int型变量,则执行语句x=10;t=x&&x>10;后,t的值为 。
A) 不定值 B) 10 C) 1 D) 0 A) switch B) for C) while D) if…else
8.若有int a=1,x=1;则循环语句while(a<10) x++; a++;的循环执行 。
A) 无限次 B) 不确定次 C) 10次 D) 9次 9. 以下对一维数组a的正确说明是: 。
A) char a(10);
B) int a[3]={0,0,0,0} ;
C) int k=5,a[k] ; D)char a[]={?a?, ?b?, ?c?} ; 10.已知:int a[10]; 则对a数组元素的正确引用是 。 A) a[10] B) a[3.5] C) a(5) D) a[10-10] 11.以下定义语句中,错误的是 。
A) int a[]={1,2};
B) char *a[3] ;
D) int n=5,a[n] ;
C) char s[10]= 〞test〞;
7. break语句不能出现在 语句中。
12. 若有以下的定义:int t[3][2] ;能正确表示t数组元素地址的表达式是 。
A) &t[3][2] B) t[3] C) t[1][2] D) t[2]
第 1 页 共 5 页
13.C语言中函数返回值的类型是由 决定的。
A)函数定义时指定的类型 B) return语句中的表达式类型 C) 调用该函数时的实参的数据类型 D) 形参的数据类型
14. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为 。 A) 由系统选择 B) 单向值传递 C) 由用户指定传递方式 D) 地址传递 15. 在函数调用时,以下说法正确的是 。 A)函数调用后必须带回返回值 B)实际参数和形式参数可以同名 C)函数间的数据传递不可以使用全局变量 D)主调函数和被调函数总是在同一个文件里
16. 以下对结构变量stul中成员age的非法引用是 。
struct student { int age;
int num; }stu1,*p; p=&stu1; A) stu1.age B)
17.设有如下定义:
struck sk { int a; float b; }data; int *p;
若要使P指向data中的a域,正确的赋值语句是 。 A) p=&a;
B) p=data.a;
C) p=&data.a; D) *p=data.a;
18.对于同类型的指针变量,不可能进行的运算是 。
A) - B) = C) + D) ==
19.下列不正确的定义是 。
A) int *p=&i,i; B) int *p,i; C) int i,*p=&i; D) int i,*p;
20.判断两字符串s1,s2是否相等,应使用 。
A) if(s1==s2) B) if(s1=s2)
C) if(strcpy(s1,s2)) D) if(strcmp(s1,s2)==0);
student.age C) p->age D) (*p).age
第 2 页 共 5 页
二、填空题(每空 2 分,共 20 分)
1.在C程序中,判逻辑值时,用【 ① 】表示真;用【 ②】表示假。在计算逻辑表达式时,逻辑表达式值为真是用【 ③ 】表示的;逻辑表达式的值为假,则用【 ④ 】表示。
2.若有定义:int a=10,b=9,c=8;接着顺序执行下列语句后,变量b的值是【 ⑤ 】。
c=(a-=(b-5)); c=(a)+(b=3); 3.下列程序段的输出结果是【 ⑥ 】。
main()
{ char b[]=\
b[5]=0;
printf(\ }
4.语句:x++; 、++x; 、 x=x+1; 、x=l+x; ,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【 ⑦ 】。
5. 设a、b、c为整型数, 且a=2、b=3、c=4, 则执行完以下语句:a*=16+(b++)-(++c); 后,a的值是【 ⑧ 】。
6.以下程序的输出结果是【 ⑨ 】。
main()
{ int a=0
a+=(a=8);
printf(\}
7. a 、b都是结构体变量,语句 a=b; 能够执行的条件是【 ⑩ 】。
三、读程序,写结果(每题4分,共20分)
1.写出下列程序的输出结果。 #includes
main()
{ int i=10;
switch ( i )
{ case 9: i+=1; case 10: i+=2; case 11: i+=3; default : i+=4;
}
printf(“i=%d\\n”,i); }
2.写出下列程序的输出结果。 #includes
{ int i,n[]={0,0,0,0,0};
for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1;
printf(\} }
第 3 页 共 5 页
3.当运行时输入:abcd$abcde?,下面程序的运 行结果是。
#includes
{ char c;
while(putchar(getchar())!='$'); printf(\}
5.写出下列程序的输出结果。 struct STU {
#includes
char num[10]; float score[3];
4.写出下列程序的输出结果。 #includes
void ast(int x,int y,int *cp,int *dp) { *cp=x+y; *dp=x-y; }
main()
{ int a=4,b=3,c=1,d=0; ast(a,b,&c,&d);
printf(\ }
}
main()
{ struct STU s[3]={{\ int i; float sum=0;
p=s+1;
for(i=0;i<3;i++) sum=sum+p->score[i]; printf(\ }. 四、程序填空题(每空 2 分,共 20 分)
1. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和平均成绩,当输入负数时结束输入,请填空。
#includes
{ float x,max=0,avg=0,n=0;
scanf(\
while( ① ) {
if(x>max) max=x; ② ; ③ ;
scanf(\
} }
第 4 页 共 5 页
④ ;
printf(\
2.a 是一个3×3 的矩阵,输入a 的元素,如果a 是下三角矩阵, 输出\否则, 输出\。(下 三角矩阵,即主对角线以上的元素都为0, 主对角线为从矩阵的左上角至右下角的连线)
#includes
{ int a[3][3], flag, i, j;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf(\
⑤ ; for (i=0;i<3;i++)
for ( ⑥ ; j<3;j++)
if( ⑦ ) {
⑧ ; break; }
if(flag)
printf(\else
printf(\}
3.定义函数f(number),它的功能是返回number 的逆序数。例如f(-123)的返回值是-321。
#includes
long res = 0;
flag = number<0 ? -1 : 1;
if(number<0) number = - number; while(number!=0) {
⑨ ; number = number /10; }
⑩ ; }
五、编程题 ( 每题10分,共 20 分)
1.从键盘输入1个整数x,打印所有小于x的斐波那契数列(数列的第一项、第二项为1,数列从第三项开始,每一项都等于前两项的和)。
2.输入n位学生的成绩,分别用函数实现:
(1)将n位学生的成绩按从高到低排序。 (2)求所有学生的平均成绩。
在主函数中输入学生成绩,并从大到小输出所有大于等于平均分的学生成绩。
第 5 页 共 5 页
共分享92篇相关文档