当前位置: 代码迷 >> C语言 >> 请大家帮忙分析一下哪里错了,辛苦了谢谢!~~
  详细解决方案

请大家帮忙分析一下哪里错了,辛苦了谢谢!~~

热度:436   发布时间:2007-04-03 22:55:14.0
请大家帮忙分析一下哪里错了,辛苦了谢谢!~~
这是我的代码 谢谢大家帮忙看一下
#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');
}
仔细看了又看 没发现什么问题 但是每次运行到输入第一门成绩时就会崩溃
搜索更多相关的解决方案: float  printf  scanf  name  

----------------解决方案--------------------------------------------------------
#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,该选项要求有协处理器)被编译或链接,但该程序运行在一台未安装协处理器的计算机上。
  • printfscanf 函数的格式字符串包含浮点格式规范,而该程序不包含任何浮点值或变量。
  • 编译器仅当必要时才通过加载浮点支持以最小化程序大小。编译器无法检测到格式字符串中的浮点格式规范,因此编译器未加载必要的浮点例程。
  • 使用浮点参数以符合浮点格式规范,或在程序的其他地方执行浮点赋值。该操作将导致加载浮点支持。
  • 在由混合语言编写的程序中,当程序进行链接时在 FORTRAN 库之前指定了 C 库。重新链接并最后指定 C 库。

----------------解决方案--------------------------------------------------------

辛苦了!~~非常感谢!~~~~~~谢谢谢谢


----------------解决方案--------------------------------------------------------

TMD


----------------解决方案--------------------------------------------------------
  相关解决方案