C语言结构问题

#include <stdio.h>
#include <string.h>
#define N 10
struct STU
{
char num[10];
char name[10];
float score;
};
void sort(struct STU*st)
{
struct STU t;
int i,j,min;
for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
if(st[min],score<st[j],score)
min=j;
t=st[i];
st[i]=st[min];
st[min]=t;
}
}
void main()
{
struct STU s[N];
int i;
for(i=0;i<N;i++)
scanf("%s%s%f",s[i].num,s[i].name,&s[i].score);
sort(s);
for(i=0;i<N;i++)
printf("%s%s%f\n",s[i].num,s[i].name,s[i].score);
printf("\n");
}
哪个地方出错了?
--------------------Configuration: 37 - Win32 Debug--------------------
Compiling...
37.cpp
F:\C语言\C++6.0\文件\37.cpp(18) : error C2065: 'score' : undeclared identifier
F:\C语言\C++6.0\文件\37.cpp(18) : error C2677: binary '<' : no global operator defined which takes type 'struct STU' (or there is no acceptable conversion)
执行 cl.exe 时出错.

37.obj - 1 error(s), 0 warning(s)
题目是这样的:有10名学生,每名学生有一门课程的成绩,按成绩由高到低排序。要求:(1)利用结构体数组存放数据;(2)通过函数调用方式。

//有10名学生,每名学生有一门课程的成绩,按成绩由高到低排序。要求:(1)利用结构体数组存放数据;(2)通过函数调用方式
#include <stdio.h>
#include <string.h>
#define N 3
struct STU
{
char num[10];
char name[10];
float score;
};
void sort(struct STU *st)
{
struct STU t;
int i,j,min;
for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
if(st[min].score<st[j].score) //是"."而非","
min=j;
t=st[i];
st[i]=st[min];
st[min]=t;
}
}
void main()
{
struct STU s[N];
int i;
for(i=0;i<N;i++)
{
printf("input number name score %d:",i+1);
scanf("%s%s%f",s[i].num,s[i].name,&s[i].score);
}
sort(s);
for(i=0;i<N;i++)
printf("number:%s namber:%s score:%f\n",s[i].num,s[i].name,s[i].score);
printf("\n");
}

这个可以
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-09
请看代码分析
#include <stdio.h>
#include <string.h>
#define N 10
struct STU
{
char num[10];
char name[10];
float score;
};
void sort(struct STU*st)
{
struct STU t;
int i,j,min;
for(i=0;i<N-1;i++)
{
min=i;
for(j=i+1;j<N;j++)
if(st[min].score<st[j].score)//这里你写成了“,”,至于程序能不能达到目的,得你自己好好分析了,我把你语法上的错误改了下,编译通过了
min=j;
t=st[i];
st[i]=st[min];
st[min]=t;
}
}
void main()
{
struct STU s[N];
int i;
for(i=0;i<N;i++)
scanf("%s%s%f",s[i].num,s[i].name,&s[i].score);
sort(s);
for(i=0;i<N;i++)
printf("%s%s%f\n",s[i].num,s[i].name,s[i].score);
printf("\n");
}
相似回答