考试答案不得超过此线
2019—2020学年度第二学期期末考试试卷
《程序设计基础》课程(C卷)
(开课单位:计算机与信息学院,闭卷120分钟)
学院专业年级、班级
姓名学号□□□□□□□□□
题号一二三四五总分
得分
注意事项
1.本试卷共五大题,共3页。
2.考生答题时必须准确填写学院、专业、年级班级、姓名、学号等栏目,
字迹要清楚、工整。
1.下列关于C语言程序书写规则的说法中正确的是________。
A)不区分大小写字母B)一行只能写一条语句
C)一条语句可分成几行书写D)每行必须有行号
2. 以下有关标识符的叙述中,错误
..
的是______。
A)用户标识符允许使用关键字
B)用户标识符应尽量做到“见名知意”
C)用户标识符必须以字母或下划线开头
D)用户标识符中的大/小写字母代表不同标识符
3.设有char x='A'; int y=1; float a=2.3; double b=
4.56;,则表达式x-y+a/b的数
据类型为________。
A)char B)int C)float D)double
4.设有int a;double d=3.45;,则执行语句a=(int)(d+0.5);后a的值是_____。
A)3 B)4 C)3.45 D)3.955.
5.下面选项中能正确表示“|x|≤21”的C语言表达式是_____ 。
A)-21≤x≤21 B)-21<=x&&x<=21
C)-21<=x||x<=21 D)-21<=x<=21
6.若有定义float a,b,c;,执行语句scanf("%f%f%f",&a,&b,&c);使得a为10,b为
20,c为30,则以下不正确
...
的输入形式是______。
A) 10 B) 10.0,20.0,30.0 C) 10.0 D) 10 20
20 20.0 30.0 30
30
7.设变量a,b,c,d和y都已正确定义并已赋值。以下if语句所表示的含义是______。
if(a
if(c==d) y=0;
else y=1;
A)
1
a b c d
y
a b
<=
?
=?
≥
?
且
B)
1
a b c d
y
a b c d
<=
?
=?
≥≠
?
且
且
C)
1
a b c d
y
a b c d
<=
?
=?
<≠
?
且
且
D)
1
a b c d
y
c d
<=
?
=?
≠
?
且
8.语句while(!e);中的条件!e等价于______。
得分一、单项选择题(共计30分,每题2分)
考试答案不得超过此线
A) e==0B) e!=1C) e!=0D) ~e
9.下面描述中不正确
...
的是______。
A) 在函数中可以使用局部变量,也可以使用与局部变量不同名的全局变量
B) 全局变量的作用域一定比局部变量的作用域范围大
C) 若外部变量与局部变量同名,在局部变量作用范围内,外部变量不起作用
D) 外部变量定义和外部变量说明的含义不同
10.若二维数组a有m行n列,设a[0][0]位于数组的第一个位置上,则计算任一
元素a[i][j]在数组中位置的公式是______。
A) j*m+i+1 B) j*m+i C) i*n+j D) i*n+j+1
11.已知int m, n=2020, *p=&m;,则与“m=n;”等价的语句是______。
A)m=*p; B)m=**p; C)*p=n; D)m=&n;
12.判断字符串s1是否大于字符串s2,正确的表达式是______。
A)strcat(s1,s2) B)s1>s2 C)strcmp(s1,s2)>0 D)strcpy(s1,s2)
13.以下对枚举类型定义正确的是______。
A)enum clour={red,white,green}; B)enum clour{red,white,green};
C)enum clour={"red","white","green"};D)enum clour{"red","white","green"};
14.在位运算中,运算量每右移动一位,其结果相当于________。
A)运算量乘以4 B)运算量除以2 C)运算量除以4 D)运算量乘以2
15.文件按照编码和数据组织形式可分为______。
A)文本文件和二进制文件B)数据文件和二进制文件
C)文本文件和数据文件D)以上答案都不完整
得分二、程序填空题(共计18分,每空3分)
1.以下程序的功能是从键盘输入10 个不同的整数存入数组 a 中,调用函数将
其从小到大排序输出,请从给定的6个选项中选择一个答案并填写在相应的
下划线处。
#include
void bub_sort(______________)
{ int i,j,temp;
for(i=1;i<=n-1;i++)
for(j=0; j if(a[j]>a[j+1]) {temp=a[j];________;a[j+1]=temp;} } void main() { int a[10],i; printf("请输入10 个数:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); bub_sort(a,10); printf("排序后:"); for(i=0;i<10;i++) printf("%3d"________); printf("\n"); } (1) int a[ ],int n(2) int n,int a[ ](3) a[i] (4) a[i]=a[i+1](5) a[j]=a[j+1](6) a[0] 2. 以下程序的功能是计算数列的第n 项,该数列第一项是1,后面每项是前一 考试答案不得超过此线 项加5。请从给定的6个选项中选择一个答案并填写在相应的下划线处。 #include int add(int n) {int m; if(n==1) m=________ ; else m=5+________; return m; } void main() { int n,m; scanf("%d",&n); m=________ ; printf("%d\n",m); } (1)0(2)1(3)add(n) (4)add(n-1)(5)add(n+1)(6)n+5 得分 三、程序改错题(共计18分,每处错误3 分) 1.以下程序的功能是查找一维数组中值最小的元素,请在标有Error的行后下 划线处填写正确答案。 #include void main() { int a[10], i,min, p; /*$ERROR$*/ ____________ for(i=0;i<10;i++) scanf(“%d”,a[i]); /*$ERROR$*/____________ p=a; min=a[0]; for(i=0;i<10;i++,p++) if(min<*p) /*$ERROR$*/ ____________ min=*p; printf("min=%d\n",min); } 2. 以下程序的功能是输出如下图形,请在标有 Error的行后下划线处填写正确答案。 #include main() { int i,j,k=1; for(i=1;i<=4;i++) { for(j=1;j<=i;j++) { printf("%f",k%10); /*$ERROR$*/_____________ k--; } /*$ERROR$*/ _____________ printf("/n"); } /*$ERROR$*/ _____________ } 得分 四、程序阅读题(共计24分,每题6分,将 答案写在相应的下划线处) 1.以下程序运行后的输出结果是_________。 #include "stdio.h" void main() { int a,b,c,x=258,y; a= x%10; b= x/10%10; c= x/100; y= a*100+b *10+c; printf("x=%d,y=%d\n",x,y); } 2.以下程序运行后的输出结果是_________。 #include void main() {int x=2,a=1,b=0; switch(x) { case 1: ++a; case 2: b++; break; case 3: a--; 1 考试答案不得超过此线 default: --b;break; } printf("a=%d,b=%d\n",a,b); } 3.以下程序运行后的输出结果是_________。 #include long fact( int n) { if (n==1 || n==0)return (1); else return (n*fact(n-1)); } void main( ) { printf("%ld ", fact (1)); printf("%ld ", fact (3)); printf("%ld\n", fact (5)); } 4.以下程序运行后的输出结果是_________。 #include void main( ) { char s[]="1#2*3"; int i,n; for (i=0,n=0;s[i]!='\0';i++) if (s[i]>='0' && s[i]<='9')n=n*10+s[i]-'0'; printf("n=%d\n",n); } 得分五、程序设计题(共计10分,每题10分) 编写程序,计算并输出4?4 3 +4 5 ?4 7 +4 9 ?4 11 +?(直到最后一项绝对值小于10-5)的值。