递归求 1+2+..+n 的和:加入了输入n语句后就得不到结果了
现在目前情况是:在代码里直接给 n 一个值,(我这里 n = 3)运行可以得到正确结果(6),但是当我把(在我的25行)a = DoSum(3);改为scanf("%d\n",&n);a = DoSum(n); 后,当我输入3 后按回车没有得到结果,是空的,
完整代码:/*递归求和*/
#include <stdio.h>
int DoSum(int);
int DoSum(int num)
{
if (num == 1)
{
return 1;
}
else
{
return num + DoSum(num - 1);
}
}
int main()
{
int n,a;
//scanf("%d\n",&n);在这里加了一个输入n的操作
a = DoSum(3);//a = DoSum(n);
printf("%d",a);
return 0;
} scanf("%d\n",&n); 问题在这一句,scanf中不能有回车。这导致你的n没有收到你输入的值。只有再次输入的时候才会给n赋值。但是你的程序没有再次输入,所以n没有赋值 你的输入是
scanf("%d\n", &n);
说明要输完了n还要输入一个换行(回车)
所以把“\n”删掉。
还有,
第4行的东西没有用。
你的scanf中的换行符去掉,
要不然,你就要在输入一个不是空白字符的
具体去看看小甲鱼的scanf这一篇
页:
[1]