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,%dn”,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,S4=1+3+5+7
S2=1+3,S3=1+3+5,,……,SN=1+3+5+7+……+
题目:
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++)
(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
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=%dn”,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;
}
答案: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=%dn”,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++; printf (“n=%dn”,n); getch( );
}
答案:n=6
19题:编程求出1~100以内能被3整除的数的平方 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=%dn”,n); getch( );
百度搜索“爱华网”,专业资料、生活学习,尽在爱华网!