1.题目:
求s=1+(2*2)+(3*3*3)+(4*4*4*4)+...+(9*9*9*9*9*9*9*9*9)的值(要求使用循环实现)。
#include <stdio.h>
void PRINT(long s)
{
FILE *out;
printf("s=%ld\n",s);
if((out=fopen("K:\\24000119\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"s=%ld.ld",s);
fclose(out);
}
void main()
{
int i,j;
long s=0,t;
for(i=1;i<=9;i++)
{
t=1;
for(j=1;j<=i;j++)
t*=i;
s+=t;
}
PRINT(s);
}
2.题目:
已知数列F(n):
当n=1或n=2时F(n)=1
当n>2时F(n)=(F(n-2)+F(n-1))%10000
求该数列前40项的和(要求使用循环实现)。
#include <stdio.h>
void PRINT(long s)
{
FILE *out;
printf("s=%ld\n",s);
if((out=fopen("K:\\24000102\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"s=%ld",s);
fclose(out);
}
void main()
{
int n,a=1,b=1,c;
long s;
s=a+b;
for(n=3;n<=40;n++)
{
c=(a+b)%10000;
a=b;
b=c;
s+=c;
}
PRINT(s);
}
3.题目:
计算2~2011之间所有完数之和。
说明:
(1)一个数如恰好等于它的因子(因子包含1但不包含它本身)之和,这个数称为完数;
(2)如6的因子为1、2和3,因子之和也为6,所以6是完数;
(3)要求使用循环实现。
#include <stdio.h>
void PRINT(long sum)
{
FILE *out;
printf("sum=%ld\n",sum);
if((out=fopen("K:\\24000103\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"sum=%ld",sum);
fclose(out);
}
void main()
{
int i,j;
long sum=0,t;
for(i=2;i<=2011;i++)
{
t=0;
for(j=1;j<=i/2;j++)
{
if(i%j==0)
t+=j;
}
if(t==i)
sum+=i;
}
PRINT(sum);
}
4.题目:
设有正整数a和b,其中:
(1) a<50,b<50;
(2) a-2*b等于7;
(3) a*a+9*b等于2011。
求满足条件的a和b的值(说明:a和b的值唯一)。
#include <stdio.h>
void PRINT(int a,int b)
{
FILE *out;
printf("a=%d,b=%d\n",a,b);
if((out=fopen("K:\\24000104\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"a=%d%%a,b=%d%%b",a,b);
fclose(out);
}
void main()
{
int a,b;
for(a=1;a<=50;a++)
for(b=1;b<=50;b++)
if((a-2*b==7) && (a*a+9*b==2011))
PRINT(a,b);
}
5.
题目:
统计并输出2000年~9999年闰年的个数。符合以下条件之一即为闰年:
(1) 是400的倍数,如2000年;
(2) 是4的倍数但不是100的倍数,如2012年。
#include <stdio.h>
void PRINT(int n)
{
FILE *out;
printf("n=%d\n",n);
if((out=fopen("K:\\24000105\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"n=%dg",n);
fclose(out);
}
void main()
{
int i,n=0;
for(i=2000;i<=9999;i++)
if(i%400==0 || (i%4==0 && i%100!=0))
n++;
PRINT(n);
}
6.题目:
求满足下列条件的三位数之和。条件如下:
(1)各位数字只能从5、6、7、8中选;
(2)各位数字互不相同。
#include <stdio.h>
void PRINT(long s)
{
FILE *out;
printf("s=%ld\n",s);
if((out=fopen("K:\\24000107\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"s=%ld",s);
fclose(out);
}
void main()
{
int a,b,c;
long s=0;
for(a=5;a<=8;a++)
for(b=5;b<=8;
b++)
for(c=5;c<=8;c++)
if(a!=b && b!=c && a!=c)
s=s+a*100+b*10+c;
PRINT(s);
}
7.题目:
求100~999之间的回文素数之和。
说明:
(1)回文素数是一个素数,且从左向右和从右向左读是相同的,如:101,131,181是回文素数;
(2)要求使用循环实现。
#include <stdio.h>
void PRINT(long s)
{
FILE *out;
printf("s=%ld\n",s);
if((out=fopen("K:\\24000108\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"s=%ld",s);
fclose(out);
}
void main()
{
int i,j,k;
long s=0;
for(i=100;i<=999;i++)
{
k=0;
for(j=2;j<=i/2;j++)
{
if(i%j!=0)
k=1;
}
if(k=1 && (i/100==i%10))
s+=i;
}
PRINT(s);
}
8.题目:
[兑换零钱]
计算将200元钱换成1元、5元和10元的零钱(每种零钱都要求有),一共有多少种换法。
#include <stdio.h>
void PRINT(int count)
{
FILE *out;
printf("count=%d\n",count);
if((out=fopen("K:\\24000110\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"count=%d",count);
fclose(out);
}
void main()
{
int i,j,k,count=0;
for(i=1;i<200;i++)
for(j=1;j<40;j++)
for(k=1;k<20;k++)
if(i+5*j+10*k==200)
count++;
PRINT(count);
}
c语言编程小游戏
9.题目:
计算800~2011之间满足以下条件的所有自然数之和。条件如下:
(1)能被7整除;
(2)减1后能被3整除。
#include <stdio.h>
void PRINT(long s)
{
FILE *out;
printf("s=%ld\n",s);
if((out=fopen("K:\\24000111\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"s=%ld",s);
fclose(out);
}
void main()
{
int i;
long s=0;
for(i=800;i<=2011;i++)
if(i%7==0 && (i-1)%3==0)
s+=i;
PRINT(s);
}
10.题目:
计算100~2011之间同时满足下列条件的数之和(要求使用循环实现)。
(1)能被3整除;(2)至少有一位数字是5。
#include <stdio.h>
void PRINT(long sum)
{
FILE *out;
printf("sum=%ld\n",sum);
if((out=fopen("K:\\24000112\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"sum=%lds",sum);
fclose(out);
}
void main()
{
int i;
long sum=0;
for(i=100;i<=2011;i++)
if(i%3==0 && (i%10==5 || i/100==5 || i%100/10==5 || i/100%10==5 || i/1000==5)) 
sum+=i;
PRINT(sum);
}
11.题目:
[三球问题]
若一个口袋中放有12个球,其中有3个红的,3个白的和6个黑的,从中任取8个球,求共有多少种不同的颜搭配。
如:
2个白球和6个黑球;
1个红球、3个白球和4个黑球;
3个红球、2个白球和3个黑球;
等都是满足条件的颜搭配。
#include <stdio.h>
void PRINT(int n)
{
FILE *out;
printf("count=%d\n",n);
if((out=fopen("K:\\24000113\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"count=%dp",n);
fclose(out);
}
void main()
{
int i,j,k,n=0;
for(i=0;i<=3;i++)
for(j=0;j<=3;j++)
for(k=0;k<=6;k++)
if(i+j+k==8)
n++;
PRINT(n);
}
12.题目:
求同时满足下列三个条件的四位数。条件如下:
(1)千位和百位数字相
同;
(2)十位和个位数字相同;
(3)该数是某一个整数的平方。
说明:问题的解唯一。
#include <stdio.h>
#include <math.h>
void PRINT(int n)
{
FILE *out;
printf("n=%d\n",n);
if((out=fopen("K:\\24000118\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"n=%dd%%",n);
fclose(out);
}
void main()
{
int n,i;
for(n=1000;n<=9999;n++)
for(i=1;i<=100;i++)
if((n/1000==n/100%10) && (n%10==n%100/10) && (i*i==n))
PRINT(n);
}
13.题目:
根据下式求s的值(要求使用循环实现)。
s=1002+1013+1024+...+12002
#include <stdio.h>
void PRINT(long s)
{
FILE *out;
printf("s=%ld\n",s);
if((out=fopen("K:\\24000122\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"s=%ld",s);
fclose(out);
}
void main()
{
int i;
long s=0;
for(i=1002;i<=12002;i+=11)
s+=i;
PRINT(s);
}
14.题目:
已知三角形的三条边长分别为a、b和c,且满足下列条件:
(1)边长为小于等于100的正整数;
(2)边长a小于b;
(3)a*a+b*b==c*c。
统计满足上述条件的三角形的个数。
#include <stdio.h>
#include <math.h>
void PRINT(int n)
{
FILE *out;
printf("n=%d\n",n);
if((out=fopen("K:\\24000123\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"n=%d%%d",n);
fclose(out);
}
void main()
{
int a,b,c,n=0;
for(a=1;a<=100;a++)
for(b=1;b<=100;b++)
for(c=1;c<=100;c++)
if(a<b && (a*a+b*b==c*c))
n++;
PRINT(n);
}
17.题目:
[百马百担问题]
有100匹马驮100担货,大马驮4担,中马驮3担,5匹小马驮1担。
问三种马各有几匹?
注意:
(1)大、中、小马都必须有;
(2)问题的解只有一种。
#include <stdio.h>
void PRINT(int a,int b,int c)
{
FILE *out;
printf("big=%d,mid=%d,small=%d\n",a,b,c);
if((out=fopen("K:\\24000148\\RESULT.DAT","w+"))!=NULL)
fprintf(out,"big=%dp,mid=%dp,small=%dp",a,b,c);
fclose(out);
}
void main()
{
int a,b,c;
for(a=1;a<100;a++)
for(b=1;b<100;b++)
{
c=100-a-b;
if(c>=1 && 4*a+3*b+c/5==100)
PRINT(a,b,c);
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。