湖南省等级考试编程题参考答案.docx
《湖南省等级考试编程题参考答案.docx》由会员分享,可在线阅读,更多相关《湖南省等级考试编程题参考答案.docx(43页珍藏版)》请在冰豆网上搜索。
湖南省等级考试编程题参考答案
湖南省等级考试编程题参考答案
1.编程序求出1-200以内的能被7整除的数的平方和.377986
#include
#include
voidmain()
{longintm,n,s=0;
for(m=1;m<=200;m++)
if(m%7==0)
s=s+m*m;
printf("s=%d\n",s);}
2.编程序求出1~100所有整数的平方和并输出结果.338350
#include
#include
voidmain()
{longintm,s=0;
for(m=1;m<=100;m++)
s=s+m*m;
printf("s=%ld\n",s);}
3.编程序求1~99的平方根的和并输出结果.(保留小数点两位).661.46
#include
#include
voidmain()
{intm;floats=0.0;
for(m=1;m<=99;m++)
s=s+sqrt(m);
printf("s=%.2f\n",s);}
4.编程序求出1到5000之间的能被5整除的前若干个偶数之和,当和大于500时程序退出.550
#include
#include
voidmain()
{intm,s=0;
for(m=1;m<=5000;m++)
{if(m%5==0&&m%2==0)
s=s+m;
if(s>=500)break;}
printf("s=%d\n",s);}
5.编程序求在3000以内被17或者23整除的正整数数的个数.299
#include
#include
voidmain()
{intm,s=0;
for(m=1;m<=3000;m++)
{if(m%17==0||m%23==0)
s=s+1;}
printf("s=%d\n",s);}
6.编写程序,求在四位数的奇数中,所有各位数字之和是25的倍数的数的和.1298515
#include
#include
voidmain()
{longintm,a,b,c,d,s=0;
for(m=1000;m<=9999;m++)
{a=m/1000;b=m%1000/100;c=m%100/10;d=m%10;
if(m%2!
=0&&(a+b+c+d)%25==0)
s=s+m;}
printf("s=%ld\n",s);}
7.编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数.110
#include
#include
voidmain()
{longintm,a,b,c,s=0;
for(m=1000;m<=9999;m++)
{a=m/1000;b=m%1000/100;c=m%100/10;
if(m%8==0&&a+b==b+c)
s=s+1;}
printf("s=%ld\n",s);}
8.编写程序,求在四位数的偶数中,所有各位数字之和是30的倍数的数的和.288840
#include
#include
voidmain()
{longintm,a,b,c,d,s=0;
for(m=1000;m<=9999;m++)
{a=m/1000;b=m%1000/100;c=m%100/10;d=m%10;
if(m%2==0&&(a+b+c+d)%30==0)
s=s+m;}
printf("s=%ld\n",s);}
9.编程序求出100到200之间同时满足除3余2和除5余3条件的数的个数.6
#include
#include
voidmain()
{intm,s=0;
for(m=100;m<=200;m++)
{if(m%3==2&&m%5==3)
s=s+1;}
printf("s=%d\n",s);}
10.求[1,5000]之间能同时被3和7整除的数的个数.238
#include
#include
voidmain()
{intm,s=0;
for(m=1;m<=5000;m++)
{if(m%3==0&&m%7==0)
s=s+1;}
printf("s=%d\n",s);}
11.求[1,1000]之间能被3整除,且至少有一位上的数是5的所有数之和.46509
#include
#include
voidmain()
{longintm,s=0;
for(m=1;m<1000;m++)
{if(m%3==0&&(m%1000/100==5||m%100/10==5||m%10==5))
s=s+m;}
printf("s=%ld\n",s);}
12.编写程序,求所有符合算式ij*ji=1300的最小数ij(即i*10+j).其中i,j是1~9之间的一位整数.25
#include
#include
voidmain()
{intm,n,min=99;
for(m=1;m<10;m++)
for(n=1;n<10;n++)
if((m*10+n)*(n*10+m)==1300)
if(min>(m*10+n))
min=(m*10+n);
printf("min=%d\n",min);}
13.编写程序,求共有几组i,j,k符合算式ijk+kji=1333,其中i,j,k是0~9之间的一位整数.6
#include
#include
voidmain()
{intm,n,x,s=0;
for(m=0;m<10;m++)
for(n=0;n<10;n++)
for(x=0;x<10;x++)
if((m*100+n*10+x)+(x*100+n*10+m)==1333)
s=s+1;
printf("s=%d\n",s);}
14.程序,计算在0至99的范围内有多少个数,其每位数的乘积小于等于每位数的和.37
#include
#include
voidmain()
{intm,n,x,s=0;
for(m=0;m<100;m++)
{n=m/10;x=m%10;
if(n*x<=n+x)
s=s+1;}
printf("s=%d\n",s);}
15.统计[100,10000]之间有多少个这样的整数,其各位数字之和能被7整除.1408
#include
#include
voidmain()
{intm,a,b,c,d,s=0;
for(m=100;m<10000;m++)
{a=m/1000;b=m%1000/100;c=m%100/10;d=m%10;
if((a+b+c+d)%7==0)
s=s+1;}
printf("s=%d\n",s);}
16.编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和.161095
#include
#include
voidmain()
{longintm,a,b,c,d,s=0;
for(m=100;m<10000;m++)
{a=m/1000;b=m%1000/100;c=m%100/10;d=m%10;
if((a*b*c*d)%125==0&&m%2!
=0&&a*b*c*d!
=0)
s=s+m;}
printf("s=%ld\n",s);}
17.设某四位数的各位数字的平方和为100,且该数能被3整除.求有多少个这样的四位数.23
#include
#include
voidmain()
{longintm,a,b,c,d,s=0;
for(m=100;m<10000;m++)
{a=m/1000;b=m%1000/100;c=m%100/10;d=m%10;
if(a*a+b*b+c*c+d*d==100&&m%3==0)
s=s+1;}
printf("s=%ld\n",s);}
18.有一个三位数满足下列条件:
(1)此三位数的三位数字各不相同;
(2)此三位数等于它的各位数字的立方和.试求这种三位数共有多少个.4
#include
#include
voidmain()
{longintm,a,b,c,s=0;
for(m=100;m<1000;m++)
{a=m/100;b=m%100/10;c=m%10;
if((a*a*a+b*b*b+c*c*c)==m&&a!
=b&&b!
=c&&a!
=c)
s=s+1;}
printf("s=%ld\n",s);}
19.所谓回文数是从左至右与从右至左读起来都是一样的数字,如:
121是一个回文数.编写程序,求出100―900之间的所有回文数的个数.80
#include
#include
voidmain()
{longintm,a,c,s=0;
for(m=100;m<901;m++)
{a=m/100;c=m%10;
if(a==c)
s=s+1;}
printf("s=%ld\n",s);}
20编程序求出2+4+8+16+32+…这样的数之和.如果累加数大于500时,则程序终止并输出结果.510
#include
#include
voidmain()
{longintm=2,s=0;
while(s<=500)
{s=s+m;m=2*m;}
printf("s=%ld\n",s);}
21.编写程序,求在10~1000之间所有能被4除余3,被7除余5,被9除余2的数之和.1700
#include
#include
voidmain()
{longintm=10,s=0;
while(m<=1000)
{if(m%4==3&&m%7==5&&m%9==2)
s=s+m;m=m+1;}
printf("s=%ld\n",s);}
22.求[351,432]之间所有既不能被3整除,又不能被8整除的正整数的个数..47
#include
#include
voidmain()
{longintm=351,s=0;
while(m<=432)
{if(m%3!
=0&&m%8!
=0)
s=s+1;m=m+1;}
printf("s=%ld\n",s);}
23.编写程序,计算1000以内有多少个这样的数,其个位数为6且该数能被9整除.11
#include
#include
voidmain()
{longintm=1,s=0;
while(m<=1000)
{if(m%9==0&&m%10==6)
s=s+1;m=m+1;}
printf("s=%ld\n",s);}
24.编程序求出1~100所有整数的立方和并输出结果.25502500
#include
#include
voidmain()
{longintm=1,s=0;
while(m<=100)
{s=s+m*m*m;m=m+1;}
printf("s=%ld\n",s);}
25.设有十进制数字a,b,c,d和e,它们满足下列式子:
abcd*e=bcde(a不等于0,e不等于0或1),求满足上述条件的最大四位数abcd的值.1999
#include
#include
voidmain()
{inta,b,c,d,e,max=0;
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=2;e<10;e++)
{if((a*1000+b*100+c*10+d)*e==(b*1000+c*100+d*10+e))
if(max<(a*1000+b*100+c*10+d))max=a*1000+b*100+c*10+d;}
printf("max=%d\n",max);}
26.设某四位数的各位数字的平方和等于100,问共有多少个这种四位数.49
#include
#include
voidmain()
{longinti,a,b,c,d,e,s=0;
for(i=1000;i<10000;i++)
{a=i/1000;b=i%1000/100;c=i%100/10;d=i%10;
e=a*a+b*b+c*c+d*d;
if(e==100)
s++;}
printf("s=%d\n",s);}
27.设有6个十进制数字a,b,c,d,f,e,求满足abcdf×e=fdcba条件的五位数abcdf(a≠0,e≠0,e≠1)的个数.2
#include
#include
voidmain()
{longinti,a,b,c,d,e,f,s=0;
longinty,m;
for(i=10000;i<100000;i++)
for(e=2;e<10;e++)
{a=i/10000;b=i%10000/1000;c=i%1000/100;d=i%100/10;f=i%10;
y=f*10000+d*1000+c*10+b*10+a;
m=i*e;
if(m==y)
{s++;
printf("%ld%ld%d\n",y,m,e);}}
printf("s=%d\n",s);}
28.用一元纸币兑换一分,两分和五分的硬币,要求兑换硬币的总数为50枚,问共有多少种换法(注:
在兑换中一分,两分或五分的硬币数可以为0枚).13
#include
voidmain()
{inta,b,c,n=0;
for(a=0;a<=100;a++)
for(b=0;b<=50;b++)
for(c=0;c<=20;c++)
if(a+b+c==50&&(a+2*b+5*c)==100)
n++;
printf("n=%d\n",n);}
29.百钱百鸡问题.用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,雏鸡三只一钱,编程计算共有几种买法(要求每种鸡至少要买1只).3
#include
voidmain()
{inta,b,c,n=0;
for(a=1;a<=100;a++)
for(b=1;b<=35;b++)
for(c=1;c<=100;c++)
if(a+b+c==100&&(5*a+3*b+c/3)==100&&c%3==0)
n++;
printf("n=%d\n",n);}
30.马克思曾经做过这样一道趣味数学题:
有30个人在一家小饭店里用餐,其中有男人,女人和小孩,每个男人花了3先令,每个女人花了2先令,每个小孩花了1先令,共花去50先令.如果要求男人,女人和小孩都有人参与,试求有多少种方案分配男人,女人和小孩的人数.9
#include
voidmain()
{inta,b,c,n=0;
for(a=1;a<=30;a++)
for(b=1;b<=30;b++)
for(c=1;c<=30;c++)
if(a+b+c==30&&(3*a+2*b+c)==50)
n++;
printf("n=%d\n",n);}
31.把一张一元钞票,换成一分,二分和五分硬币,每种至少8枚,问有多少种方案.80
#include
voidmain()
{inta,b,c,n=0;
for(a=8;a<=100;a++)
for(b=8;b<=100;b++)
for(c=8;c<=100;c++)
if((a+2*b+5*c)==100)
n++;
printf("n=%d\n",n);}
32."水仙花数"是指这样的数,其各位数字的立方和等于该数本身,如:
153=1^3+5^3+3^3.编写程序求100至400的范围内有多少个水仙花数.3
#include
voidmain()
{inta,b,c,d,n=0;
for(a=100;a<=400;a++)
{b=a/100;c=a%100/10;d=a%10;
if(b*b*b+c*c*c+d*d*d==a)
n++;}
printf("n=%d\n",n);}
★33.一个数出现在该数的平方数的右边,称这个数为"同构数".例如,5出现在平方数25的右边,25出现在平方数625的右边,则5,25都是"同构数".找出1到1000之间的所有"同构数"的个数.7
#include
voidmain()
{intx,n=0;
for(x=1;x<=1000;x++)
if(x<10&&x*x%10==x)
n++;
elseif(x>=10&&x<100&&x*x%100==x)
n++;
elseif(x>=100&&x<1000&&x*x%1000==x)
n++;
printf("n=%d\n",n);}
★34.若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是"四位双平方数".例如:
由于7396=86^2,且7+3+9+6=25=5^2,则称7396是"四位双平方数".求所有"四位双平方数"的个数.17
#include
#include
voidmain()
{intx,y,a,b,c,d,n=0;
floatm,z;
for(x=1000;x<=9999;x++)
{a=x/1000;b=x%1000/100;
c=x%100/10;d=x%10;y=a+b+c+d;
m=sqrt(x);z=sqrt(y);
if(m==sqrt(x)&&z==sqrt(y))
n++;}
printf("n=%d\n",n);}
★35.一个数如果刚好与它所有的因子之和相等,则称该数为一个"完数",如:
6=1+2+3,则6就是一个完数.求出200到500之间所有的完数之和.496
#include
voidmain()
{ints=0,x,y,ss;
floatm;
for(x=200;x<=500;x++)
{ss=0;
for(y=1;yif(x%y==0)
ss=ss+y;
if(x==ss)
s=s+x;}
printf("wanshusum:
%d\n",s);}
36.一个数如果恰好等于它的所有真因子之和,这个数就称为"完数".例如,6的真因子为1,2,3,而6=1+2+3,因此,6是"完数".求[1,1000]之间的最大完数.496
#include
voidmain()
{intx,y,ss,max=0;
for(x=1;x<=1000;x++)
{ss=0;
for(y=1;yif(x%y==0)
ss=ss+y;
if(x==ss)
if(maxmax=x;}
printf("max:
%d\n",max);}
★37.若某整数N的所有因子之和等于N的倍数,则N称为多因子完备数,如数28,其因子之和1+2+4+7+14+28=56=2*28,28是多因子完备数.求[1,500]之间有多少个多因子完备数.5
#include
voidmain()
{intx,y,ss,n=0;
for(x=1;x<=500;x++)
{ss=0;
for(y=1;y<=x;y++)
if(x%y==0)
ss=ss+y;
if(ss%x==0)
n++;}
printf("n:
%d\n",n);}
38.所谓素数是指这样的自然数,除1和它本身外不再有其它因子.编写程序,计算从1981年开始到3000年为止,我们将遇到多少个素数年号.131
#include
#include
voidmain()
{intx,y,n=0;floatss;
for(x=1981;x<=3000;x++)
{ss=sqrt(x);
for(y=2;y<=ss;y++)
if(x%y==0)
break;
if(y>ss)
n++;}
printf("n:
%d\n",n);}
★39.编写程序,求出9到499之间的所有非偶数非素数的数之和.40965
#include
#include
voidmain()
{longintx,y,n=0;floatss;
for(x=9;x<=499;x++)
{ss=sqrt(x);
for(y=2;y<=ss;y++)
if(x%y==0)
break;
if(y<=ss&&x%2!
=0)
n=n+x;}
printf("n:
%ld\n",n);}_
40求[500,1999]之间的素数的个数,且要求该素数十位数字为7.22
#include
#include
voidmain()
{longintx,y,n=0;floatss;
for(x=500;x<=1999;x++)
{ss=sqrt(x);
for(y=2;y<=ss;y++)
if(x%y==0)
break;
if(y>ss&&x%100/10==7)
n++;}
printf("n:
%ld\n",n);}_
41.求[666,777]范围内素数的个数..16
#include
#include
voidmain()
{longintx,y,n=0;floatss;
for