C语言期末练习试题1doc.docx
《C语言期末练习试题1doc.docx》由会员分享,可在线阅读,更多相关《C语言期末练习试题1doc.docx(20页珍藏版)》请在冰豆网上搜索。
C语言期末练习试题1doc
一、阅读程序,选择输出结果
1.下面程序的运行结果是ob
#include
intmain()
(charm;
m='B,+32;
printf("%c\n",m);
return0;)
2.下面程序的运行结果是o0
#include
intmain()
(intx=3,y=5;
printf("%d\n",x/y);
return0;}
3.下面程序的运行结果是。
x=ly=2*sum*=3
10squaredis:
100#include
intmain()
(intx=1,y=2;
printf("x=%dy=%d*sum*=%d\n",x,y,x+y);
printf("10squaredis:
%d\n",10*10);
return0;}
4.下面程序的运行结果是ox+y+z=48
运行时从键盘输入:
251310/o#include
intmain()
(intx,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
return0;}
5.下面程序的运行结果是o55,,A
运行时从键盘输入:
55AB/O
#include
intmain()
(intk=0;charcl='a',c2='b';
scanf("%d%c%c",&k,&cl,&c2);
printf("%d,%c,%c\n",k,cl,c2);
return0;}
6.下面程序的运行结果是oc=-l
#include
intmain()
(inta=l,b=2,c=3;
if(a>b)c=1;
elseiffa==b)c=0;
elsec=-1;
printf(,,c=%d",c);
return0;}
7.下面程序的运行结果是。
8888
运行时从键盘输入:
88/。
#include
intmain()
(inta;
scanf("%d",&a);
if(a>90)printf("%d",a);
if(a>80)printf("%d",a);
if(a>70)printf("%d",a);
return0;}
8.下面程序的运行结果是。
maxis2
#include
intmain()
(intmax(intx,inty);
inta=1,b=2,c;
c=max(a,b);
printf("maxis%d\n",c);
return0;}
intmax(intx,inty)
{intz;
z=(x>y)?
x:
y;
returnz;}
9.下面程序的运行结果是oa=l,b=2
#include
intmain()
(voidf(intx,inty);
inta=1,b=2;
f(a,b);
printf("a=%d,b=%d\n",a,b);
return0;}
voidf(intx,inty)
{x=100;
y=200;}
10.下面程序的运行结果是o111
#include
intmain()
(voidincrement();
increment();
increment();
increment();
return0;}
voidincrement()
(intx=0;
x+=1;
printf("%d\t",x);}
11.下面程序的运行结果是o84
#include
voidf(inty,int*x)
(y=y+*x;
*x=*x+y;}
intmain()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
return0;}
12下面程序的运行结果是o31
42
#include
voidfun(int*a,int*b)
{printf("%d%d\n",*a,*b);
*a=2;*b=4;}
intmain()
(intx=1,y=3;
fun(&y,&x);
printf("%d%d\n",x,y);
return0;}
13.#include
intmain()
{intx=l,a=2,b=3;
switch(x)
(casel:
a-;break;
case2:
b++;break;
case3:
a++;b++;}
printf("\na=%d,b=%d\n",a,b);
return0;}
1)程序运行时,a输出
(1)D
A.2B.0
C.6
D.1
2)程序运行时,b输出
(2)A
A.3B.5
C.0
D.1
14.#include
intmain(){intx,y,t;
x=5,y=3;if(x>y)(t=x;
x=y;
y=t;}
printf("x=%d,y=%d\n",x,y);
return0;}
3)程序运行时,x输出
(3)A
A.3B.5
C.6D.1
4)程序运行时,y输出
(4)C
A.2B.3
C.5D.1
15.#include
intmain()
(inta[3][4]=(0,1,2,3,4,5,6,7,8,9,10,11};
ints[3]={0};
inti,j;
二、程序选择填空或程序改错
1.将所有的A变成E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y
变成C,Z变成D;非字母字符保持原状不变。
#include
intmain()
(charch;
printf("pleaseenter:
\n");
ch=getchar();
while(ch!
='\n')
(if((ch>='a'&&ch<='z')||(ch>=W&&ch<='Z'))(ch=ch+4;
if((ch>Z'&&ch<=Z+4)||(ch>'z'))
ch=ch-26;)
printf(”%c”,ch);
ch=getchar();)
printf(H\nn);
return0;)
2.计算100至1000之间有多少个数其各位数字之和是5o
#include
intmain()
(inti,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;
k=i;
while(k)
(s=s+k%10;
k=k/10;)
if(s!
=5)
continue;
else
count++;}
printf(H%dn,count);
return0;)
3.计算:
s=l+12+123+1234+12345。
#include
intmain()
(intt=0,s=0,i;
fbr(i=1;i<=5;i++)
{t=i+t*10;
s=s+t;}
printf(”s=%d\n”,s);
return0;}
4.用公式++…求》的近似值,直到发现某一项的绝对值小于10一6为
4357
止(该项不累加)。
#include
#include
intmain()
(intf=1;
floatpi=0.0,n=1,t=1;
while(fabs(t)>=le-6)
{pi=pi+t;
n=n+2;
f=-f;
t=f/n;}
pi=pi*4;
printf(”pi=%8.6fm”,pi);
return0;)
5.计算100以内能被3整除,且个位数为4的所有整数。
#include
intmain()
{inti,j;
for(i=0;i<10;i++)
(j=i*10+4;
if(j%3!
=0)
continue;
printf(H%d\nn,j);}
return0;)
6.从终端输入字符,直到输入琳,为止,统计输入的字符中每个大写字母的个数,存放在num数组中,其中num[0]表示字母A的个数,num[l]表示字母B的个数,以此类推。
#include
intmain()
(intnum[26]={0},i;
charc;
while((c=getchar())!
='#')
if(c>='A'&&c<='Z*)
num[c-'A']+=1;
for(i=0;i<26;i++)
if(num[i])
printf(”%c:
%d\n”,i+A,num[i]);
return0;}
7.根据下面的定义,能打印出字母z的语句是oD
structstudent
(charname[10];
intage;};
structstudentstu[3]=("lixiang",17,"zhangsan",18,"wangwu",18);
A.printf("%c\n",stu[2].name);B.printf("%c\n",stu[2].name[l]);
C.printf("%c\n",stu[l].name[l]);D.printf("%c\n",stu[l].name[0]);
8.有一个一维数组score,内放10个学生成绩,统计不及格的学生人数。
#include
intmain()
(intfun(floatarray[10]);
floatscore[10];
inti,count=0;
printf("input10scores:
\n");
for(i=0;i<10;i++)
scanf("%f",&score[i]);
count=fun(score);
printf("%d\n",count);
return0;}
intfun(floatarray[10])
(inti,count=0;
for(i=0;i<10;i++)
if(array[i]<60)
count++;
returncount;}
9.下面程序中,函数fun的功能是:
统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并做为函数值返回。
#include
#defineN3
typedefstruct
(intnum;
charnam[10];
charsex;
}SS;
intfun(SSperson[])
(inti,n=0;
for(i=0;iif(person[i].sex=='M')
n++;
returnn;}
intmain()
(SSW[N]={{1,”AA”,F},{2,”BB”,M},{3,”CC”,M}};
intn;
n=fun(W);
printf(”n=%d\n”,n);
return0;)
10.下面程序的功能是统计文件letter.txt中小写字母c的个数。
#include
intmain()
(charch;
longn=0;
FILE*fp;
if((fp=fopen("letter.txt","r"))==NULL)
(printf("Cannotopenfile!
\n");
exit(0);)
while(!
feof(fp))
{ch=fgetc(fp);
if(ch='c‘)
n++;}
printf(”n=%ld\n”,n);
fclose(fp);
return0;}
11.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?
都是多少?
程序分析:
可填在百位、十位、个位的数字都是1、2、3、4O组成所有的排列后再去掉不满足条件的排列。
【程序】
#include
voidmain()
(inti,j,k;
printf(H\nn);
for(i=l;i<5;i++)/*以下为三重循环*/for(j=l;
(1);j++)//B
for(k=1;k<5;
(2))//A
{if(i!
=k&&(3)&&i!
=k)/*C确保i、j、k三位互不相同*/printf(“%d(4)%d\n",i,i,k);}//B
}
【供选择的答案】
(DA.j=l
B.j<5
C.j<4D.j=0
(2)A.k++
B.k
C.k=0D.k-
(3)A.i=j
B.else
C.i!
=jD.i=k
(4)A.%c
B.%d
C.%sD.%o
12.猴子第一天摘下许多个桃子,
当即吃了一半,还不过瘾,又多吃了一个,第二天早
上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,只剩下一个桃子了。
求第一天共摘了多少。
#includeintmain()(intday,xl,x2;
day=9;
x2=⑸;//Alwhile(day>0)
{(6);/*A.xl=(x2+l)*2第1天的桃子数是第2天桃子数加1后的2倍*/x2=xl;
(7);}//B.day-
printf("thetotalis%d\nn,(8));/B.x2return0;}/
【供选择的答案】
(5)A.1B.OC.2D.9
(6)A.xl=(x2+l)*2;B.x2=(xl+l)*2;C.xl=x2*2;D.x2=xl*2;
(7)A.day+1B.day—C.day++D.day-1
(8)A.xlB.x2C.dayD.x2+xl
13.功能:
计算100至1000之间有多少个数其各位数字之和是5【程序】
#includeintmain()
(inti,s,k,count=0;
for(i=100;i<=1000;i++)
{s=0;
(9);//A.k=iwhile(k)
(s=(10);//D.s+k%10
k=k/10;}
if((11)〃C.s!
=5
continue;
else
count++;}
printf("%d",(12):
//A.count
return0;}
【供选择的答案】
(9)A.k=i
B.k=0C.k=1
D.k=100
(10)A.s+k*10
B.s*k%10
C・s夫k*
D.s+k%10
(11)A.s=5
B.s!
=10C.s!
=5
D.s=10
(12)A.count
B.kC.sD.i
14.程序读入20个整数,统计非负数个数,并计算非负数之和.
#include
intmain()
(inti,s,count,n=20;
inta[20];
s=count=0;
for(i=0;i<20;i++)
scant("%d",&a[i]);
for(i=0;i<20;i++)
{if(a[i]<0)
continue;
s+=a[i];
count++;}
printf("s=%dcount=%d\n",s,count);
return0;}
15.功能:
判断一个数是否是素数
运行事例:
Pleaseinputn(n>l):
13
Yes
#include
#include
intmain()
(intnJ;
printf("Pleaseinputn(n>l):
\n");
scanf("%d",&n);
for(i=2;(5);i++)//D.i<=sqrt(n)
if((6))(7);//(6)C.n%i==0(7)A.break
if(i>sqrt(n))
printf(,,Yes\n");
else
printf("No\n");
return0;)
【供选择的答案】
(5)A.i>=sqrt(n)B.i>nC.i<=nD.i<=sqrt(n)
(6)A.n%i=0B.i%n==0C.n%i==0D.i%n=0
(7)A.breakB.return0C.n=iD.i=n
(8)A.i>=sqrt(n)B.isqrt(n)D.i<=sqrt(n)
三、程序编写
1.编写一个程序,输出所有的水仙花数。
若一个三位数等于其各位上数字的立方和,则称这个三位数为水仙花数。
例如,153是一个水仙花数,因为153=「+53+33。
#include
intmain()
{
intn,i,j,k;
printf("Output:
\n");
for(n=100;n<1000;n++)
(
i=n%10;/*个位*/
j=(n/10)%10;/*十位*/
k=n/100;/*百位*/
if(n==i*i*i+j*j*j+k*k*k)
printf(”%d\n”,n);
)
return0;
}
2.编写一个程序,输入两个整数,用辗转相除法计算其最大公约数和最小公倍数。
#include
intmain()
{inti,m,n,t,P,k;
printf("Pleaseinput:
");
scant("%d,%d",&m,&n);
if(m{t=n;
n=m;
m=t;}
p=m*n;
while(n!
=0)/*余数不为0,继续相除,直到余数为0*/
(i=m%n;
m=n;
n=i;}
k=p/m;
printf("%d,%d\n",m,k);
return0;
}
3.编写一个程序,计算s=l!
+2!
+3!
+—+n!
o其中n由输入决定。
#include
intmain()
t=l;
sum=0;
printf("Pleaseinput:
n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
(
t=t*i;
sum=sum+1;
)
printf("l!
+2!
+...+%d!
=%d\n",n,sum);
return0;
}
4.编写一个程序,计算$=1—4+?
—!
+|+".+上。
其中m由输出决定。
2345m
#include
intmain()
(inti,m;
doublesum=0,k=1;
printf("Pleaseinput:
m=");
scanf(,&m);
for(i=1;i<=m;i++)
(sum=sum+k/i;
k=-k;
)
printf("sum=%4.2f\n",sum);
return0;
)
5.超市节日蓝莓优惠促销活动,购买数量W1公斤,50元/公斤;1斤〈购买数量W2公斤,45元/公斤;购买数量33公斤,40元/公斤。
利用if……elseif语句编写一个程序,输入龙虾的数量以及顾客的付款数,显示出龙虾的数量、应付款数以及找给顾客的钱数。
当输入数量以及顾客的付款数不合要求时,通知用户"DataError!
",结束程序。
#include
intmain()
{
floatzl,je,yfk;
printf("请输入重量(公斤):
");
scanf("%f",&zl);
printf("\n");
if(zl<=l)
je=zl*50;
elseif(zl<=2)
je=zl*45;
else
je=zl*40;
printf(”您购买蓝莓重量:
%.lf公斤\n",zl);
printfC您应付金额为:
%.lf元\n”,je);
printf("\n");
printff"顾客所付金额:
");
scanf(”%f”,&yfk);
if(yfk(
printf("DataError!
\n");
return0;
}
printf("应找您:
%.2f元\n",yfk-je);
return0;
}
6.从键盘上输入10个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩。
#include
intmain()
(intscore[10],n=0,i;
floatsum=0.0,avg;
printf("pleasrent