【问题标题】:C Programming - Repeat scanf unless user enters "0"C 编程 - 重复 scanf,除非用户输入“0”
【发布时间】:2015-10-02 00:26:04
【问题描述】:

您好,我是 C 的新手,正在尝试制作一个要求用户输入一大堆数字的程序。我想循环scanf,以便它不断询问,当用户输入“0”时,它会停止,读取输入的偶数和奇数,并分别计算它们。现在,我可以在用户按下“Enter”后继续询问新的数字,但是当我输入“0”时,我只是一直在询问更多的数字并且不会停止。我究竟做错了什么?就像我之前说的,我是新手,所以最好用婴儿话。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void) {

    int number_of_integers, sum = 0, i, integer;
    char user_name[128];

    printf("What is your name?\n");
    scanf("%s", user_name);

    printf("\nEnter any real numbers followed by ENTER.\n");
    while (integer != 0) {
        scanf("%s", &integer);
        if (integer == 0)
            break;
    }

    printf("%s, the numbers you entered are broken down as follows:\n", user_name);

    return 0;
}

【问题讨论】:

  • scanf("%s", &integer); ???以整数存储字符串?
  • 是的,这是一个错误,现在按 0 时它可以工作。谢谢!
  • 如果您知道如何记录输入的偶数/奇数并计算它们,那就太好了!
  • 你可以在互联网上搜索。你可以很容易地找到答案。
  • integer 需要初始化为非零。

标签: c loops conditional-statements scanf exit


【解决方案1】:

正如评论者所指出的,我们不是家庭作业或辅导服务,但我通过制作一个我刚刚编造的实际工作示例来帮您一个忙。您现在可以根据自己的需要对其进行定制。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (void) {
    int max=100;
    int integer;
    int even[max];
    int odd[max];
    int index=0;
    int evencount=0;
    int oddcount=0;
    char user_name[128];

    printf("What is your name?\n");
    scanf("%s", user_name);

    printf("\nEnter any real numbers followed by ENTER.\n");
    while (index < max){
        scanf("%d", &integer);
        if (integer == 0)
        break;
        if ((integer % 2) == 0){
            evencount++;
            even[evencount]=integer;
        }else{
            oddcount++;
            odd[oddcount]=integer;
        }
        index++;
    }

    printf("%s, the %d numbers you entered are broken down as follows:\n", user_name,index);
    printf("%d odd integer(s):\n",oddcount);
    while (oddcount > 0){
    printf("%d\n",odd[oddcount]);
    oddcount--;
    }
    printf("%d even integer(s):\n",evencount);
    while (evencount > 0){
    printf("%d\n",even[evencount]);
    evencount--;
    }
    return 0;
}

【讨论】:

  • 非常感谢!这是什么意思?例如奇数[oddcount]=integer;
  • @BaileyW odd[] 是任何数组,当我们说odd[oddcount] = integer 时,我们将integer 存储到数组odd 的索引oddcount 中。请阅读下降 C 书籍以了解 C 的基本知识。
  • 谢谢你,我在课堂上还没有学过数组,但你解释得很好。我很感激
猜你喜欢
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 2019-07-24
  • 2021-05-27
  • 2021-12-21
相关资源
最近更新 更多