程序总是提示我再提供一个输入,如果我声明3个vars要求4个输入等......这里的问题是如果我在程序中放入另一个变量,它总是提示我输入一个号码我在第一名宣布。 它能正确显示平均值,但总是要求我再提供一个输入,我认为程序甚至不算数,可能是它最后一次输入它询问我,但它在那里!
//Variable declaration.
int math,pro,net;
int average;
//ask user to give 3 grades.
printf("Give me your grades from your last semester\n");
//prompt user.
scanf("%d\n %d\n %d\n",&math,&pro,&net);
// simple average.
average = (math+pro+net)/3;
// show average.
printf("Your average is :%d\n\n",average);
答案 0 :(得分:2)
变化
scanf("%d\n %d\n %d\n",&math,&pro,&net);
到
scanf("%d %d %d",&math,&pro,&net);
但是,真正的问题是scanf格式中的最后一个换行符。 scanf会继续吃掉空白字符并且不会终止。但是,如果你向stdin发送一个EOF符号(在linux上按下ctrl + d),将使用指定的3个变量计算平均值。
请注意,scanf将换行视为与其他空格字符相同。
答案 1 :(得分:1)
因为scanf函数末尾有额外的“\ n”。您可以执行以下代码:
scanf("%d %d %d",&math,&pro,&net);
或者如果您想遵循您的编码标准,请写下:
scanf("%d\n %d\n %d",&math,&pro,&net);
答案 2 :(得分:0)
另请注意,您的计算是整数。如果您的成绩在大陆范围内(即1..5),您可能希望float average = (math+pro+net)/3.; printf("Your average is :%f\n\n",average);
以避免丢失结果的小数部分。