请c语言高手看看我的程序!

来源:百度知道 编辑:UC知道 时间:2024/09/20 23:32:58
#include <stdio.h>
int s(int b);
int main()
{
int a,k;
scanf("%d",a);
k=s(a);
printf("%d\n",a);
printf("%d\n",k);
getchar();
getchar();
return 0;
}

int s(int b)
{
int i;
for(i=b-1;i>=1;i--)
b=b+i;
printf("%d\n",b);
}
这是从谭浩强的c语言的第8章函数中改编的一个例子,在Dev-c++中编译和执行都没出错,但得不到想要的结果,如输入10,则出来三个奇怪的数字:
-1463774768,37814176,12
在turbo c中编译会有个worning :possible use of 'a' before definition in function main;
我据此令变量a=0初始化a的值 ,执行后输入10,出现0,0,和Null pointer assignment;不做改变的话,也是出现奇怪的数字.
请问问题到底出在哪儿???????

1.scanf("%d",a) -> scanf("%d",&a)

2.int s(int b) 函数应该有一个return语句(return b;),不然无法知道接收的是什么值。

3.getchar(); 用一个。 (建议)

这个程序是不是计算b,b-1,b-2,...,1的和,如果是就是上面的问题。

你的scanf("%d",a);错了。应该是scanf("%d",&a);
还有你的k=s(a)应该是想把函数s(a)中的值赋给k吗?但是s(a)函数里没有说明返回的值是什么。应该在 int s(int b)函数的定义里面加上最后一个语句
return b;这样就可以返回求得的b的值了

getchar();
getchar();
return 0;
这三个句子你要干什么用啊?
getchar()一般是用来赋值语句中的。
一般形式是 参数=getcghar(),运行时从键盘输入符号赋给参数。
return 一般用在需要返回值的子函数中,传递子函数的运算结果。但是你的子函数中没有return..所以你的k=s(a); 这个语句是不能得到子函数的计算结果的。输出K的时候系统就随机输出一个数。
scanf("%d",a);这个你明显是a前没有加取址符号&。

int s(int b)
{
int i;
for(i=b-1;i>=1;i--)
b=b+i;
printf("%d\n",b);
}
这个子函数的功能是,b从b一直加到1.例如你输入10,则最后输出的是10+9+8+...+2+1的结果。
另外
int main() 这个也是让人费解的。你到底需要这个程序做什么呢?没有看见过主函数也想被人调用的....

#include <stdio.h>
int s(int b);