为了账号安全,请及时绑定邮箱和手机立即绑定

关于在VS2008上运行出错的问题

http://img1.sycdn.imooc.com//580f60f20001397a04710211.jpg

#include <stdio.h>
int func(int n){
	int r;
	if(n<0)
		printf("data error\n");
	else if(n==0 || n==1)
		r=1;
	else
		r=n * func(n-1);
	return r;
}

int main(){
	int n;
	int result=func(n);

	printf("please input n\n");
	scanf_s("%d",&n);

	int result=func(n);
	printf("result=%d\n",result);
}

其实代码和课程里的一样,关于这个报错,有人能帮忙解决一下吗?谢谢。

正在回答

2 回答

5810a0ae0001dd3b04670535.jpg

直接拷贝的你的代码,把15行去掉了,在19行声明 的result 。

这是运行结果。编译器用的是gcc。

5810a0ae00016ef903920120.jpg


0 回复 有任何疑惑可以回复我~
#1

把心刘 提问者

看来是工具的问题吧,我用gcc也过去了,用VS2008就是不行。。。谢谢
2016-10-27 回复 有任何疑惑可以回复我~
#2

z3phyr 回复 把心刘 提问者

嗯嗯,编译器的差别吧
2016-10-27 回复 有任何疑惑可以回复我~

把14行改成int n=0;试试看。你定义了n没赋初值就直接15行开始计算当然会报错。

0 回复 有任何疑惑可以回复我~
#1

把心刘 提问者

先谢谢你的解答,我之前试过了,后来结果就是不管n输入几,结果都是result=1
2016-10-26 回复 有任何疑惑可以回复我~
#2

z3phyr 回复 把心刘 提问者

刚刚在电脑上敲了一遍你的代码发现问题了,你把 result定义了两遍,把20行的int去掉,直接用result接受函数的返回值。
2016-10-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于在VS2008上运行出错的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信