在简单C程序中遇到问题
我对一个简单的C程序有问题。即使我输入1000到1999之间的年份,它仍然显示无效年份。请告诉我发生了什么事在简单C程序中遇到问题,c,scanf,C,Scanf,我对一个简单的C程序有问题。即使我输入1000到1999之间的年份,它仍然显示无效年份。请告诉我发生了什么事 #include <stdio.h> main() { int year; c: printf("\n\nEnter a Year: "); scanf("%d", year); if ((year < 1000) || (year > 1999)) { printf("\n\nInvalid Year"
#include <stdio.h>
main()
{
int year;
c:
printf("\n\nEnter a Year: ");
scanf("%d", year);
if ((year < 1000) || (year > 1999))
{
printf("\n\nInvalid Year");
goto c;
}
convert(year);
}
convert(int year)
{
printf("%d", year);
}
#包括
main()
{
国际年;
c:
printf(“\n\n输入年份:”);
scanf(“%d”,年份);
如果((年份<1000)| |(年份>1999))
{
printf(“\n\n无效年份”);
后藤c;
}
换算(年);
}
换算(整数年)
{
printf(“%d”,年份);
}
您需要将地址传递给scanf
,即:
scanf("%d", &year);
注意符号和。在scanf中,其他参数应为指针
应该是
scanf("%d", &year);
亚当·扎克曼打败了我,用
scanf(“%d”,&year)
,并尽量避免使用goto语句。按以下方式将其替换为while循环:
main() {
int year;
printf("\n\nEnter a Year: ");
scanf("%d", &year);
while((year < 1000) || (year > 1999)) {
printf("\n\nInvalid Year");
printf("\n\nEnter a Year: ");
scanf("%d", &year);
}
}
main(){
国际年;
printf(“\n\n输入年份:”);
scanf(“%d”和“年”);
而((年份<1000)| |(年份>1999)){
printf(“\n\n无效年份”);
printf(“\n\n输入年份:”);
scanf(“%d”和“年”);
}
}
更好的构造是使用do{}while()构造,但我将把它留给您作为练习:)我花了一秒钟才意识到
c:
不是打字错误……我建议不要使用goto
语句。相反,使用循环构造。+1表示“每个人都说我不应该使用goto
,但我无论如何都会这样做,`pizazz.where useprintf()务必在你要显示的文本末尾添加一个<代码> \n>代码。如果你不知道,由于OS行缓冲I/O系统,你可能看不到期望的输出。现在我们有一个循环开始检查,最后循环检查。我们需要一个中间的检查。@费尔南德斯。中断;
?