我遇到一个简单的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");
goto c;
}
convert(year);
}
convert(int year)
{
printf("%d", year);
}
答案 0 :(得分:7)
您需要将地址传递给scanf
,即:
scanf("%d", &year);
请注意&符号。
答案 1 :(得分:2)
在scanf中,其他参数应为指针
它应该是
scanf("%d", &year);
答案 2 :(得分:1)
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);
}
}
更好的构造是使用do {} while()构造,但我会把它作为练习留给你:)