繁体   English   中英

c语言如何输入多个输入

[英]How to input several input in c

我正在尝试编写关于闰年程序的代码。 那么,如何在不停止程序的情况下输入多个输入?

输入为:2000 2002 2004 4 1999

输出为:leap nonleap leap 非leap

但是,我的程序当时只能做 1 个输入,这是我的代码

#include <stdio.h>  
  
int main()   
{  
     
   int y;  
     
   scanf("%d", &y);  
  
   if (y % 400 == 0) {  
      printf("leap\n");  
   }  
   else if (y % 100 == 0) {  
      printf("nonleap\n");  
   }  
   else if (y % 4 == 0) {  
      printf("leap\n");  
   }  
   else {  
      printf("nonleap\n", y);  
   }  

   return 0;  
} 

因此,当我输入 ex 2000 并打印leap但程序停止时。 有人可以帮助我,以便程序在没有输入之前不会停止。

开始阅读 C 编程基础知识。 这可以通过在 C 中使用循环来实现。阅读关于循环的内容。

下面,我在上面的代码中添加了一个while循环和一个退出条件。

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

int main()
{
    while (1) {
        int y;
        scanf("%d", &y);

        if (y % 400 == 0) {
            printf("leap\n");
        }
        else if (y % 100 == 0) {
            printf("nonleap\n");
        }
        else if (y % 4 == 0) {
            printf("leap\n");
        }
        else {
            printf("nonleap\n");
        }

        char buf[8];
        printf("continue(y/n)?");
        scanf("%s", buf);
        if (strcmp(buf, "n") == 0) {
            break;
        }
    }
    return 0;
}

您可以使用这样的循环:

#include <stdio.h>

int main(void) {
    int y;
    while (scanf("%d", &y) == 1) {
        if (y % 400 == 0) {
            printf("leap\n");
        }
        else if (y % 100 == 0) {
            printf("nonleap\n");
        }
        else if (y % 4 == 0) {
            printf("leap\n");
        }
        else {
            printf("nonleap\n");
        }
    }
    return 0;
}

让我向你解释它为什么起作用:当你输入一个输入时,它首先进入我们所谓的“缓冲区”,这个缓冲区的内容由 scanf 函数测试,如果它匹配预期的类型(%d 在你的case),它将此内容放入您指定的地址(在您的情况下为 &y )并返回读取好的值的数量(在您的情况下为 1 )。

如果它不匹配,这仍将返回读取好的值的数量(在您的情况下为 0),但会将最后一个未读取好的值保留到缓冲区中。

(这部分比您要求的要复杂一些,因此您可以忽略它:

这意味着如果读取错误的输入不会停止您的程序,并且您的代码中有另一个 scanf,则第二个 scanf 计算的值将是第一个 scanf 中没有被很好读取的值。)

用我写的代码,如果你写多个整数(用空格分隔)作为输入,它会通过scanf计算第一个值,如果值是整数则返回1,否则返回0。

当 scanf 和其余循环代码计算出第一个值时,这将打印“leap”或“nonleap”,然后自动读取下一个整数。

这样,如果输入错误的值,循环将停止。

我希望一切都清楚,如果您愿意,请让我重新解释!

PS:如果您想停止读取输入,可以按 CTRL + D,这将停止您的程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM