题号 得分 一 二 三 四 五 六 总分 printf(\A) 0 0 0
B) 0 1 0
C) 1 1 0
D) 0 1 1
8、程序段如下:则以下说法中正确的是( )。(第5章)
考试形式:■闭卷 □开卷 ■笔试 □机试 答卷要求:试卷答案需填写至答题卡内
一、单项选择题(每小题 2 分,共 30 分)
1 2 3 4 5 6 7 8 9 10 C D A B B A D A C C 11 12 13 14 15 C D A C B 1、C语言源程序文件是一个后缀为( )的文件。(第1章) A) .bas
B) .java
C) .c
D) .pas
2、下列哪个图形不属于传统流程图的符号( )(第2章) A)
B)
C)
D)
3、下列标识符中,不合法的用户标识符为( )。(第3章) A) a+4
B) If
C) then D) _123
4、下面运算符优先级最高的是( )。(第3章)
A) * B) ! C) -(减号) D) = 5、以下哪个是不正确的转义字符(
)。(第3章)
A) '\\\\'
B) '077'
C) '\\0'
D) '\\n' 6、若int n,x=1,y=0,则条件表达式n=x B) 1 C) 2 D) 表达式错误 7、分析以下程序, 下列说法正确的是( )。(第4章) int main() { int i=10,m=0,n=0,k=0; switch(i/10) { case 0: m++;n++;break; case 10: n++; break; default: k++;n++; } int k=-10; while(k<0) k=k+1; A) while循环执行10次 B) while循环执行11次 C) 循环体语句一次也不执行 D) 循环是无限循环 9、下列程序段执行后k值为( )。(第5章) int k=0,i; for(i=0;i<=20;i+=3) k=k+1; A)5 B)6 C)7 D)8 10、若有定义int a[5],i=4;则对数组元素的非法引用是( )。(第6章) A) a[i] B) a[i-1] C) a[i+1] D) a[i-4] 11、以下能正确定义数组并正确赋初值的语句是( )。(第6章) A) int a[2][]={1,2,3,4}; B) int a[2][3]={1,2,3,4,5,6,7}; C) int a[][3]= {1,2,3,4,5,6}; D) int a[][]={1,2,3,4,5,6}; 12、C语言规定,函数返回值的类型是由( )。(第7章) A) return语句中的表达式类型所决定 B) 调用该函数时的主调函数类型所决定 C) 调用该函数时系统临时决定 D) 在定义该函数时所指定的函数类型决定 13、以下函数调用语句中实参的个数为( )。(第7章) func((v1,v2),(v3,v4,v5),v6); A) 3 B) 4 C) 5 D) 6 14、有如下程序段,执行该程序段后a 的值为( )。(第8章) int *p,a=10,b=2; p=&a; a=*p+b; A) 10 B) 11 C) 12 D) 编译出错15、有如下说明,则数值为9 的表达式是( )。(第8章) int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; A) *p+9 B) *(p+8) C) *p+=9 D) p+8 二、填空题(每小题 2 分,共 10 分) 1 函数 2 1/3*n(4*n-1)(4*n-1) } 2、(第4章和第5章) 下面程序是求1..300之间能被3整除的数。 3 1 4 50 5 4 1、C语言程序是由若干个 组成。(第1章) 2、若有声明double n;,则数学公式对应的C语言表达式形式为________。(第 3章) 3、执行语句“a=0,b=1,c=2;if(a>0 && b>0) c++; else c--;\后,变量c值为______。(第4章) 4、执行语句“for(s=0,i=1;i<11;i++) {if(i==5) continue; s+=i; }\后,s值为______。(第5章) 5、在执行int a[][3]={1,2,3,4,5,6};语句后,a[1][0]的值是_________。(第6章) 三、程序改错题。指出下列程序错误代码并改正,使其能正确运行。(每题只有2处错,指出1处得1分,改正得2分,每处 3分,共 12 分)题号 错误代码 改正后 (1) scanf(\%d,%d\ scanf(\%d,%d\ 1 (2) printf(\%d\\n,a+b\); printf(\%d\\n\); (1) for (i=1;i<=300;i++); for (i=1;i<=300;i++) 2 (2) if (n%3) if (n%3==0) 1、(第3章) 下面程序是输出a、b两个数,输出a+b的和。 #include <> int main(){ int a,b; scanf(\%d,%d\ printf(\%d\\n,a+b\); int main() { int i; for (i=1;i<=300;i++); if (n%3) printf(\ return 0; } 四、程序分析题,根据下列程序,写出其运行结果。共 12 分) 1、(第3章) int main() { int x=4,y=0,z; x*=3+2; printf(\ x*=y=z=4; printf(\} 2、(第4章和第5章) #include <> int main() { int i; for(i=1;i<=5;i++) { if(i%2) putchar('<'); else continue; putchar('>'); } putchar('#'); (每小题 4 分,输出结果:______ 20 80 输出结果:______ < >< >< ># } 3、(第6章) void main() 输出结果:______ { int a[4][4],i,j,k; for (i=0;i<4;i++) 0 for (j=0;j<4;j++) 1 0 a[i][j]=i-j; 2 1 0 for (i=0;i<4;i++) { 3 2 1 0 for (j=0;j<=i;j++) printf(\ printf(\ } } 五、程序填空题(每空 3 分,共 12 分) 第1空 Sn+hn 第2空 hn/2 第3空 a[i]>a[maxIndex] 第4空 maxIndex 1、一球从 100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米第十次反弹多高(第4和5章) int main() { float Sn=,hn=Sn/2; int n; for (n=2;n<=10;n++) { Sn= 【第1空】; hn= 【第2空】; } printf(\第10次落地时共经过%f米\\n\ printf(\第10次反弹%f米\\n\} 2、下面的函数是实现找出一维数组中最大元素的下标。(第6和7章) int findMaxIndex(int a[],int n) { int i; int maxIndex; maxIndex=0; for(i=0;i maxIndex=i; return 【第4空】; } 六、编程题(第1题 12 分,第2题12分,共 24 分)1、有三个数a、b、c,由键盘输入,输出其中最大的数。 (1)画出该程序的流程图;(6分) (2)编写程序。(6分) 参考答案 (1) (2) #include <> int main() { int a,b,c; int max; scanf(\ if (a>b) max=a; else max=b; if (c>max) max=c; printf(\ return 0; } 2、编写程序,对n个整数逆序存放。n个整数和n在主程序中输入,最后在主函数中输出。(要求使用指针变量指向数组的方法) 例如:8 6 9 1 3,逆序后结果是:3 1 9 6 8 参考答案 #include <> #define N 20 void revert(int a[],int n) { int *p,i; int t; p=a; for (i=0;i int main() { int i,n; int a[N]; scanf(\ for (i=0;i revert(a,n); for (i=0;i }