69,382
社区成员
发帖
与我相关
我的任务
分享
#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);
}
#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);
}