寻找平均价值计划。变量声明和输入

时间:2014-08-06 11:52:03

标签: c

程序总是提示我再提供一个输入,如果我声明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);               

3 个答案:

答案 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);以避免丢失结果的小数部分。