Tubro C programming for HNCRE 2005
1题:100个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,每3个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的解)?
程序:
main( )
{ int a,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()
{
int i,k,sum,l,t=0;
int a[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( )
{ int x,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()
{
int a,b,c,k;
int count=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(int n)
{
int i,sum;
sum=0;
for(i=1;i<=n;i++)
sum=sum+2*i-1;
return(sum);
}
main()
{
int sum,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()
{
int a,b,i,j;
int c=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()
{int a,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()
{int x,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 <math.h>
main( )
{ int x, 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(max<sum) max=sum;}
printf(“max=%d\n”,max);
}
答案:43
10题:编程求区间[500,2500]中按递增顺序第25个素数。
程序:
main()
{
int x,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()
{
int x,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()
{
int a,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()
{
long n,m,k,s,sum;
sum=0;
m=0;
for(n=6;;n++)
{
if(n<10)k=10;
else if(n<100)k=100;
else if (n<1000)k=1000;
else k=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()
{
long n,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()
{
int n;
double sum;
sum=0.0;
for(n=1;n<=115;n++)
sum+=sqrt(n);
printf(“This sum is :%.2f”,sum);
getch();
}
答案:827.32
16.题:编程序求1~600能被11整除的个数。
程序:main( )
{
int a,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( )
{
int i=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( )
{
int a,n;
n=0;
for (a=100;a<=200;a++)
if (a%3==2&&a%5==3) n++;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论