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); //调用浮点函数
}
只需在程序中添加此功能。