| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:[求助]为什么结果是负的呢 哪里错了啊?
只看楼主 加入收藏
wuyangiori
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-1-9
收藏
 问题点数:0 回复次数:4 
[求助]为什么结果是负的呢 哪里错了啊?
#include<stdio.h>
int sum(int x,int y)
{
int z;
for(x=0;x<=y;x++)
{
z+=x;
}
return z;
}
main()
{
int a,b,c;
a=0,b=20;
c=sum(a,b);
printf("%ld",c);
}

这是一道利用1+2+3+...+n的函数 求n=20的时候的值.
我检查了好几编不知道为什么结果一直是负的 , 哪里出错了呢


谢谢
搜索更多相关主题的帖子: include return 
2007-05-24 13:03
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
由于你在调用函数的时候,z没有给定初值,所以返回值是系统任意给的。

~~我的明天我知道~~
2007-05-24 13:17
忧郁的风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2004-11-1
收藏
得分:0 
z没有赋初值int z;改为int z=0;就可以了
这个程序还有个问题:
int sum(int x,int y)
{
int z;
for(x=0;x<=y;x++)
{
z+=x;
}
return z;
}
既然不管实参是何值,x总是从0开始,那函数sum就只需y一个形参就可以了,即将程序改为:
#include<stdio.h>
long sum(int y)
{
long z=0;
int x;
for(x=0;x<=y;x++)
{
z+=x;
}
return z;
}
main()
{
int b;
long c;
b=20;
c=sum(b);
printf("%ld",c);
}
如果你是要求两个数a,b之间整数和的话,那就用下面的程序:
#include<stdio.h>
long sum(int x,int y)
{
long z=0;
int m,n;
if(x==y) return x+y;
m=x>y?x:y; //判断x与y的大小,将大者赋值给m
n=x<y?x:y; //判断x与y的大小,将小者赋值给n
//这样就不用在输入的时候去判断实参a和b哪个大哪个小了,输出的始终是a和b之间的整数和
for(;n<=m;n++)
{
z+=n;
}
return z;
}
main()
{
int a,b;
long c;
a=0,b=20;
c=sum(a,b);
printf("%ld",c);
}


轻轻的我走了,正如我轻轻的来,轻轻的我挥一挥衣袖,轻轻的抹去我留下的痕迹------风过无痕
2007-05-24 13:32
wuyangiori
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-1-9
收藏
得分:0 
谢谢3楼的朋友 我自己在打一边 谢谢了

真的是想学习了.
2007-05-24 13:58
daijingchun
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2007-5-16
收藏
得分:0 
#include<stdio.h>
int sum(int x,int y)
{int z=0;
for(;x<=y;x++)
{z+=x;
}
return z;
}
void main()
{int a=1,b=20,c;
c=sum(a,b);
printf("%d\n",c);
}
这是我的程序。望多指教!!
2007-05-24 16:10
快速回复:[求助]为什么结果是负的呢 哪里错了啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017246 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved