首页 > 代码库 > C语言例题系列-------第十天

C语言例题系列-------第十天

//19.100个学生一起买小吃,共花钱100元,其中每个大学生花5元,每个中学生花3元,
//每3个小学生花1元,问大,中,小学生的人数分配共有多少种不同的解
//(去掉某类学生为零的解)? 
//这是我写的程序,答案是3种
/*#include<stdio.h>
int main()
{
int i,j,k;
int count=0;
for(i=1;i<20;i++)
{
for(j=1;j<33;j++)
{
for(k=3;k<300;k+=3)
{
  if(5*i+3*j+k/3==100&&i+j+k==100)
  { printf("大学生%d人,中学生%d人,小学生%d人",i,j,k);
    count++;
    printf("\n");
  }
}
}
}
printf("一共有%d种\n",count);
return 0;
}
*/
//这是答案给的程序,答案是6种
#include<stdio.h>
int main()
{
int a,b,c;
for(a=1;a<=20;a++)
for(b=1;b<=33;b++)
{
c=100-a-b;
if((5*a+3*b+c/3)==100)
printf("%d,%d,%d\n",a,b,c);
}
return 0;
}

//请认真比较这两种写法,
//20.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的最大值。 
//这是我写的,答案是38
/*#include<stdio.h>
int main()
{   
	int s[100]={0,1};//此处定义的数组是S[100],100是我假定的一个大小,我觉得,100以内肯定可以得出答案,自己体会
	int i,sum=0;
	for(i=2;i<100;i++)
    {s[i]=s[i-1]+2*i-1;
	}
	for(i=1;i<100;i++)
	{
	sum+=s[i];
	if(sum>=20000)
	{printf("N的最大值为%d\n",i-1);
	break;
	}
	}
return 0;
}
*/
//这是答案给的代码,用函数调用写的,答案也是38
#include<stdio.h>
int func(int n)
{
int i,sum=0;
for(i=1;i<=n;i++)
sum=sum+2*i-1;
return(sum);
}

int main()
{
int sum=0,i=1;
while(sum<20000)
{
sum=sum+func(i);
if(sum>=20000)
break;
i++;
}
printf("N的最大值为%d\n",i-1);
return 0;
}


本文出自 “鹏哥的博客” 博客,谢绝转载!

C语言例题系列-------第十天