做oj平台时总会出现这种问题,当输入0时一般编译器也会输出0,怎么能解决这样的问题?每次都会在这里出错
修改如下:
#include<stdio.h>
int fun(int n)
{
int ret;
if(n==1)
ret=1;
else if (n==2)
ret=2;
else if(n==3)
ret=3;
else if(n>3)
ret=fun(n-1)+fun(n-3);
return ret;
}
int main(void)
{
int n;
while(1)
{
scanf("%d",&n);
if(n==0) break;
printf("%d\n",fun(n));
}
return 0;
}
你这个是输入0结束
看代码
int n;
while(scanf("%d", &n) && n != 0)
{
// 做点操作
n = n * 2 + 1;
printf("%d\n", n);
}
那就当值为0的时候进行return。或者是不进行输出就可以了
#include <stdio.h>
int main()
{
int n;
while (scanf("%d", &n) == 1) {
if (n == 0)
break;
// write your code here...
}
return 0;
}
# include <stdio.h>
int main()
{
int a[100], i = 0, flag = 1;;
while (scanf_s("%d", &a[i]) != EOF)
{
if (a[i] == 0)
flag = 0;
i++;
}
if (flag == 0)
return 0;
else
{
for (int j = 0; j < i; j++)
printf("%d\n", a[j]);
}
return 0;
}