[讨论]请教一个结构算法~~~
下面是一个从几个学生当中找出两科成绩中至少有一科不及格的学生,并输出其姓名(为了快,我只用了两个人)
程序在若是在定义结构体的时候对它进行初始化,运行就不会有问题,
若是在运行的时候对它进行赋值,程序就会出现逻辑错误,
下面我给出我写的程序
定义的时候初始化:
程序(1):
#include< stdio.h>
struct student
{
int id;
char name[20];
float score1;
float score2;
}stu[2]={1,"name1",55,94,2,"name2",77,88};
main()
{
int i;
for(i=0;i<2;i++)
{
if(stu[ i].score1<60 || stu[ i].score2<60)
printf("%s\n",stu[ i].name);
}
system("pause");
}
上 面的程序运行的时候没有问题
下面的是运行的时候对它进行赋值
程序(2):
#include<stdio.h>
struct student
{
int id;
char name[20];
float score1;
float score2;
}stu[2];
main()
{
int i;
for(i=0;i<2;i++)
scanf("%d,%s,%f,%f",&stu[ i].id,stu[ i].name,&stu[ i].score1,
&stu[ i].score2);
for(i=0;i<2;i++)
{
if(stu[ i].score1<60 || stu[ i].score2<60)
printf("%s\n",stu[ i].name);
}
system("pause");
}
运行的时候就会出现错误,就是在输出的时候会把 name 后的全都输入,而且这个
if 好象不起作用
然后我又改成下面这样对它进行赋值:
程序(3):
#include<stdio.h>
struct student
{
int id;
char name[20];
float score1;
float score2;
}stu[2];
main()
{
int i;
for(i=0;i<2;i++)
{
scanf("%d",&stu[ i].id);
scanf("%s",stu[ i].name);
scanf("%f",&stu[ i].score1);
scanf("%f",&stu[ i].score2);
}
for(i=0;i<2;i++)
{
if(stu[ i].score1<60 || stu[ i].score2<60)
printf("%s\n",stu[ i].name);
}
system("pause");
}
若是这样就,运行的时候,在输入值的时候就会出现“scanf : floating point formats not linked Abnormal program termination"的错误
出现这样的错误于是我又改成下面这样
程序(4):
#include<stdio.h>
struct student
{
int id;
char name[20];
float score1;
float score2;
}stu[2];
main()
{
int i;
for(i=0;i<2;i++)
scanf("%d%s%f%f",&stu[ i].id,stu[ i].name,&stu[ i].score1,
&stu[ i].score2);
for(i=0;i<2;i++)
{
if(stu[ i].score1<60 || stu[ i].score2<60)
printf("%s\n",stu[ i].name);
}
system("pause");
}
就是把程序(2)中的 scanf 里面的”,“给去了,程序在运行的时候,对它进行赋值时就会出现程序(3)一样的错误,就是”scanf : floating point formats not linked Abnormal program termination" 的错误
这个问题我想好久也没有解决,
哪个大虾知道这是怎么回事的???
望指点一下我这只菜鸟、??
俺在这先谢 了~~~~~(上面的程序用 TC,WIN-TC 都是一样的结果)