C 计算用户输入数字的平均值

C 计算用户输入数字的平均值,c,user-input,C,User Input,使用C语言编写的代码: int main() { double score1; double score2; double averageScore; printf("Please enter your score in course1."); scanf("%lf", &course1_score); printf("Please enter your score in course2."); scanf("%lf", &a

使用C语言编写的代码:

int main() {

    double score1;
    double score2;
    double averageScore;

    printf("Please enter your score in course1.");
    scanf("%lf", &course1_score);

    printf("Please enter your score in course2.");
    scanf("%lf", &course1_score);

    averageScore = (score1 + score2)/2;

    printf("Your average score is %d%%", &averageScore );
    return 0;

}
不管我输入什么数字,输出结果总是给我:“你的平均分数是1606416176%”


为什么会发生这种情况?

请试试这个,它很有效

#include <stdio.h>



int main(  )
{
  double score1 = 0;
  double score2 = 0;
  double averageScore = 0;
  double total = 0;
  printf( "Please enter your score in course 1.\n" );
  scanf( " %lf", &score1 );

  printf( "Please enter your score in course 2.\n" );
  scanf( " %lf", &score2 );

  total = score1 + score2;
  printf( " Total score = %5.2lf \n", total );
  averageScore = ( score1 + score2 ) / 2;

  printf( "Your average score is %5.2lf", averageScore );

  getchar(  );
  return ( 0 );
}
#包括
int main()
{
双倍得分1=0;
双倍得分2=0;
双平均得分=0;
双倍合计=0;
printf(“请在课程1中输入您的分数。\n”);
scanf(“%lf”、&score1);
printf(“请在课程2中输入您的分数。\n”);
scanf(“%lf”、&score2);
总分=1分+2分;
printf(“总分=%5.2lf\n”,总计);
平均得分=(得分1+2)/2;
printf(“您的平均分数为%5.2lf”,averageScore);
getchar();
返回(0);
}

主要问题在于:

printf("Your average score is %d%%", &averageScore );
您使用的是
%d
格式说明符,它需要
int
。您正在打印的值是一个
双精度
,因此需要
%f
格式说明符。此外,您应该输入
averageScore
,而不是
&averageScore

您得到的值是
averageScore
变量的地址,该变量被解释为
int
。因为这个地址在每次运行时都是相同的(但不一定),所以您会看到相同的值

因此,这一行应该是:

printf("Your average score is %f%%", averageScore );
此外,似乎还有一个输入错误:

printf("Please enter your score in course1.");
scanf("%lf", &course1_score);

printf("Please enter your score in course2.");
scanf("%lf", &course1_score);

也许你的意思是
score1
score2

您上次的
printf
调用错误。您扫描了一个变量course1\u score,但使用了另一个变量score,typo?实际上,
%lf
需要C99或更高版本<代码>%f就足够了。这是一个问题,但它不能回答问题。@Olaf
%lf
仅要求C99用于
printf
。要阅读
double
,必须使用
%lf
。为什么变量现在声明在文件范围内,为什么添加
5.2
不是问题的一部分,为什么所有这些额外的浪费空格,为什么调用
getchar
,为什么
后的paren返回
?为什么?@ouah:最初的答案没有包括
scanf
(奇怪的是,这已经不在历史上了)。