struct student{
    char name[20]; /* student name */
    double testScore; /* test score */
    double examScore; /* exam score */
    double total; /* total score = test+exam scores */
};

void computeScore(student information);
int main()
{
struct student information[50];
                for (i = 0; i < 50; i++)
                {
                    printf("Enter the student name: ");
                    gets(information[i].name);
                    printf("\nEnter test score: ");
                    scanf("%lf",information[i].testScore);
                    printf("\nEnter exam score: ");
                    scanf("%lf",information[i].examScore);
                    computeScore(information[i]);
                }
}


我尝试输入输入的“测试分数”,但是在“测试分数”之后,我的程序立即终止。有任何想法吗?它甚至没有达到Enter考试分数。

最佳答案

发生这种情况是由于变量信息是结构“学生”的对象,在该结构中您将变量定义为“双精度”。这意味着当程序尝试使用to结构读取双精度数据类型的值时发现错误。

除非我们需要,否则Borland的编译器不会链接到浮点(f-p)库。因此,如果在scanf()或printf()调用中具有“%f”或其他浮点(f-p)格式,则需要强制添加任何浮点(f-p)函数。


  void dummy(double * a){
  
  双b = * a; //执行一些浮动访问
  
  虚拟(&b); //调用浮点函数
  
  }


只需在程序中添加此功能。

10-08 04:12