首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的代码有什么问题,如果b!=-1,它不返回值

我的代码有什么问题,如果b!=-1,它不返回值
EN

Stack Overflow用户
提问于 2018-09-20 01:02:03
回答 1查看 64关注 0票数 2

我的代码有什么问题,如果b!=-1,它不返回值

代码语言:javascript
运行
复制
 #include <stdio.h>

int find_even(int k){
    int a,b,i=0;
    scanf("%d",&a);
    while (a>=0){
        if(i<k){
            if (a>=0 && a%2 == 0){
                b=a;
                i++;
            }

        }
        scanf("%d",&a);
    }
    if (i<k){
        b=-1;
    }
    return b;

}

void main(){
    int k;
    printf("Enter the value of K : ");
    scanf("%d",&k);
    printf("Enter the sequence of non negative integers and at end enter a negative integer  : ");
    if (find_even(k)<0)
        printf("No %dth even integer exist.",k);
    else
        printf("Result = %d. ",find_even(k));
}

我正在尝试获取第k个偶数位数,但当b的值不等于-1时,我无法获得任何返回值

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 01:27:41

除非输入-1,否则似乎无法获得输出,这是因为必须至少输入k偶数才能使(i<k)为真。每次在循环中输入一个正偶数时,i都会递增:

代码语言:javascript
运行
复制
if (a>=0 && a%2 == 0){
    b=a;
    i++;  // here

所以如果你输入一个正偶数(比方说2)超过k次,你会得到一个不是-1的结果。

从函数返回后,如果结果为负,则执行以下操作:

代码语言:javascript
运行
复制
printf("No %dth even integer exist.",k);

如果结果是肯定的,则第二次返回该函数:

代码语言:javascript
运行
复制
printf("Result = %d. ",find_even(k)); // This is going to re-enter find_even

我认为你在这里想要的是保存函数调用的结果并对其执行操作。如下所示:

代码语言:javascript
运行
复制
int result = find_even(k);
if (result<0)
    printf("No %dth even integer exist.",k);
else
    printf("Result = %d. ", result);

编辑:我想我明白你现在想做什么了。考虑到请求和屏幕上的排列方式,这有点令人困惑。在printf的末尾添加一个\n,以减少终端上的混淆:

代码语言:javascript
运行
复制
printf("Enter the sequence of non negative integers and at end enter a negative integer  :\n");

现在,所有的输入都是对齐的,并且更有意义。

另外,要小心使用scanf(),因为它不是最可靠的函数。它对修补工作很好,但对于一般用途是不安全的。有关scanf的更多信息以及正确使用它的所有复杂性,请查看this小指南。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52410907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档