| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2250 人关注过本帖
标题:结构体之间的嵌套 为什么运行不了?
取消只看楼主 加入收藏
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:9 
结构体之间的嵌套 为什么运行不了?
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef
struct{
char name[10];
char sex;
unsigned int age;
}Person;

typedef
struct{
  int math;
  int english;

 int chinese;
  int average;
}Grade;

typedef
struct{
Person person;
long number;
Grade grade;
}Student;
void personInput(Person *pPerson);
void personOutput(Person *pPerson);
void gradeInput(Grade *pGrade);
void gradeOutput(Grade *pGrade);
void studentInput(Student *pstudent);
void studentOutput(Student *pstudent);

int main()
{
    int i;
    Student stu[]={{},{}};


    printf("请输入学生信息:");
  studentInput(&stu[i]);}
if(Student stu[0]->Grade->average<Student stu[1]->Grade->average)
    printf("%s 比 %s 平均成绩低",stu[0],stu[1]);
else printf("%s 比 %s 平均成绩低",stu[1],stu[0]);
   for(i=0;i<2;i++)
  studentOutput(&stu[i]);
    printf("So Easy!");

    return 0;

}

 void personInput(Person *pPerson){
printf("请输入姓名:");
scanf("%s",pPerson->name);
getchar();
printf("请输入性别:");
scanf("%c",&(pPerson->sex));
printf("请输入年龄:");
scanf("%u",&(pPerson->age));}

void personOutput(Person *pPerson){
printf("person:%s的个人信息为:\n",pPerson->name);
printf("\t Name: %s\n",pPerson->name);
printf("\t Sex : %c\n",pPerson->sex);
printf("\t Age : %d\n",pPerson->age);
}
void gradeInput(Grade *pGrade){
printf("请输入数学成绩:");
scanf("%d",&pGrade->math);
printf("请输入英语成绩:");
scanf("%d",&pGrade->english);
printf("请输入语文成绩:");
scanf("%d",&pGrade->chinese);
printf("请输入平均分成绩:");
scanf("%d",&pGrade->average);
}
void gradeOutput(Grade *pGrade){
printf("\t 数学:%d\n",pGrade->math);
printf("\t 英语:%d\n",pGrade->english);
printf("\t 语文:%d\n",pGrade->chinese);
printf("\t 平均分:%d\n",pGrade->average);
}
void studentInput(Student *pstudent){
    personInput(&pstudent->person);
    printf("请输入学号:\n");
    scanf("%ld",&pstudent->number);
    gradeInput(&pstudent->grade);
    }
void studentOutput(Student *pstudent){
    personOutput(&pstudent->person);
    gradeOutput(&pstudent->grade);
    printf("学号:%ld",pstudent->number);


}















麻烦大神看一下

[此贴子已经被作者于2016-12-13 14:12编辑过]

搜索更多相关主题的帖子: 结构体 
2016-12-13 11:01
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 2楼 grmmylbs
上面的问题解决了,程序为什么运行不了?
2016-12-13 11:21
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 5楼 九转星河
Student stu[2]  ?   这样表示可以吗/》?   求大神解答为什么没有报错却运行不了,不知道哪里错了。
2016-12-13 13:02
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 7楼 九转星河
我用这个   Student stu[2];    没有报错
2016-12-13 13:13
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 10楼 九转星河
请问一下这是什么原因,为什么用*nanme不行呢》?
2016-12-13 13:40
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 11楼 九转星河
if(Student stu[0]->Grade->average<Student stu[1]->Grade->average)
    printf("%s 比 %s 平均成绩低",stu[0],stu[1]);
else printf("%s 比 %s 平均成绩低",stu[1],stu[0]);



不知道这个平均分怎么比较,我知道我这个是不对的
2016-12-13 13:48
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 15楼 九转星河
怎么做
2016-12-13 13:58
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 17楼 九转星河
问题是怎么找到average的值 用的数组 怎么可以表示average1,和average2 ?  (Student stu[0]->Grade->average我的方法报错怎么办?
2016-12-13 14:05
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 19楼 九转星河
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef
struct{
char name[10];
char sex;
unsigned int age;
}Person;

typedef
struct{
  int math;
  int english;

 int chinese;
  int average;
}Grade;

typedef
struct{
Person person;
long number;
Grade grade;
}Student;
void personInput(Person *pPerson);
void personOutput(Person *pPerson);
void gradeInput(Grade *pGrade);
void gradeOutput(Grade *pGrade);
void studentInput(Student *pstudent);
void studentOutput(Student *pstudent);

int main()
{
    int i;
    Student stu[]={{},{}};


    printf("请输入学生信息:");
  studentInput(&stu[i]);}
if(Student stu[0]->Grade->average<Student stu[1]->Grade->average)
    printf("%s 比 %s 平均成绩低",stu[0],stu[1]);
else printf("%s 比 %s 平均成绩低",stu[1],stu[0]);
   for(i=0;i<2;i++)
  studentOutput(&stu[i]);
    printf("So Easy!");

    return 0;

}

 void personInput(Person *pPerson){
printf("请输入姓名:");
scanf("%s",pPerson->name);
getchar();
printf("请输入性别:");
scanf("%c",&(pPerson->sex));
printf("请输入年龄:");
scanf("%u",&(pPerson->age));}

void personOutput(Person *pPerson){
printf("person:%s的个人信息为:\n",pPerson->name);
printf("\t Name: %s\n",pPerson->name);
printf("\t Sex : %c\n",pPerson->sex);
printf("\t Age : %d\n",pPerson->age);
}
void gradeInput(Grade *pGrade){
printf("请输入数学成绩:");
scanf("%d",&pGrade->math);
printf("请输入英语成绩:");
scanf("%d",&pGrade->english);
printf("请输入语文成绩:");
scanf("%d",&pGrade->chinese);
printf("请输入平均分成绩:");
scanf("%d",&pGrade->average);
}
void gradeOutput(Grade *pGrade){
printf("\t 数学:%d\n",pGrade->math);
printf("\t 英语:%d\n",pGrade->english);
printf("\t 语文:%d\n",pGrade->chinese);
printf("\t 平均分:%d\n",pGrade->average);
}
void studentInput(Student *pstudent){
    personInput(&pstudent->person);
    printf("请输入学号:\n");
    scanf("%ld",&pstudent->number);
    gradeInput(&pstudent->grade);
    }
void studentOutput(Student *pstudent){
    personOutput(&pstudent->person);
    gradeOutput(&pstudent->grade);
    printf("学号:%ld",pstudent->number);


}











2016-12-13 14:12
a3575181
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2016-12-13
收藏
得分:0 
回复 23楼 九转星河
不能用 ->   吗?  搞不懂指向到底是怎么用
2016-12-13 14:40
快速回复:结构体之间的嵌套 为什么运行不了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016495 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved