求大神指点结构体输出
求大神指导结构体输出
#include<stdio.h>
struct stu
{
int num;
char name[20];
int score;
};
void input (struct stu a[],int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入学生的学号姓名成绩\n");
scanf("%d,%s,%d",&a[i].num,a[i].name,&a[i].score);
}
}
void max(struct stu a[],int n)
{
int i,p=0,m=a[0].score;
struct stu max;
for(i=1;i<n;i++)
{
if(a[i].score>m)
{
p=i;
m=a[i].score;
max.name=a[i].name;
max.num=a[i].num;
max.score=a[i].score;
}
}
printf("%d\t%s\t%d\n",max.num,max.name,max.score);
}
main()
{
struct stu a[2];
input(a,2);
max(a,2);
}要求输出四个学生中成绩最高者,信息包括学号、姓名、成绩。求大神帮忙给改改
------解决方案--------------------
struct stu
{
int num;
int score;
char name[20]; //换了下位置,如果不换位置你输入的字符长度一定要是20
};
void input (struct stu a[],int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入学生的学号姓名成绩\n");
scanf("%d,%d,%s",&a[i].num,&a[i].score,a[i].name);
}
}
------解决方案--------------------
主要问题在这:max.name=a[i].name;
数组不成直接赋值,加头文件#include string.h
strcpy(max.name, a[i].name);
------解决方案--------------------
是的 数组的名字是属于地址常量 不允许赋值修改的
------解决方案--------------------
测试
------解决方案--------------------
1. 请描述错误或者通过分析调试找到原因。
2. vc 6.0实在太陈旧了。
#include<stdio.h>
struct stu
{
int num;
char name[20];
int score;
};
void input (struct stu a[],int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入学生的学号姓名成绩\n");
scanf("%d,%s,%d",&a[i].num,a[i].name,&a[i].score);
}
}
void max(struct stu a[],int n)
{
int i,p=0,m=a[0].score;
struct stu max;
for(i=1;i<n;i++)
{
if(a[i].score>m)
{
p=i;
m=a[i].score;
max.name=a[i].name;
max.num=a[i].num;
max.score=a[i].score;
}
}
printf("%d\t%s\t%d\n",max.num,max.name,max.score);
}
main()
{
struct stu a[2];
input(a,2);
max(a,2);
}要求输出四个学生中成绩最高者,信息包括学号、姓名、成绩。求大神帮忙给改改
结构体、c语言
------解决方案--------------------
struct stu
{
int num;
int score;
char name[20]; //换了下位置,如果不换位置你输入的字符长度一定要是20
};
void input (struct stu a[],int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入学生的学号姓名成绩\n");
scanf("%d,%d,%s",&a[i].num,&a[i].score,a[i].name);
}
}
------解决方案--------------------
主要问题在这:max.name=a[i].name;
数组不成直接赋值,加头文件#include string.h
strcpy(max.name, a[i].name);
------解决方案--------------------
是的 数组的名字是属于地址常量 不允许赋值修改的
------解决方案--------------------
#include<stdio.h>
struct stu
{
int num;
char name[20];
int score;
};
void input (struct stu a[],int m)
{
int i;
for(i=0;i<m;i++)
{
printf("请输入学生的学号姓名成绩\n");
scanf("%d%19s%d",&a[i].num,a[i].name,&a[i].score);
}
}
void max(struct stu a[],int n)
{
int i, m = 0;
for(i=1;i < n;i++)
{
if(a[i].score > a[m].score)
{
m = i;
}
}
printf("%d\t%s\t%d\n",a[m].num,a[m].name,a[m].score);
}
int main()
{
struct stu a[2];
input(a,2);
max(a,2);
return 0;
}
测试
请输入学生的学号姓名成绩
1 jack 89
请输入学生的学号姓名成绩
2 marry 99
2 marry 99
请按任意键继续. . .
------解决方案--------------------
1. 请描述错误或者通过分析调试找到原因。
2. vc 6.0实在太陈旧了。