case 9: printf(\″);break; case 8: printf(\″);break; case 7: printf(\″);break; case 6: printf(\″);break; default: printf(\″);break; } } 3.本题10分。
main() { int i,t=1;
float t=1.0,s=0.0,sum; for(i=1;i<=20;i++) { t=(i+1)*1.0/i; s=s+t;}
printf(\}
C语言程序设计试题集(第5套)
一、单项选择题(每题2分,共20分)
1、以下哪个不是c语言中定义的关键字( ) A)int B)sizeof C)flag D)default
2、下列计算机语言中,CPU能直接识别的是
A)自然语言 B) 高级语言 C) 汇编语言 D)机器语言
3、下面表达式的值哪个是假( ) A)!(?A?>?B?)
B)11>5&&6<15||7>=8 C)!(2+3)&&(7>=7) D)11>5||6<15&&7>=8
4、Turbo C整型int占用内存( )
26
A)1字节 B)2字节 C)3字节 D)4字节
5、表示关系x≥y≥z,应使用C语言表达式( ) A)(x>=y)&&(y>=z) B)(x>y)AND(y>z) C)x>=y>=z D)(x>=y)&(y>=z)
6、程序的输出结果是( ) main() {
char a[]={'h','e','l','\\0','l','o','\\0'}; printf(\}
A)hello B)hel C)hel\\0 D)hel\\0lo\\0
7、在一个函数中的复合语句中定义了一个变量,则以下正确的说法是 A) 该变量只在该复合语句中有效 B) 该变量在该函数中有效 C) 该变量在本程序范围内均有效 D) 该变量为非法变量
8、判断两个字符串s1和s2是否相等,应当使用 A) if (s1==s2) B) if(s1=s2) C) if (strcmp(s1,s2)) D) if (strcmp(s1,s2)==0)
9、以下定义 int a=0; double b=1.25; char c=?A?;
#define d 2
则下面语句中错误的是
A)a++; B)b++ C)c++; D)d++;
10、设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A)scanf(\ B)scanf(\C)scanf(\ D)scanf(\
二、填空题(每空2分,共20分) 1、编写C表达式:π(r12-r22)(1)
2、假定int m,k=10; 在执行语句 m=--k/2;后,m,k的值分别是多少?(2)
3、写出用%.3f格式输出的数据1.26754e-2形式。(3)
27
4、假定int x;char y,z; 给定下面的输入:64 65 66
执行语句 scanf(“%d %c%c”,&x,&y,&z);后,x,y,z的值分别是多少?(4)
5、写出下面程序的执行结果:(5) x=85;
if(x>=80)printf(“A”); if(x>=60)printf(“B”); if(x>=0)printf(“C”);
6、写出语句for(j=12;j>=9;j--)printf(“*”);的执行结果:(6)
7、设int list[6],j;
执行下面代码后,存储在list中的情况是什么?(7) list[0]=5;
for(j=1;j<6;++j){ list[j]=j*j+5;
if(j>2)list[j]=2*list[j]-list[j-1]; }
8、写出下面程序的输出结果:(8) int a,b;
char s[3][4]={“cat”,”ode”,”dog”}; for(a=0;a<3;++a){ for(b=0;b<3;++b)
if(a==0)printf(“%c”,s[a][b]); else printf(“%c”,s[b][a-1]); printf(“\\n”); }
9、设有函数定义: int s(int one) { int j; int p=1;
for(j=1;j<=3;++j)p*=one; return p; }
语句printf(“%d”,s(5));输出什么?(9)
10、设有函数定义: int gcd(int u,int v) { if(v==0)return u; else return gcd(v,u%v); }
语句gcd(12,32);输出什么?(10)
28
三、程序分析填空题(每空3分,共30分)
1、计算多项式前n项的值:sum=x+xx+xxx+xxxx……..,x,n由键盘输入。 #include
int sum,term,,x,n,i; term=0; sum=0;
scanf(“%d,%d”,&x,&n); for(i=1; (1); i++) { (2)
Sum=sum+term; }
printf(“%d”,sum); }
2、用数组来处理求斐波纳契数列:
1,1,2,3,5,8…的前20个数。 数学表示:f(0)=f(1)=1, f(n)=f(n-2)+f(n-1) main() {
int f[20]= (3)
for(i=2 ; i<20 ; i++) (4) for(i=0 ; i<20 ; i++) {
printf(“d”,f[i]);
if(i%2==0) printf(“\\n”); } }
3、用起泡法对10个数排序(由小到大) main()
{ int a[11],i,j,t;
printf(\
for(i=1;i<11;i++) /*a[0]单元空去不用*/ scanf(\ printf(\
for(j=1;j<=9;j++) (5)
if(a[i]>a[i+1])(6)
printf(\ for(i=1;i<11;i++) printf(\} 4、以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。
29
递归公式如下:
#include
if(n==1)c=10; else c= (7) ; return(c); }
main() { int n=5;
printf(\}
5、打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
1 5 10 10 5 1
main() {int i,j;
int a[10][10]; printf(\
for(i=0;i<10;i++) {a[i][0]=1; (9); }
for(i=2;i<10;i++) for(j=1;j
四、编写程序(每题10分,共30分)
1、编写一个程序,提示用户输入一个用英里表示的距离,然后程序将英里转换为公里。输出2位小数的转换结果。已知1英里=5280英尺,1英尺=12英寸,1英寸=2.54厘米,1公里=100,000厘米。
30
10(n?1)?age(n)???age(n?1)?2(n?1)