首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求大神指点结构体输出

2013-06-26 
求大神指导结构体输出#includestdio.hstruct stu{int numchar name[20]int score}void input (struc

求大神指导结构体输出
#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);
[解决办法]

引用:
主要问题在这: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
请按任意键继续. . .

[解决办法]
引用:
不行啊,这样改,我在vc6.0上运行还是不对啊


1. 请描述错误或者通过分析调试找到原因。 
2. vc 6.0实在太陈旧了。 


[解决办法]
struct stu
{
int num;
int score;
char name[20];
};

void input (struct stu a[],int m)
{
int i,k;


for(i=0;i<m;i++)
{
printf("??ê?è??§éúμ??§o?D???3é?¨\n");
scanf("%d,%d,%s",&(a[i].num),&(a[i].score),a[i].name);
}
}

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)
{
strcpy(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);
}
没任何问题啊,输出的也对啊。

热点排行