湖南省计算机二级考试程序设计题目精选.docx
《湖南省计算机二级考试程序设计题目精选.docx》由会员分享,可在线阅读,更多相关《湖南省计算机二级考试程序设计题目精选.docx(74页珍藏版)》请在冰豆网上搜索。
湖南省计算机二级考试程序设计题目精选
TubroCprogrammingforHNCRE2005
1题:
100个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,每3个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的解)?
程序:
main()
{inta,b,c;
for(a=1;a<=20;a++)
for(b=1;b<=33;b++)
{c=100—a—b;
if((20*a+33*b+c/3)==100)
printf(“%d,%d,%d\n”,a,b,c);
}
getch();
}
答案:
6种:
3,20,77;
4,18,78;
8,11,81;
11,6,83;
12,4,84.
2题:
50个小学生按1至50序号顺时针围成一圈,做出局游戏,老师站在圈外逆时针从最后一个人数起,每数到5时,这人从圈里出来,继续数1,2,3,4,5,数到第5个学生时,他就出局,已出局的位置不再参加记数,直至所有的学生出局为止,问最后一个出局的学生序号是多少号?
程序:
main()
{
inti,k,sum,l,t=0;
inta[50];
clrscr();
for(i=1;i<=50;i++)
a[i]=1;
for(k=1,sum=0,l=0;k<=50;k++)
{
for(i=50;i>0;i--)
{
sum+=a[i];
if(sum==5){sum=0;l++;a[i]=0;}
if(l==49){t=1;break;}
}
if(t==1)break;
}
for(i=1;i<=50;i++){
if(a[i]==1)printf("%d",i);}
getch();
}
答案:
32号
3题:
50元兑换成5元,2元和1元的计算方法有多少种?
程序:
main()
{intx,f,t,n;
x=0;f=0;
while(f<=10)
{t=0;while(t<=25)
{n=50—f*5—T*2;
if(n>=o)x++;
t++:
}
f++;}
printf(“%d”,x);
}
答案:
146
4题:
A、B、C三个正整数,当满足1/A*A+1/B*B=1/C*C关系时,称为倒勾股数。
求职130〈A+B+C〈150的倒勾股数有多少组。
程序:
main()
{
inta,b,c,k;
intcount=0;
clrscr();
for(a=1;a<150;a++)
for(b=1;b<150;b++)
for(c=1;c<150;c++)
{
k=a+b+c;
if((float)1/(a*a)+(float)1/(b*b)==(float)1/(c*c))
if(k>130)
if(k<150)
count++;
}
printf("%d",count);
getch();
}
答案:
0
题目:
5题:
S1=1,S2=1+3,S3=1+3+5,S4=1+3+5+7,……,SN=1+3+5+7+……+(2N-1),N为正整数。
编程求S1+S2+S3+S4+……+SN的值〈20000时的N的最大值。
程序:
func(intn)
{
inti,sum;
sum=0;
for(i=1;i<=n;i++)
sum=sum+2*i-1;
return(sum);
}
main()
{
intsum,a,b,c,i;
i=1;
sum=0;
clrscr();
while(sum<20000)
{
sum=sum+func(i);
if(sum>20000)
break;
i++;
}
printf("%d",i-1);
getch();
}
答案:
38
题目:
6题:
自然数对是指两个自然数的和与差都是平方数,如果8和17的和8+17=25与其差17-8=9都是平方数,则称8和17是自然数对(8,17)。
假定(A,B)与(B,A)是同一个自然数对且假定A〉=B,求所有小于或等于100(即:
A〈=100,B〈=100〉的自然数对中B之和。
程序:
main()
{
inta,b,i,j;
intc=0;
clrscr();
for(a=1;a<=100;a++)
for(b=1;b<=100;b++)
{
if((i*i)==(a+b)&&(j*j)==(a-b)&&(a>=b))
c=c+b;
}
printf("%d",c);
getch();
}
答案:
1440
7题:
把18元钱分成1元、2元禾元的纸币且纸币数共为10张的分法有多少种(注:
在兑换中1元、2元、5元的纸币数可以为0)?
解:
main()
{inta,b,c,n;
n=0;
for(a=0;a<=18;a++)
for(b=0;b<=9;b++)
for(c=0;c<=3;c++)
if(a+b+c==10&&a+2*b+5*c==18)
n++;
printf(“%d”,n);
}
结果:
3
8题:
把一张1元钞票,换成1分、2分和5分硬币,每种至少11枚,问有多少种方法?
解:
main()
{intx,y,z,n;
n=0;
for(x=11;x<=33;x++)
for(y=11;y<=22;y++)
for(z=11;z<=15;z++)
if(x+2*y+5*z==100)
n++;
printf(“%d”,n);
}
结果:
13
9题:
找满足以下条件:
X^2+Y^2+Z^2=25^2且X+Y+Z之值最大的三个正整数X,Y,Z,求X+Y+Z之值。
程序:
#include
main()
{intx,y,z,ssum,max=0;
for(x=1;x<=24;x++)
for(y=1;y<=24;y++)
for(z=1;z<=24;z++)
if(x*x+y*y+z*z==25*25)
{sum=x+y+z;
if(maxprintf(“max=%d\n”,max);
}
答案:
43
10题:
编程求区间[500,2500]中按递增顺序第25个素数。
程序:
main()
{
intx,y,t,n;
n=0;
for(x=500;x<=2500;x++)
{
t=0;
for(y=2;y<=x/2;y++)
if(x%y==0)t=1;
if(t==0)n++
}
if(n>=25)
break;
printf(“x=%d”,x);
getch;
}
Key:
659
11题:
编程求取:
[121,140]之间的弦数的个数(若某正数的平方等于另两个正整数平方之各,则称该数为弦数。
例如:
3^2+4^2=5^2,因此5是弦数)。
程序:
main()
{
intx,y,z,n;
n=0;
for(x=121;x<=140;x++)
for(y=121;y<=140;y++)
for(z=121;z<=140;z++)
{
if(x*x==y*y+z*z)
n++;
}
printf(“n=%d”,n);
getch();
}
Key:
n=0
12题:
编程求取:
S=1/2+2/3+3/5+5/8+……的前30项的和(注:
该级数从第二项开始,其分子是前一项的分母,其分母是前一项的分子与分母的和)。
要求:
按四舍五入的方式精确到小数点后第二位。
程序:
main()
{
inta,b,c,n,s;
for(n=1;n<=30;n++)
{
s=s+a/b;
c=a;b=b+a;b=c;
}
printf(“s=%f”,s);
getch();
}
Key:
18.46;
13题:
编程求取:
从6开始的前6个同构数的各(若某数与本身平方数的低位部分分别相等,则称之为同构数,如6,其平方数为36,则6为一个同构数)。
程序:
main()
{
longn,m,k,s,sum;
sum=0;
m=0;
for(n=6;;n++)
{
if(n<10)k=10;
elseif(n<100)k=100;
elseif(n<1000)k=1000;
elsek=10000;
s=n*n;
s=s–n;
if(s%k==0)
{
sum+=n;
m++;
}
if(m<5)break;
}
printf(“%ld”,sum);
getch();
}
答案:
10484。
14题:
编程序求1~108所有整数的平方和并输出结果。
程序:
main()
{
longn,sum;
sum=0;
for(n=1;n<=108;n++)
sum+=n*n;
printf(“1^2+2^2+3^2+…+108^2=%ld”,sum);
getch();
}
答案:
435754。
15题:
编程序求1~115的平方根的和并输出结果(保留小数点两位)。
程序:
#include“math.h”
main()
{
intn;
doublesum;
sum=0.0;
for(n=1;n<=115;n++)
sum+=sqrt(n);
printf(“Thissumis:
%.2f”,sum);
getch();
}
答案:
827.32
16.题:
编程序求1~600能被11整除的个数。
程序:
main()
{
inta,n;
n=0;
for(a=1;a<=600;a++)
if(a%11==0)n++;
printf(“n=%d\n”,n);
getch();
}
答案:
n=54
17题:
编程序求1+3+5+7+9+…这样的数的和。
如果累加数大于1000是,则程序终止并输出结果。
程序:
main()
{
inti=1,sum=0;
while(sum<=1000)
{
sum=sum+(2*i-1);
i++;
}
printf(“sum=%d\n”,sum);
getch();
}
答案:
sum=1024
18题:
编程序求出100到200之间同时满足除3余2和除5余3条件的数的个数。
程序:
main()
{
inta,n;
n=0;
for(a=100;a<=200;a++)
if(a%3==2&&a%5==3)n++;
printf(“n=%d\n”,n);
getch();
}
答案:
n=6
19题:
编程求出1~100以内能被3整除的数的平方和。
程序:
main()
{
intn,m;
longs=0;
for(n=1;n<=100;n++)
{
if(n%3==0)
m=n*n;
elsem=0;
s=s+m;
}
printf(“s=%d”,s);
getch();
}
答案:
112761
20题:
编程求出1~6000以内能被3或被5整除数的个数。
程序:
main()
{
intx;
inta=0,b=0,c=0,d;
for(x=1;x<=6000;x++)
{
if(x%3==0)
a++;
if(x%5==0)
b++;
if(x%3==0&&x%5==0)
c++;
{
d=a+b-c;
}
}
printf(“d=%d”,d);
getch();
}
答案:
2800
21题:
编程求出1~300之间同时满足除3余2和除5余3条件的个数。
程序:
main()
{
intx;
inta=0;
for(x=1;x<=300;x++)
{
if(x%3==2&&x%5==3)
a++;
}
printf(“a=%d”,a);
getch();;
}
答案:
20
22题:
编程序求出S=1~130所有整数的立方和并输出结果。
程序:
main()
{
unsignedlonginta,j,sum=0;
for(a=1;a<=130;a++)
{
j=a*a*a;
sum=sum+j;
}
printf(“%lu\n”,sum);
getch();
}
输出结果:
77505255
23题:
编程序求在3000以内被17或者23整除的正整数数的个数。
程序:
main()
{
inta,sum=0;
for(a=1;a<=3000;a++)
{
if(a%17==0||a%23==0)
sum++;
}
printf(“%d\n”,sum);
getch();
}
输出结果:
299
24题:
编写程序,计算1000以内有多少个这样的数,该数既能被6整除又能被8整除。
程序:
main()
{
inta,sum=0;
for(a=1;a<=1000;a++)
{
if(a%6==0&&a%8==0)
sum++;
}
printf(“%d\n”,sum);
getch();
}
输出结果:
41
25题:
编写程序,计算1000以内有多少个这样的数,其十位是6且能被8整除。
程序:
main()
{
inta,b,k,n;
n=0;
for(k=0;k<=1000;k++)
{a=k/100;
if((k-a*100)/10==6&&k%8==0)
n=n+1;}
printf("n=%d",n);
}
答案:
15
26题:
编写程序,计算在0至50的范围内有多少个娄和,其每位数的乘积大于每位的和。
程序:
main()
{
inta,b,k,n;
n=0;
for(k=0;k<=1000;k++)
{a=k/100;
if((k-a*100)/10==6&&k%8==0)
n=n+1;}
printf("n=%d",n);
}
答案:
23
27题:
编写程序,求共有几组i,j,k符合算式ijk+kji=1534,其中i,j,k是[0,9]之间的一个整数。
#include
main()
{
inti,j,k,n=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=1;k<=9;k++)
if(101*i+20*j+101*k==1534)n++;
printf(“n=%d”,n);
}
答案:
n=5
28题:
编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是11的倍数,且A=B+C,即第二位数加上第三位数等于第一位数。
#include
main()
{
inti,j,k,l,n=0;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
for(l=0;l<=9;l++)
if((1000*i+100*j+10*k+l)%11==0&&j+k==i)n++;
printf(“n=%d”,n);
}
答案:
n=49
29题:
编写程序,求四位数的奇数中,每位数字之和是15的倍数的数的和。
程序:
main()
{inta,b,c,d,e,f,m;
longsum=0;
for(m=1000;m<10000;m=m+2)
{d=m%10;
e=(m-d)/10;
c=e%10;
f=(e-c)/10;
b=f%10;
a=((f-b)/10)%10;
if((a+b+c+d)%15==0)
sum=sum+m;
}
printf(“sum=%d”,sum);
getch();
}
答案:
1533459
30题:
编写程序,求四位数的奇数中,所有各位数字之积(且不为0)是125的倍数的数的和。
程序:
main()
{inta,b,c,d,e,f,m;
longsum=0;
for(m=1000;m<10000;m=m+2)
{d=m%10;
e=(m-d)/10;
c=e%10;
f=(e-c)/10;
b=f%10;
a=((f-b)/10)%10;
if(a*b*c*d!
=0&&(a*b*c*d)%125==0)
sum=sum+m;
}
printf(“sum=%d”,sum);
getch();
}
答案:
161095
31题:
编写程序,求所有符合算式ij*ji=1300d最大数ij(既i*10+j)。
其中i,j是1~9之间的一位整数。
程序main()
{intI=1,j=1;
for(I=1;I<=9;I++)
for(j=1;j<=9;j++)
{if((I*10+j)*(j*10+i)==1300&&I>j)
printf(“%d\n”,(I*10+j));
}
getch();
}
答案(52)
32题:
编写程序,求一正整数等差数列的前6项的和,该数列前4项之和是26,4项之积是880。
程序main()
{intx=1,y=-4;
for(x=1;x<10;x++)
for(y=-4;y<4;y++)
{if((x*4+6*y)==24&&x*(x+y)*(x+2*y)*(x+3*y)==880)
printf(“%d\n”,(x*6+15*y));
}getch();
}
答案(57)
33题:
编写程序,求一正整数等差数列的前3项的平方和,该数列的前4项之和是26,4项之积是880。
程序main()
{intx=1,y=-4;
for(x=1;x<10;x++)
for(y=-4;y<4;y++)
{if(x*4+6*y==24&&x*(x*+y)*(x+2*y)*(x+3*y)==880)
printf(“%d\n”,(x*x+(x+2*y)*(2*y+x)*(y+x)*(y+x)));
}getch();
}
答案(93)
34题:
编写程序,求在100~1000之间所有能被4除余2,被7除余3,被9除余5的数之和。
main()
{
inta,i,sum=0;
for(a=10;a<=1000;a++)
if(a%4==2&&a%7==3&&a%9==5)
sum=sum+a;
printf("sum=%d\n",sum);
}
答案:
sum=2000
35题:
编写程序,求在四位数的偶数中,所有各位数字之和是30倍数的数的和。
程序:
main()
{
inti,j,k,l,m,s;
s=0;
for(m=1000;m<10000;m++)
{i=m/1000;j=(m%1000)/100;k=(m%100)/10;l=m%10;
if(m%2==0&&(i*j*k*l)%18==0)
s=s+m;
}
printf("%d\n",s);
}
答案:
26696
36题:
编写程序,求在四位数的的偶数中,所有各位数字之积(且不为0)是18的倍数的数的和。
程序:
main()
{
inti,j,k,l,m,s;
s=0;
for(m=1000;m<10000;m++)
{i=m/1000;j=(m%1000)/100;k=(m%100)/10;l=m%10;
if(m%2==0&&(i*j*k*l)%18==0)
s=s+m;
}
printf("%d\n",s);
}
答案:
15284
37题:
求四位的奇数中,所有各位数之和是25倍数的数的和;
main()
{inta;
longb=0;
for(a=1001;a<=9999;a+=2)
if(a/1000%10+a/100%10+a/10%10+a%10==25)
b=b+a;
printf("b=%ld\n",b);
}
答案是1298515
38题:
统计1000到9999之间的所有足以下条件的四为数的个数。
该数是一完全平方数,第1,第2位数之和是10,第3,第4位数之积为18。
Main()
{inta,b,c=0;
for(a=1000;a<=9999;a++)
for(b=33;b<=100;b++)
if(a%10+a/10%10==10&&a/100%10*a/1000%10==18&&b*b==a)
c=c+1;
printf(“c=%d|n”,c);
}
答案是:
0
39题:
篇写程序,统计200~400之间的所有满足三个数字之积42,三个数字之和为12的数的个数。
程序:
main()
{intI,j,k,m,n;
m=0;
for(n=200;n<=400;n++)
{I=n/100;j=(n/10)%10;k=n%10;
if(I+j+k==12&&I*j*k==42)m++;
}
pintf(“%d”,m);
}
结果:
4
40题:
程序,统计1000~9999之间的所有满足以下条件的四位数个数。
该四位数是一个完全平方数,其第1,第3位数字之和为6,第2第4位数之积为24。
程序:
main{}
{intI,j,k,L;
longm,n,p;
m=0;
for(n=1000;n<10000;n++)
for(p=33;p<100;p++)
{I=n/1000;j=(n/100)%10;k=(n/10)%10;L=n%10;
if(I+k==6&&j*L==24&&p*p==m)m++;
}
printf(“%d\n”,m);
}
结果:
1
41题:
当k值为20时,求s的值.
(1^2/(1*3))*(4^2/(3*5))*(6^2/(5*7))…*(2k)^2/((2k-1)(2k+1))(按四舍五入的方式精确到小数点后面第四位)。
程序如下:
main()
{floats;
intm;
s=1.0/(1.0*3);
for(m=2;m<=20;m++)
s=s*4*m*m/((2*m-1)*(2*m+1))
printf(“s=%8.3f”,s);
}
运行结果:
1.388
42题:
当m的值为50时,计算下列公式之值:
1-1/2-1/3-1/4-┄-1/m(求按四舍五入的方式精确到小数点后面第四位)。
程序如下:
makn()
{floatt;
intK;
t=1.0;
for(K=2;K<=50;K++)
t=t–1.0/K;
prkntf(“%8.4f”,t);
}
运行结果:
–2.4992
43题:
求m的值为50时,计算下列公式之值:
t=1+1/(2^2)+1/(3^2)+……+1/(m^2).(按四舍五入的方式精确到小数点后面第四位)
程序:
main()
{
inti;
floatx,y;
for(i=1;i<=50;i++)
{
x=1/(fl