中职中专《C语言》程序设计期末考试试卷和答案.docx
XXXX学院(XX中专)2020-2021学年度第一学期期末考试XX级C语言试卷使用班级:19计算机一、选择题(每题3分,共10小题,共计30分)1.以下可用作C语言用户自定义标识符的一组是()oII Avoid、 return、 ifB. printf, include、 fabsC. Max> abc> MainD. 2abc> payS、 sum-10|2.若有定义语句int x=10;则表达式x-=x+x的值为()。1 A .-20 B. -10 C. 0 D. 10酒|太 3.已知x为float型变量,其值为213. 456,则printf ( “%-4.2fn" , x);的输I出结果为()oI .I ' A. 213.46 B. 213.45 C. -213.45 D.输出格式控制说明的域宽L看不够,不能输出I切 4.正确表达10, 20这个区间的表达式是()。I A. a>=10&&a<=20B. a>=101|a<=20I烟I他 C. a>=10&a<=20D. a>=10 or a<=20IF 迎5,下列程序的运行结果是()o#include<stdio. h>main ()| 髓 int i, j, n=0; for (i=0;i<5;i+)| 越 j=i%2;I doIf 1I n+; IIwhile(j一一);printf (/z%d, %d, %d,i, j, n);A. 4, 0, 7 B. 5,-1,7 C. 4, 0, 5 D. 5,-1, 56.已定义 int 8口3 = 1,2,3,4,5,6,7,8,9;则412的值为()。A. 2 B. 4C. 6D. 8.数组定义为int a32 = l,2,3,4,5,6,值为6的数组元素是()。A. a3 2 B. a2 1 C. al 2 D, a2 3.以下正确的函数首部是()oA. void fun(intx, int y) B. void fun(int x, y)C. void fun (int x , int y) D. void fun (x , y)7 .当调用函数时,实参是一个数组名,则向函数传递的是()oA.数组的长度B.数组的首地址C.数组的每一个元素的地址D.数组的每一个元素的值. C语言中要使用数学库函数,需要在源文件中包含的头文件是()。A. stdio. h B. math, h C. string, h D. ctype. h 二、程序阅读题(5小题,每题6分,共计30分).下列程序的输出结果是:.main() (int a=10, b=50, c=30; if(a>b) a=b;b=c;c=a;printf ( "a=%d, b=%d, c=%dv , a, b, c); 1 .若从键盘上输入6,则输出结果是: ftinclude <stdio.h> int main () int n, m;float fact;printf (“请输入n的值:“);scanf (级d, &n); m = n;fact=l;while (m>0)fact*=m一;printf (z/%d !=%10. Ofn,n, fact);return 0;2 . Winclude <stdio. h>main() int i, j, x=0;int a33;for (i=0;i<3;i+)for(j=0;j<3;j+)ai j=2*i+j;for(i=0;i<3;i+)x+=ai j;printf(%d,x);.以下程序输出结果为 o#include<stdio.h>Int f ()Int b=0;Static int c=3;b=b+l;c=c+l;Return b+c;Void main()Int al, a2;al=f ();a2=f ();Printf ( u%d,%d , al, a2);3 .以下程序输出结果为 o#include<stdio.h>Int fun (int n)(If (n=l) return 1;Else return fun(n-1)+1;)Void main()Int i,j=0;For (i=l, i<3, i+)J+=fun(i);Printf( "%dn",j);三、改错题(2小题,每题9分,共计18分).采用递归的算法计算4!。int fac(int n)if(n=0| n=l) return 1;else return fac(n-l);#include<stdio. h>int main () int n;long y;printf (输入 n=);scanf(d,&n);fac (n);printf(d!=%ldn,n,y);return 0;1 .下列程序是对二维数组a6 6赋值:对角线上元素为0;对角线右上角元素 为1;对角线左下角元素为T。最后输出数组元素。#include <stdio.h>int main () int a66;int i, j;for(i=0;i<6;i+)for(j=0;j<6;j+)ai j = (i=j)? 0: (i>j)? 1 : -1;for(i=0;i<6;i+) for(j=0;j<6;j+)printf("%dt, aji);printf(n);)return 0;四、程序段设计题(2小题,每题11分共计22分)1 .利用一维数组求斐波那契数列的前20项,并以每行显示5个数据的形式输出 数列。斐波那契数列数是这样一组无穷数列:前2个数是1、1,从第3个数起, 每个数均是前两个数之和。如前面几项分别是:112 3 5 8 13 213354ftinclude <stdio.h> int main () long f 20>l, 1;int i;printf (z,%12d%12d,z, f0,fl);printf (n);return 0;2 .输入一个数,判断其是否是回文数。所谓回文数是指其各位数字左右对称, 如 11、123321 等。ftinclude <stdio.h>int Ispalindrome(long i);long Reverse(long n);int main () long x;printf ("输入一个整数:);scanf (级ld, &x);if (Ispalindrome(x) 调用 Ispalindrome 函数printf (Id 是回文数n, x);elseprintf ("%ld 不是回文数n", x);return 0;int Ispalindrome(long i) long Reverse(long n)XX级C语言试卷参考答案使用班级:XX计算机一、选择题(每题3分,10小题,共计30分)l.D 2.B 3.A 4.A 5.B 6.C 7.B 8.C 9.B 10.B二、程序阅读题(每题6分,5题共计30分)a=10,b=30, c=10 (每项2分,每项格式错误各扣1分)1. 720122. 5,6 (每项3分,格式错误扣2分)3三、程序改错题(每题9分,2小题,共计18分)(1) else return fac (n-1); 应改为:return n*fac (n'l) ;(5 分)(2) fac(n); 应改为:y=fac(n)(4 分)(1) aij = (i=j)? 0: (i>j)? 1 : -1;应改为:(i<j)? 1 : -1; (5 分)(2) printf (,%dt,, aj i);应改为:printf (绘dt", ai j) ; (4 分)四、程序段设计题(每题11分,2小题,共计22分)1. for(i=2;i<20;i+) (2分)fi=fi-2+fi-l;(4分)if (i%5=0)printf (n);(4分)printf (%12d,f i) ;(1分)return i=Reverse(i) ;(3 分)long m=0;( 1分)while(n>0)(1分)m=m*10+n%10;(3分)n/=10;(2分)return m;