C语言期末考试编程题
- 格式:doc
- 大小:33.00 KB
- 文档页数:31
1.打印出所有的“水仙花数”,并按照一行5个的格式输出。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3。
#include
voidmain()
{
inta,b,c,s,i=0;
for(s=100;s<1000;s++)
{
c=s%10;
b=s/10%10; a=s/100;
if(s==a*a*a+b*b*b+c*c*c)
{
printf("%d\t",s);
++i;
if(i%5==0)
printf("\n");
}
}
}
2.求1+2!+3!+...+20!的和
#include
voidmain()
{
doublefact=1.0,sum=0.0; inti,j;
for(i=1;i<=20;i++)
{
for(j=1;j<=i;j++)
fact*=j;
sum+=fact;
fact=1;
}
printf("%.0f\n",sum);
}
3.输入一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#include
#include voidmain()
{
longnum;
inta,b,c,d;
printf("Pleaseinputthenumber:");
scanf("%d",&num);
if(num<=9999||num>=100000)
{
printf("%Thenumberiserror!\n");
exit(0);
}
a=num/10000;
b=num/1000%10;
c=num/10%10; d=num%10;
if(a==d&&b==c)
printf("\nYes,the%ldispalindrome!\n",num);
else
printf("\nNo,the%ldisnotpalindrome!\n",num);
}
4.求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并并按照一行5个的格式输出。
#include
voidmain()
{ intnum,i=0;
for(num=1;num<=1000;num++)
if(((num%7||num%11)==1)&&((num%7&&num%11)==0))
{
printf("%d\t",num);
++i;
if(i%5==0)
printf("\n");
}
}
5.编程列出200以内所有的素数,按照一行10个的格式输出,并求出所有素数的平均值,
#include #include
voidmain()
{
inti,j,k=0,sum=0,avg=0;
for(i=2;i<200;i++)
{
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
break;
if(j>sqrt(i))
{
printf("%d\t",i);
++k;
sum+=i;
if(k%10==0)printf("\n"); }
}
avg=sum/k;
printf("\nTheaverageis%d\n",avg);
}
6、编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1+1/3+1/5...+1/n
#include
voidmain()
{
voidodd(intn);
voideven(intn); intn;
printf("Pleaseinputthenumber:");
scanf("%d",&n);
if(n%2)
odd(n);
else
even(n);
}
voidodd(intn)
{
floatsum=0.0;
floatj;
inti;
for(i=1;i<=n;i+=2) {
j=1.0/i;
sum+=j;
}
printf("%f\n",sum);
}
voideven(intn)
{
floatsum=0.0;
inti;
floatj;
if(n==0)
printf("%f\n",sum);
else
{ for(i=2;i<=n;i+=2)
{
j=1.0/i;
sum+=j;
}
printf("%f\n",sum);
}
}
7、 已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有
组合。
#include
voidmain()
{ inta,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=1;c<=9;c++)
if((100*a+10*b+c+100*c+10*b+a)==1333)
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
8、用户输入12个0-100之间的整数,统计出小于60,60到79,80到100三个范围的整数各有多少个?
#include
#include
voidmain() {
inti,j,k,n,num;
i=j=k=0;
printf("Pleaseinputthe12numberswith0~100:");
for(n=1;n<=12;n++)
{
scanf("%d",&num);
if(!(num>=0&&num<=100))exit(0);
if(num<60)++i;
elseif(num<80)++j;
else++k;
}
printf("\nThereare%dnumberslessthan60,%dnumbersbetween60and79,%dnumbersbetween80and100.\n",i,j,k);
}
9、求这样一个三位数并输出该数字,该三位数等于其每位数字的阶乘之和。
即: abc=a!+b!+c!
#include
voidmain()
{
inta,b,c,num;
ints(int);
for(num=100;num<1000;num++)
{
a=num/100; b=num/10%10;
c=num%10;
if(num==s(a)+s(b)+s(c))
{
printf("Thenumberis%d\n",num);
break;
}
}
}
s(intn)
{
inti,sum=1;
for(i=1;i<=n;i++)
sum*=i;
returnsum; }
10、猜数游戏:由用户随机输入一个1位正整数数让人来猜,只能猜5次,如果人猜对了,则在屏幕上显示“Youaresoclever”,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止或者5次都猜不对给出提示“GameOver”。
#include
#include
voidmain()
{
intnum,i,n;
printf("Pleaseinputthenumberwith0~9forguessing:"); scanf("%d",&num);
system("cls");
if(num<0||num>9)exit(0);
for(i=1;i<=5;i++)
{
printf("\nPleaseinputthenumberyouguess:");
scanf("%d",&n);
if(num==n)
{
printf("\nYouaresoclever!\n");
break;
}
elseif(n
{ printf("\nThenumberyouinputislittle,goonplease!Youhave%dtimesleft!\n",5-i);
continue;
}
else
{
printf("\nThenumberyouinputislarge,goonplease!Youhave%dtimesleft!\n",5-i);
continue;
}
}
if(i>5)printf("GameOver!\n");
}