[英]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.