C语言编程题。我到底错在哪里啊? 5

【习题5.042】m,n和s是系统定义的外部整型变量(不需要自行定义)。编写程序,根据m的值求满足1+2+...+n<m的最大n,并将1+2+...+n的结果存放到s。例... 【习题5.042】m,n和s是系统定义的外部整型变量(不需要
自行定义)。编写程序,根据m的值求满足1+2+...+n<m的
最大n,并将1+2+...+n的结果存放到s。例如,若m=50,则
n=9,s=45。
**********/
void main()
{int i;
for (i=1;s<m;i++)s=s+i;
n=i-2;
s=s-i+1;
}
我这程序错在哪里啊??怎么改呢???
还有,为什么赋初值s=0呢??系统要是不给定0,那就不就算错了嘛?
打漏了。。。是为什么不赋初值s=0呢???
展开
 我来答
淡影疏秋
2011-12-05 · TA获得超过550个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:250万
展开全部
void main()
{int i;
for (i=1;s<m;i++)s=s+i;
n=i-1; %i仅超过1次
s=s-i; %s应该是减去最后一次i
}
另:尽然s是外部整数,应该已经赋值过0了,这里没有必要进行。如果没有赋值这里必须要先赋值成0.或者s是一个静态变量,在定义的时候已经默认为0.
追问
系统显示错误。你这样算出来是S>=m的。。。
追答
void main()
{int i;
for (i=1;s<=m;i++)s=s+i; //改成s<=m
n=i-1; %i仅超过1次
s=s-i; %s应该是减去最后一次i
}
这样机避免了相等的情况。
再就是你这里是主程序入口,那你的m、n、s到底是在什么地方定义的?是动态的还是静态的?如果这样直接编译肯定过不去,因为这三个变量无从引用;或者是main()函数的参数?那应该有前提才行。

p.s.你的 n=i-2;
s=s-i+1;
在存在s=m的情况时这样计算是对的,但是如果s不等于m,那么你的程序就不是最大的n,而是比最大的n小1.

修改方法上面已经给出来了。如果编译不能通过,说明你的变量引用存在问题,你说的系统定义过了具体是指什么,你的这个程序入口能不能对定义的变量引用,需不需要加一个预处理#include等等。

其实这么简单的一个程序,完全可以在main()中设计输入,直接运行就好了。
淦海瑶s1
2011-12-05 · TA获得超过3646个赞
知道大有可为答主
回答量:3341
采纳率:100%
帮助的人:761万
展开全部
int s,n,m; //这里m需要一个赋值,要不然这个程序没法运行
void main()
{
int i;
s=0;
for (i=1;s<m;i++)
s=s+i;
n=i-1;
s=s-i;
}
追问
系统定义的外部整型变量.不用自己再定义了。

你这种运算结果是s>=m的。
追答
nt i;
sum=0;
for (i=1;sum<m;i++)
sum+=i;
i--;
n=i-1;
s=sum-i;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Tidus_forever
2011-12-05 · TA获得超过4399个赞
知道大有可为答主
回答量:2782
采纳率:100%
帮助的人:1854万
展开全部
s要赋初始值0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A将军令A
2011-12-05 · TA获得超过147个赞
知道小有建树答主
回答量:574
采纳率:16%
帮助的人:177万
展开全部
晕,你的m s n都没定义,只定义了i,你看看
追问
系统定义的外部整型变量(不需要自行定义)。
追答
#include
void main()
{
int i,s=0,m=50,n;
for (i=1;s<m;i++)
s=s+i;
n=i-2;
s=s-i+1;
printf("%d\n%d",n,s);
}
这样就没错了。系统虽然定义了变量m,但是没给它赋值啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
328908196
2011-12-05 · 超过11用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:36万
展开全部
改用if吧。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fioqyheihasdhs
2011-12-05
知道答主
回答量:3
采纳率:0%
帮助的人:3.2万
展开全部
一堆的变量没定义就使用了,不错才怪
追问
系统定义的外部整型变量.不用自己再定义了。
追答
淡影疏秋  正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式