c语言的程序编译正确,而运行出现了问题,怎么回事

完整的程序#include<stdio.h>intfun(intx){intn,s1,s2,s3,t;/**********found**********/n=0;t=1... 完整的程序
#include <stdio.h>
int fun(int x)
{ int n, s1, s2, s3, t;
/**********found**********/
n=0;
t=100;
/**********found**********/
while(t<=x)
{ s1=t%10; s2=(t/10)%10; s3=t/100;
if(s1+s2+s3==15)
{ printf("%d ",t);
n++;
}
/**********found**********/
t++;
}
return n;
}
main()
{ int x=-1;
while(x>999||x<0)
{ printf("Please input(0<x<=999): "); scanf("%d",&x); }
printf("\nThe result is: %d\n",fun(x));
}

还有其中主函数里有个int x=-1;为什么是x=-1而不是x=1?
展开
 我来答
zxp3126248
2009-03-15 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:21.6万
展开全部
关键在于主函数中的while循环,x>999||x<0当它为true时才会运行while循环,所以x应该为999以上或0一下的数才会执行while循环,如果x赋值为1的话while循环将不执行,而且你输入的必须是0--999之间的数,否则不会跳出循环,程序没问题,你再看看
xrayron
2009-03-15 · TA获得超过1052个赞
知道大有可为答主
回答量:781
采纳率:0%
帮助的人:942万
展开全部
x = -1才满足循环条件,没问题了

#include <stdio.h>
int fun(int x)
{
int n, s1, s2, s3, t;
/**********found**********/
n=0;
t=100;
/**********found**********/
while(t<=x)
{
s1=t%10; s2=(t/10)%10; s3=t/100;
if(s1+s2+s3==15)
{
printf("%d ",t);
n++;
}
/**********found**********/
t++;
}
return n;
}
void main()
{
int x=-1;
while(x>999||x<0)
{
printf("Please input(0<=x<=999): ");
scanf("%d",&x);
fflush(stdin);
}
printf("\nThe result is: %d\n",fun(x));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
芳草1986
2009-03-16 · TA获得超过158个赞
知道答主
回答量:62
采纳率:0%
帮助的人:55.6万
展开全部
main 函数前面应加void。
除此之外程序没有什么问题。
初始化x为-1是为了进入while循环,而while循环又是为了保证输入的数据在0<x<=999之间。试想,当进入while循环后,如果你输入的是1000,则会继续提示“Please input(0<x<=999):”知道你输入一个在 0<x<=999之间的数,才会跳出while循环,进行计算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
janiary
2009-03-15 · TA获得超过326个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:167万
展开全部
运行了下,好像没什么问题啊
让x=-1是为了让while(x>999||x<0)这句能执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式