c语言 结构体数组 比较大小

lhk0801 2012-10-03 03:58:46
下面的代码为什么无法比较大小
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 20
typedef struct
{
char name[N];
char idnum[N];
float yw;
}stu;
stu b[N];
int shuru(stu *p);
void max(stu *s,int a);
int main()
{
int k=0;
while(true)
{
printf("开始输入学生的信息\n");
k=shuru(b);
printf("找出最高分\n");
max(b,k);
}
return 0;
}
int shuru(stu *p)
{
int i=0;
printf("输入学生信\n");
do
{ scanf("%s",p->name);
scanf("%s",p->idnum);
scanf("%f",&(p->yw));
p++;
i++;
}while(strcmp((--p)->name,"end"));
return i;
}
void max(stu *s,int a)
{
float max;
int i;
s=b;
max=s[0].yw;///// 这里插入了断点 但是为什么老是显示的最后一次输入的内容???
for(i=1;i<a;i++)
{
if(max<s[i].yw)
max=s[i].yw;
}
printf("%f",max);
}
...全文
1000 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蛋的猥琐人生 2012-10-03
  • 打赏
  • 举报
回复
我说三楼的大哥 对于初学者 你写的那么优化 他能懂??
qwe8642514 2012-10-03
  • 打赏
  • 举报
回复
正程序看的真费解!
huangxy10 2012-10-03
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 20
typedef struct
{
char name[N];
char idnum[N];
float yw;
}stu;
stu b[N];
int shuru(stu *p);
void max(stu *s,int a);
int main()
{
int k=0;
while(true)
{
printf("开始输入学生的信息\n");
stu * p=b;
k=shuru(p);
printf("找出最高分\n");
max(b,k);
}
return 0;
}
int shuru(stu *p)
{
int i=0;
printf("输入学生信息\n");
/*do
{ scanf("%s",p->name);
scanf("%s",p->idnum);
scanf("%f",&(p->yw));
p++;
i++;
}while(strcmp((--p)->name,"end"));*/ //p加了一次,再这里有减了一次相当于没有变,所以数组中只有一个数

while( scanf("%s",p->name), strcmp(p->name,"end") ){
scanf("%s",p->idnum);
scanf("%f",&(p->yw));
p++;
}

return i;
}
void max(stu *s,int a)
{
float max;
int i;
s=b;
max=s[0].yw;///// 这里插入了断点 但是为什么老是显示的最后一次输入的内容???
for(i=1;i<a;i++)
{
if(max<s[i].yw)
max=s[i].yw;
}
printf("%f",max);
}
JiMoKuangXiangQu 2012-10-03
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define N 20

typedef struct
{
char name[N];
char idnum[N];
float yw;
} stu;

stu b[N];

int shuru(stu *p);
void max(stu *s, int a);

int main(void)
{
int k = 0;

while (true)
{
printf("开始输入学生的信息\n");
k = shuru(b);
printf("找出最高分\n");
max(b, k);
}

return 0;
}

int shuru(stu *p)
{
int i = 0;

printf("输入学生信息:\n");
do
{
scanf("%s", p->name);
scanf("%s", p->idnum);
scanf("%f", &(p->yw));
p++;
i++;
} while (strcmp((--p)->name, "end"));

return i;
}

void max(stu *s, int a)
{
float max;
int i;

s = b;
max = s[0].yw;///// 这里插入了断点 但是为什么老是显示的最后一次输入的内容???
for (i = 1; i < a; i++)
{
if (max < s[i].yw)
max = s[i].yw;
}
printf("%f", max);
}


格式化了一下,这个代码写得真是...

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧