C语言程序设计的题

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:33:28
我写的两道题都不对
第一个题是:
买100只鸡,公鸡每只10元,母鸡每只15,小鸡5,共用1000元,问怎样分母鸡最多?

#include "stdio.h"
#include "math.h"
main()//这是一个main函数
{
int n,i,m=0;//定义整型变量
int d(int n);//声明函数
for(n=1;n<1000;n++)//进入循环
{
for(i=1;i<=1000;i++)
{if(n==d(i))break;
else if(i>999)
{printf("%5d",n);
m++;
if(m%15==0)printf("\n");}//输出格式
}
}
}

d(i)//函数为整型
//int i;
{
return((int)(i/1000)+(int)(i/100)+(int)(i/10)+i%10+i);//返回函数值
}
第二道题是:
定义一类数字A:存在一个n,使A=n的每一位数字之和+n
现要求输出0-1000以内的所有不是A的数字

#include "stdio.h"
main()//这是一个main函数
{
long mu,gong,xiao,flag=0;//定义三个变量
for(mu=65;mu>=1;mu--)//穷举可能情况
{for(gong=(int)((1000-15*mu)/10);flag=0;gong++)
{xiao=100-gong-mu;//小鸡数目
if(1000==15*mu+10*gong+5*xiao)flag=1;}}
printf("购买%ld只母鸡,%ld只公鸡,%ld只小鸡\n",mu,gong,xiao);//输出结果

晕 兄弟 你的题都贴反了
郁闷

小鸡那个题(int)((1000-15*mu)/10)这个数都是公鸡的最大数了
后面还有++
肯定要爆掉 还有就是没必要用long型的变量
还有就是你用的是flag=0来结束 首先flag=0仅仅是赋值语句改为flag==0 其次如果母鸡在65的时候没有这个能分配的方式
那循环就会一直在母鸡为65的时候进行
你的程序设计的思路好象不太明了,确实我的个人能力有限,没办法做点睛的修改,就大范围的修改了一下
#include "stdio.h"
main()//这是一个main函数
{
int mu,gong,xiao,flag=0;//定义三个变量
for(mu=65;mu>=1;mu--)//穷举可能情况
{
for(gong=(int)((1000-15*mu)/10);gong>0;gong--)
{
xiao=100-gong-mu;//小鸡数目
if(1000==15*mu+10*gong+5*xiao&&xiao!=0)
{
printf("购买%ld只母鸡,%ld只公鸡,%ld只小鸡\n",mu,gong,xiao);//输出结果
flag=1;//作为循环结束条件
}
if(flag==1)break;//结束第一个循环
}
if(flag==1)break;//结束第二个循环
}
}

数那个题return((int)(i/1000)+(int)(i/100)+(int)(i/10)+i%10+i);//返回函数值
返回的函数值不是每个位上的数的和
351的返回值是0+3+35+1+351
改成
#include "stdio.h"
#include "math.h"
main()