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呢??? 展开
自行定义)。编写程序,根据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呢??? 展开
6个回答
展开全部
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.
{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()中设计输入,直接运行就好了。
展开全部
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;
}
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
s要赋初始值0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
晕,你的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,但是没给它赋值啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改用if吧。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一堆的变量没定义就使用了,不错才怪
追问
系统定义的外部整型变量.不用自己再定义了。
追答
淡影疏秋 正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询