1、浙江理工大学C语言期末试题含答案C程序设计试卷一、 单选题(本题共20分,每小题2分)(1)以下C语言常量中,表达错误的是_(1)_。A 0xFF B 3.2e0.5 C 5.6 D n(2)C程序的基本结构有_(2)_。A 选择、重复和模块 B 顺序、选择和模块C 顺序、选择和循环 D 逻辑、物理和程序(3)在C语言程序中,关于字符串的描述正确的是_(3)_。A 可定义一个字符串变量来存储字符串; B 可定义一个字符变量来存储任意字符串;C 可定义一个字符数组来存储字符串; D 可定义一个字符指针来存储字符串;(4)在C语言中,用关键字_(4)_定义双精度类型变量。A single B do
2、uble C float D int(5)下面叙述中不正确的是_(5)_。A 不同函数中可以使用相同名字的变量B 形式参数是局部变量C 在一个函数内部的复合语句中定义的变量在本函数范围内有效D 在一个函数内部定义的变量只能在本函数范围内有效(6)下面程序段的输出结果是_(6)_。int i=100;while(i120)i=i+1;printf(%d,i);A 100 B 101 C 120 D 121(7)以下定义语句中正确的是_(7)_。A char a=A b=B;B float a=b=10.0; C int a=10, *b=&a;D float *a,b=&a;(8)已有定义:in
3、t i, a10, *p;,则合法的赋值语句是_(8)_。A p=100; B p=a5; C p=a2+2; Dp=a+2;(9)设有定义:int a,*p1=&a; 以下scanf语句中能正确为变量a读入数据的是_(9)_。A scanf(“%d”,p1); B scanf(“%d”,a); C scanf(“%d”,&p1); D scanf(“%d”,*p1); (10)以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是_(10)_。A if(ab)&(bc) k=1 else k=0;B if(ab)|(bc) k=1 else k=0; C if(ab) k=1;二、
4、程序填空题(本题共30分,每小题2分)阅读下列程序说明和程序代码,在每小题提供的若干可选项中,挑选一个最佳的选项。(1)【程序说明】输入整数n,输出共有n层的金字塔图形。例如:【程序代码】# include void main() int i,j,n; char c=*; printf(输入层数:); scanf(%d,&n); for(i=1; (11) ;i+) for(j=1;j=n-i; (12) ) printf( ); for(j=1; (13) ;j+) printf( (14) ,c); printf(n); /换行,在内嵌循环结束后执行 (15) 【选项】(11)A i=n+
5、1 B i=n C i=2*i-1 B j=2*i-1 C j=2*n-1 D j=n(14)A %d B %s C %c D %f(15)A B ) C ; D 以上选项都不正确 (2)【程序说明】输入年份判断是否闰年。【程序代码】#include main() int year,leap; scanf(%d, (16) ); if (year%4=0) if (year%100=0) if (year%400=0) leap=1; (17) leap=0; else leap=1; else (18) ; if ( (19) ) printf (%d is , (20) ); else p
6、rintf (%d is not ,year); printf (a leap year.n);【选项】(16)A year B &year C &n D &leap(17)A else if Belse; C else D else if(leap=1)(18)A leap=0 B leap=1 C year=0 D year=1(19)Ayear=1 B leap C leap =0 D以上选项都不正确(20)Aleap B &leap Cyear D&year (3)【程序说明】输入十个整数并保存在一维数组中,使数组中每个元素都增加10。【程序代码】#include main() int
7、 a10,i; (21) p=a; for (i=0;i10;i+) scanf(%d, (22) ); (23) ; for (p=a;p(a+10);p+) (24) printf(n); (25) ; for (;p(a+10);p+) printf(%d ,*p); 【选项】(21)A int p10 B int *p; C int p; D int a;(22)A a+ B ap C *p D p(23)A p+ B a+ C*p+ D *a+(24)A *a=*a+10; B *p=*(p+10); C *p=*p+10; D *a=*(a+i);(25)A p=a0 B p=*a
8、 C p=a D *p=&a三、 程序阅读题(本题共20分,每小题2分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确的答案。(1)【程序说明】运行程序并回答问题。【程序代码】#include #include void main() int n,s=0; scanf(%d,&n); n=fabs(n); while(n1) s=s+n%10; n=n/10; printf(%dn,s);【选项】(26)程序运行时输入312,输出_(26)_。A 213 B 6 C 312 D 3为。(27)程序运行时输入-5104,输出_(27)_。A-5104 B4015 C10 D
9、51.04(2)【程序说明】运行程序并回答问题。【程序代码】# include void main()int a,b,c,temp;a=5;b=12;c=6;printf(a=%d,b=%d,c=%dn,a,b,c);if(ab) swap(&a,&b);if(ac) swap(&a,&c);printf(a=%d,b=%d,c=%dn,a,b,c);if(bc) swap(&b,&c);printf(a=%d,b=%d,c=%dn,a,b,c);void swap(int *x,int *y) int temp; temp=*x; *x=*y; *y=temp;【选项】(28)程序运行时,第
10、1行输出_(28)_。 A a=5,b=12,c=6 B a=%d,b=%d,c=%dC a=5.0,b=12.0,c=6.0 D a=12,b=5,c=6(29)程序运行时,第2行输出_(28)_。 A a=5,b=12,c=6 B a=6,b=12,c=5C a=12,b=5,c=6 D a=12,b=6,c=5(30)程序运行时,第3行输出_(30)_。 A a=5,b=12,c=6 B a=6,b=12,c=5Ca=12,b=5,c=6 D a=12,b=6,c=5(3)【程序说明】运行程序并回答问题。【程序代码】#include void main() char s140; int
11、i=0; printf(nInput a string:); scanf(%s,s1); while (s1i !=0) if (s1i=A & s1i =Z) s1i=s1i+32; i+; printf(n%sn,s1);【选项】(31)程序运行时,输入abc30DCA,输出_(31)_。 A 62 B abc30dca C abc D DCA(32)程序运行时,输入Face,输出_(32)_。 A Face32 B FACE C face D f(4)【程序说明】运行程序并回答问题。【程序代码】#include void main() FILE *fp; int i,j,k,x,y; s
12、canf(%d%d,&i,&j); fp=fopen(t.dat,w); fprintf(fp,%dn,i); if (ij) k=i; else k=i+j; fprintf(fp,%dn,k); fclose(fp); fp=fopen(t.dat,r); fscanf(fp,%d%d,&x,&y); printf(x=%d,y=%dn,x,y); fclose(fp);【选项】(33)程序运行时,输入20 12 输出_(33)_。 A x=20,y=20 B x=20,y=12 C x=12,y=20 D x=12,y=12(34)程序运行时,输入10 35输出_(34)_。 A x=4
13、5,y=45 B x=10,y=10 C x=10,y=35 D x=35,y=35(35)程序运行时,输入12 12输出_(35)_。 A x=24,y=24 B x=12,y=12 C x=24,y=12 D x=12,y=24四、 程序设计题(本题共30分,每小题10分)(1)编写程序,要求从键盘上输入一个数给x,计算并输出分段函数y的值。 x+10 10x 0x10 5x-3 x0提示:平方根函数为:sqrt( ),指数函数为: exp( ),正切函数为: tan( ),正弦函数为: sin( ),所有这些函数在math.h 头文件中。(2)从键盘输入一个正整数n,编写程序计算1/1!
14、+1/2!+1/3!+1/n!的值并输出结果, 要求定义和调用函数fact (n)计算n的阶乘。(3)随机产生20个大于等于1小于等于100的数,并按从大到小排序。请输出排序后的数,要求每行输出5个数。浙江理工大学2005/2006下学期期末考试-C程序设计试题参考答案与评分标准一、单选题(本题共20分,每小题2分)题号12345678910答案BCCBCACDAA二、程序填空题(本题共30分,每小题2分)题号11121314151617181920答案BCBCABCABC题号2122232425答案BDACC三、程序阅读题(本题共20分,每小题2分)题号2627282930313233343
15、5答案BCACDBCACD四、编程题(本题共30分,每小题10分)1、# include # include void main() float x,y; scanf(%f,&x); if(x10) y=x+10; else if(x=0) y=(sqrt(5*x)+exp(x)/(x+1); else y=tan(x)*sin(x); printf(y=%fn,y); 2、#includefloat fact(int n) float t=1.0;int i=1; while (i=n) t=t*i+; return(t); void main() int n,i ;float sum=1.
16、0; scanf(%d,&n); for (i=2;i=n;i+) sum=sum+1.0/fact(i); printf(%fn,sum);3、#include#includevoid main() int i,j,n=0,temp,x20; srand(time(NULL); printf(原始数据:n); for(i=0;i=19;i+) xi=rand()%100+1; /产生20个随机数 if(i%5=0)printf(n); printf(%-6d,xi); printf(n); for(i=0;i19;i+) /从大到小排序 for(j=0;j19-i;j+) if(xjxj+1) temp=xj; xj=xj+1; xj+1=temp; printf(排序后数据:n); for(i=0;i20;i+) if(i%5=0)printf(n); printf(%-6d,xi); printf(n);
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2