CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

书上程序的小问题,怎么解决?请指教

楼主zsh6709(世界上没有后悔药吃的!!!)2005-06-01 21:05:52 在 C/C++ / C++ 语言 提问

//假定一个学生的信息包含如下:学号,姓名,三门功课的成绩和住址。其中,  
  //住址又分校内和校外两种。  
  struct   off_school  
  {  
  int   strnum;  
  char   strname[20];  
  char   city[20];  
  };  
  struct   in_school  
  {  
  char   collname[10];  
  char   dorm[10];  
  int   roomnum;  
  };  
  union   address  
  {  
  struct   off_school   town;  
  struct   in_school   gown;  
  };  
  union   student  
  {  
  long   stunum;  
  char   name[20];  
  int   grade[3];  
  char   off_in;  
  union   address   add;  
  }s[4]={   {99001,"Ma",{89,85,78},'f'},{99002,"Wang",   {92,95,90},'n'},  
  {99003,"Lu",{78,80,81},'f'},                 {99004,"Zhang",{89,86,81},'n'}   };  
  //问题在这里,编译器说这儿的初始化太多,请问该怎么解决??  
  #include<iostream.h>  
  #include<string.h>  
  void   main()  
  {  
  char   name[20];  
  for(int   i=0;i<4;i++)  
  {  
  cout<<"Input   address--";  
  if(s[i].off_in=='f')  
  {  
  cout<<"strnum,strname,city:";  
  cin>>s[i].add.town.strnum>>s[i].add.town.strname>>s[i].add.town.city;  
  }  
  else  
  {  
  cout<<"collname,dorm,roomnum:";  
  cin>>s[i].add.gown.collname>>s[i].add.gown.dorm>>s[i].add.gown.roomnum;  
  }  
  }  
  cout<<"Input   name:";  
  cin>>name;  
  for(i=0;i<4;i++)  
  {  
  if(!strcmp(s[i].name,name))  
  if(s[i].off_in=='f')  
  {  
  cout<<s[i].add.town.strnum<<','<<s[i].add.town.strname<<','  
  <<s[i].add.town.city<<endl;  
  cout<<s[i].grade[0]+s[i].grade[1]+s[i].grade[2]<<endl;  
  }  
  else  
  {  
  cout<<s[i].add.gown.collname<<','<<s[i].add.gown.dorm<<','  
  <<s[i].add.gown.roomnum<<endl;  
  cout<<s[i].grade[0]+s[i].grade[1]+s[i].grade[2]<<endl;  
  }  
  }  
  } 问题点数:10、回复次数:14Top

1 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-01 21:25:17 得分 0

不会是说分少了吧,怎么没有人来回答呢?  
  特别是“俗人”,“恰似你的温柔”,等,你们的人呢?Top

2 楼lbing7(向青润老大学习!!!)回复于 2005-06-01 22:08:48 得分 0

union   student  
  {  
  long   stunum;  
  char   name[20];  
  int   grade[3];  
  char   off_in;  
  union   address   add;  
  }s[4]={   {99001,"Ma",{89,85,78},'f'},{99002,"Wang",   {92,95,90},'n'},  
  {99003,"Lu",{78,80,81},'f'},                 {99004,"Zhang",{89,86,81},'n'}   };  
  //问题在这里,编译器说这儿的初始化太多,请问该怎么解决??  
   
   
  你的这个东西应该是结构体而不是连合体吧??Top

3 楼lbing7(向青润老大学习!!!)回复于 2005-06-01 22:08:55 得分 0

union   student  
  {  
  long   stunum;  
  char   name[20];  
  int   grade[3];  
  char   off_in;  
  union   address   add;  
  }s[4]={   {99001,"Ma",{89,85,78},'f'},{99002,"Wang",   {92,95,90},'n'},  
  {99003,"Lu",{78,80,81},'f'},                 {99004,"Zhang",{89,86,81},'n'}   };  
  //问题在这里,编译器说这儿的初始化太多,请问该怎么解决??  
   
   
  你的这个东西应该是结构体而不是连合体吧??Top

4 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-01 22:28:57 得分 0

这是一个结构中有联合变量,联合变量对应着结构变量。  
  是一个结构与联合相互嵌套的例子!Top

5 楼sinkinglife(沉沦)回复于 2005-06-01 23:02:13 得分 0

相互嵌套是不错,但是你的union   student{   };是不对的。应该是struct   student{};联合里面的成员是不能同时出现的。你的s[0]到s[4]中stunum,name,grade[3]都同时出现了。Top

6 楼sinkinglife(沉沦)回复于 2005-06-01 23:04:10 得分 0

是s[0]到s[3],打错了。Top

7 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-01 23:11:18 得分 0

我知道是s[0]到s[3],但怎么改?就不知道改哪里了?Top

8 楼mostideal(三甲)回复于 2005-06-01 23:31:15 得分 0

联合里面的成员是不能同时出现的。  
  ---------------------------------------  
  的确是这样了。。Top

9 楼zdy_8212(zdy_8212)回复于 2005-06-02 01:26:50 得分 0

重新描述一下类型结构Top

10 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-02 07:56:04 得分 0

这个问题,以前碰到过,现在不知道了,所以请大家帮忙改正改正!1Top

11 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-02 08:46:10 得分 0

为什么??Top

12 楼clear117(小风)回复于 2005-06-02 09:23:44 得分 8

其实这个是对共用体使用的错误  
  把“union   student”改成“struct   student”就好  
   
  原因在于:共用体变量的各个成员使用共同的内存区域,所以共用体变量的内存空间在某个时刻只能保持某个成员的数据。由此可知,在程序中参加运算的必然是共用体变量的某个成员,而不能直接使用共用体变量。  
   
  从你的赋值来看那里应该是结构体而不是共用体  
   
  请大家发表自己的看法~~~Top

13 楼zsh6709(世界上没有后悔药吃的!!!)回复于 2005-06-02 09:40:58 得分 0

太对了,联合体是不能这么赋值的。Top

14 楼llf_hust()回复于 2005-06-02 09:41:03 得分 2

应该是结构体Top

相关问题

  • 书上的范例C程序,我改造成C++程序怎么编译不通过?请指点!
  • 请问WinCE应用程序的安装程序怎么做?
  • 请问怎么把CBC编译程序变成安装程序
  • 请问,怎么调用外部程序?
  • 请问怎么编汇编程序
  • 一个小程序,请问怎么做?
  • 请问这个程序怎么写?
  • 请问c++程序怎么编?
  • 请问,怎么调试mts程序。
  • 请问卸载程序怎么制作?

关键词

  • gown
  • town
  • school
  • union
  • struct
  • add
  • char

得分解答快速导航

  • 帖主:zsh6709
  • clear117
  • llf_hust

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo