请大家帮忙分析一下哪里错了,辛苦了谢谢!~~
这是我的代码 谢谢大家帮忙看一下#include<stdio.h>
struct student
{
int num;
char name[15];
float f1;
float f2;
float f3;
float avg;
};
void in(struct student *s)
{
printf("请输入学号:");
scanf("%d",&s->num);
printf("请输入姓名:");
fflush(stdin);
scanf("%s",s->name);
printf("请输入第一门成绩:");
scanf("%f",&s->a1);
printf("请输入第二门成绩:");
scanf("%f",&s->a2);
printf("请输入第三门成绩:");
scanf("%f",&s->a3);
}
void main()
{
struct student stu[50];
int i=0;
char c='y';
do
{
in(&stu[i]);
i++;
if(i==50)
break;
c=getchar();
}while(c='y');
}
仔细看了又看 没发现什么问题 但是每次运行到输入第一门成绩时就会崩溃
----------------解决方案--------------------------------------------------------
#include<stdio.h>
struct student
{
int num;
char name[15];
float f1;
float f2;
float f3;
float avg;
};
void in(struct student *s)
{
printf("请输入学号:");
scanf("%d",&s->num);
printf("请输入姓名:");
fflush(stdin);
scanf("%s",s->name);
printf("请输入第一门成绩:");
scanf("%f",&s->f1);
printf("请输入第二门成绩:");
scanf("%f",&s->f2);
printf("请输入第三门成绩:");
scanf("%f",&s->f3);
}
void main()
{
struct student stu[50];
int i=0;
char c='y';
do
{
in(&stu[i]);
i++;
if(i==50)
break;
c=getchar();
}while(c='y');
}
----------------解决方案--------------------------------------------------------
上面那个发错了 我写的是下面这个 大家帮忙看一下
----------------解决方案--------------------------------------------------------
这样?
#include<stdio.h>
struct student
{
int num;
char name[15];
float f1;
float f2;
float f3;
float avg;
};
void in(struct student *s)
{
printf("请输入学号:");
scanf("%d",&s->num);
printf("请输入姓名:");
fflush(stdin);
scanf("%s",s->name);
printf("请输入第一门成绩:");
scanf("%f",&s->f1);
printf("请输入第二门成绩:");
scanf("%f",&s->f2);
printf("请输入第三门成绩:");
scanf("%f",&s->f3);
}
void main()
{
struct student stu[50];
int i=0;
char c='y';
do
{
in(&stu[i]);
i++;
if(i==50)
break;
fflush(stdin);
c=getchar();
}while(c=='y');
----------------解决方案--------------------------------------------------------
对 就是这个 总是到输入第一门成绩程序就崩溃了
----------------解决方案--------------------------------------------------------
void in(struct student *s)
{
float a=0.1;
printf("请输入学号:");
scanf("%d",&s->num);
printf("请输入姓名:");
fflush(stdin);
scanf("%s",s->name);
getchar();
printf("请输入第一门成绩:");
scanf("%f",&s->f1);
printf("请输入第二门成绩:");
scanf("%f",&s->f2);
printf("请输入第三门成绩:");
scanf("%f",&s->f3);
}
void in(struct student *s)换成我的这个试试
----------------解决方案--------------------------------------------------------
哦!~~可以了哦
但是为什么加一个不相干的float a=0.1;后就可以了呢?
----------------解决方案--------------------------------------------------------
我调试时发现错误代码为:C 运行时错误 R6002,以下是在MSDN中找到的答案:
未加载浮点支持
未链接必需的浮点库。
可能的原因
- 该程序通过选项(如 /FPi87,该选项要求有协处理器)被编译或链接,但该程序运行在一台未安装协处理器的计算机上。
- printf 或 scanf 函数的格式字符串包含浮点格式规范,而该程序不包含任何浮点值或变量。
- 编译器仅当必要时才通过加载浮点支持以最小化程序大小。编译器无法检测到格式字符串中的浮点格式规范,因此编译器未加载必要的浮点例程。
- 使用浮点参数以符合浮点格式规范,或在程序的其他地方执行浮点赋值。该操作将导致加载浮点支持。
- 在由混合语言编写的程序中,当程序进行链接时在 FORTRAN 库之前指定了 C 库。重新链接并最后指定 C 库。
----------------解决方案--------------------------------------------------------
辛苦了!~~非常感谢!~~~~~~谢谢谢谢
----------------解决方案--------------------------------------------------------
TMD
----------------解决方案--------------------------------------------------------