C语言高手请进,帮我看下这代码哪儿错了.万分感激!

#include"stdio.h"sum(i)inth,c,i=0;{for(h=1;h<99;h++)for(c=1;c<99;c++)if((0.5*h+3*c+2*... #include "stdio.h"
sum(i)
int h,c,i=0;
{
for(h=1;h<99;h++)
for(c=1;c<99;c++)
if((0.5*h+3*c+2*(100-h-c)==100)&&(h+c<100))
{
printf("小鸡:%d,母鸡:%d,公鸡:%d\n",h,c,(100-h-c));
i++;}
return(i);
}

main()
{char d;
int i;
printf("今有百钱,欲买百鸡,已知小鸡半元、母鸡三元、公鸡两元,问有多少种买法?\n");
printf("如果你知道答案请按Y,如果不知道请按N。\n");
scanf("%c",&d);
while((d!='y')&&(d!='n'))
{printf("您的输入有误请重新输入\n");
scanf("%c",&d);}
stop: if(d=='y'){printf("请输入您的答案\n");
scanf("%d",&i);
if(d==sum(i)) printf("回答正确恭喜您!\n");
else {printf("回答错误小傻瓜!要看正确答案请按n,要继续回答请按y。\n");
scanf("%c",&d);
while(d!='y'&&d!='n')
{printf("您的输入有误请重新输入\n");
scanf("%c",&d);}
if(d=='n')
printf("%d是正确答案,傻瓜!\n",sum(i));
else goto stop;
}
}
#include "stdio.h"
sum(i)
{
int h,c,i=0;
for(h=1;h<99;h++)
for(c=1;c<99;c++)
if((0.5*h+3*c+2*(100-h-c)==100)&&(h+c<100))
{printf("小鸡:%d,母鸡:%d,公鸡:%d\n",h,c,(100-h-c));
i++;}
return(i);
}
char fun(d)
{
char d;
int i;
scanf("%c\n",&d);
if(d!='y'&&d!='n')fun(d);
else if(d=='n')return('n');
else{
printf("请输入答案\n");
scanf("%d\n",&i);
if(i==sum(i))return('y');
else{
printf("回答错误,小傻瓜!\n 继续回答请按Y\n 想看答案请按N\n");
fun(d);}
}
}
main()
{
char d;
int i;
printf("今有百钱,欲买百鸡,已知小鸡半元母鸡三元公鸡两元,问有多少种买法?\n 想要回答请按Y\n 想看答案请按N\n");
d=fun(d);
if(d=='y')printf("回答正确,恭喜你!\n");
else printf("%d是正确答案,小傻瓜。\n");
}
鉴于开始按N无反应 和GOTO语句使用的问题
我把函数改成了上面的这样 但是在编译的时候还是提示出错 是不是函数调用有问题啊
展开
 我来答
百度网友168559797
2008-03-27 · 超过18用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h"
sum(int i)
{ int h,c;
i=0;
for(h=1;h<99;h++)
for(c=1;c<99;c++)
if((0.5*h+3*c+2*(100-h-c)==100)&&((h+c)<100))
{
printf("小鸡:%d,母鸡:%d,公鸡:%d\n",h,c,(100-h-c));
i++;}
return(i);
}

main()
{char d;
int i;
printf("今有百钱,欲买百鸡,已知小鸡半元、母鸡三元、公鸡两元,问有多少种买法?\n");
printf("如果你知道答案请按Y,如果不知道请按N。\n");
scanf("%c",&d);
while((d!='y')&&(d!='n'))
{printf("您的输入有误请重新输入\n");
scanf("%c",&d);}
stop: if(d=='y'){printf("请输入您的答案\n");
scanf("%d",&i);
if(d==sum(i)) printf("回答正确恭喜您!\n");
else {printf("回答错误小傻瓜!要看正确答案请按n,要继续回答请按y。\n");
scanf("%c",&d);
while(d!='y'&&d!='n')
{printf("您的输入有误请重新输入\n");
scanf("%c",&d);}
if(d=='n')
printf("%d是正确答案,傻瓜!\n",sum(i));
else goto stop;
}
}
}

已经可以正常运行了。建议你再修改以下部分:
1。上来就按n的话,没有输出提示
2。尽量不要用goto语句
3。从sum函数返回的值,应该建立一个变量来存储。多次调用函数,会增加算法的时间复杂度。
4。写大程序的时候。变量的命名,最好能做到,见名知意。
zlwnihao
2008-03-28 · TA获得超过588个赞
知道小有建树答主
回答量:684
采纳率:0%
帮助的人:790万
展开全部
结构不严谨~
改了些子 还是很乱..
还要加些循环控制以及break
执行的有些问题
#include "stdio.h"

int sum()
{int h,c,k,i=0;

for(h=1;h<99;h++)
for(c=0;c<33;c++)
for(k=0;k<50;k++)
if(0.5*h+3*c+2*k==100&&h+c+k==100)
{
printf("小鸡:%d,母鸡:%d,公鸡:%d\n",h,c,k);
i++;}
return(i);
}

void main()
{char d;
int i;
printf("今有百钱,欲买百鸡,已知小鸡半元、母鸡三元、公鸡两元,问有多少种买法?\n");
printf("如果你知道答案请按Y,如果不知道请按N\n");
scanf("%c",&d);
while(d!='y'&&d!='n')
{printf("您的输入有误请重新输入\n");
scanf("%c",&d);}
stop:if(d=='y'){printf("请输入您的答案\n");
scanf("%d",&i); }

if(d==sum()) printf("回答正确恭喜您!\n");
else {printf("回答错误小傻瓜!要看正确答案请按n,要继续回答请按y。\n");
scanf("%c",&d);
while(d!='y'&&d!='n')
{printf("您的输入有误请重新输入\n");
scanf("%c",&d);}
if(d=='n')
printf("%d是正确答案,傻瓜!\n",sum());
else goto stop;
}
}

sum(i)
{
int h,c,i=0;
i重复定义了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L_o_o_n_i_e
2008-03-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:6029万
展开全部
这是老式C.

改新式
int sum(int i) // 加int int
// 去掉 int h,c,i=0;
{
int h,c; // 加
....
void main()
....
// 程序尾漏了一个花括号,要加上。
}

如果编译器不支持中文,所有字符串该英文。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woshijakey
2008-03-27 · TA获得超过205个赞
知道答主
回答量:116
采纳率:0%
帮助的人:113万
展开全部
写法有问题,很难看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
50573750
2008-03-27 · TA获得超过976个赞
知道大有可为答主
回答量:1800
采纳率:100%
帮助的人:0
展开全部
很乱。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dean00
2008-03-27 · TA获得超过346个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h"
int sum(){
int h,c,i;
i=0;
for(h=1;h<99;h++)
for(c=1;c<99;c++)
if((0.5*h+3*c+2*(100-h-c)==100)&&(h+c<100))
{
printf("小鸡:%d,母鸡:%d,公鸡:%d\n",h,c,100-h-c);
i++;
}
return i;
}

main()
{
char d;
int i;
i=sum();
printf("今有百钱,欲买百鸡,已知小鸡半元、母鸡三元、公鸡两元,问有多少种买法?\n");
printf("如果你知道答案请按Y,如果不知道请按N。\n");
scanf("%c",&d);
while((d!='y')&&(d!='n'))
{
printf("您的输入有误请重新输入\n");
scanf("%c",&d);
}

stop:if(d=='y')
{
printf("请输入您的答案\n");
scanf("%d",&d);

if(d==i)
printf("回答正确恭喜您!\n");
else
{
printf("回答错误小傻瓜!要看正确答案请按n,要继续回答请按y。\n");
scanf("%c",&d);
while(d!='y'&&d!='n')
{
printf("您的输入有误请重新输入\n");
scanf("%c",&d);
}
if(d=='n')
{
printf("%d是正确答案,傻瓜!\n",i);
}
else goto stop;

}

}
else
printf("%d是正确答案,傻瓜!\n",i);
}
改好了,自己仔细看一下吧,我也不知道改了几处,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式