c++怎样用函数输出结构体数组?

已知一个结构体数组s[10],结构体内有数组a[10],整形b。设计一个函数,输出s[5](包括a[10]的所有元素)。... 已知一个结构体数组s[10],结构体内有数组a[10],整形b。
设计一个函数,输出s[5](包括a[10]的所有元素)。
展开
 我来答
小周高等教育在线答疑
高粉答主

推荐于2017-10-13 · 专业高等教育30年~~~
小周高等教育在线答疑
采纳数:7474 获赞数:274980

向TA提问 私信TA
展开全部
  1.定义结构体数组和定义结构体变量类似,定义结构体数组时只需声明其为数组即可。如:
  代码如下:
  struct Student{
  int num;
  char name[20];
  char sex[5];
  int age;
  float score;
  char addr[30];
  };
  Student stu[3]; //定义Student类型的数组stu
  2.结构体数组的应用举例
  题目:对候选人的票的统计程序。
  设有3个候选人,最终只能有一个当选为领导。今有10个人参加投票,从键盘先后输入这10个人所投的候选人的名字,要求最后能输出这3个候选人的的票结果。
  代码如下:
  #include<iostream>
  using namespace std;
  struct Person{
  char name[20]; //姓名
  int count; //票数计数器
  };
  int main(){
  Person leader[3]={"Tom",0,"Neo",0,"Marry",0};
  //定义Person类型的数组,内容为3个候选人的姓名和票数
  int i,j,k=0;
  bool tag;
  cout<<"please input the name of the leader : Tom Neo Marry\n\n";
  char leadername[20]; //该数组为每次输入的候选人的名字
  for(i=0;i<10;i++){ //循环输入这10个人选的候选人的名字
  cout<<"input name "<<i+1<<" :";
  cin>>leadername;
  tag=1;
  for(j=0;j<3;j++){
  if(strcmp(leadername,leader[j].name)==0){
  leader[j].count++;
  tag=0;
  }
  }
  if(tag==1)k++;
  }
  cout<<endl;
  for(i=0;i<3;i++){
  cout<<leader[i].name<<":"<<leader[i].count<<endl;
  }
  cout<<"Abandoned tickets:"<<k<<endl;
  return 0;
  }
  当然,如果不使用结构体也可以解决这个问题:
  代码如下:
  #include<iostream>
  #include<string>
  using namespace std;
  int main(){
  char *name[3]={"Tom","Neo","Marry"};
  int count[3]={0,0,0};
  int i,j,k=0;
  bool tag=1;
  cout<<"please input the name of the leader : Tom Neo Marry\n\n";
  char leadername[20];
  for(i=0;i<10;i++){
  cout<<"input name "<<i+1<<" :";
  cin>>leadername;
  for(j=0;j<3;j++){
  if(strcmp(leadername,name[j])==0){
  count[j]++;
  tag=0;
  }
  }
  if(tag==1)k++;
  tag=1;
  }
  cout<<endl;
  for(i=0;i<3;i++){
  cout<<name[i]<<":"<<count[i]<<endl;
  }
  cout<<"Abandoned tickets:"<<k<<endl;
  return 0;
  }
  或者
  代码如下:
  #include<iostream>
  #include<string>
  using namespace std;
  int main(){
  string name[3]={"Tom","Neo","Marry"};
  int count[3]={0,0,0};
  int i,j,k=0;
  bool tag=1;
  cout<<"please input the name of the leader : Tom Neo Marry\n\n";
  string leadername;
  for(i=0;i<10;i++){
  cout<<"input name "<<i+1<<" :";
  cin>>leadername;
  for(j=0;j<3;j++){
  if(leadername==name[j]){
  count[j]++;
  tag=0;
  }
  }
  if(tag==1)k++;
  tag=1;
  }
  cout<<endl;
  for(i=0;i<3;i++){
  cout<<name[i]<<":"<<count[i]<<endl;
  }
  cout<<"Abandoned tickets:"<<k<<endl;
  return 0;
  }
  但是,相比较使用结构体的方法,对于候选人和票数的关系,更加直观,联系更加明显。
帐号已注销
2015-10-24 · TA获得超过3.1万个赞
知道大有可为答主
回答量:6571
采纳率:86%
帮助的人:908万
展开全部
// aaa.cpp : Defines the entry point for the console application.
//
 
#include "<a href="https://www.baidu.com/s?wd=stdafx.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dWmhcvPyRzPhcvmvP-m1Tk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4rj6zn1R3P1T3PWn4nW6dnjT" target="_blank" class="baidu-highlight">stdafx.h</a>"
#include<<a href="https://www.baidu.com/s?wd=stdlib.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dWmhcvPyRzPhcvmvP-m1Tk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4rj6zn1R3P1T3PWn4nW6dnjT" target="_blank" class="baidu-highlight">stdlib.h</a>>
#include<<a href="https://www.baidu.com/s?wd=stdio.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dWmhcvPyRzPhcvmvP-m1Tk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4rj6zn1R3P1T3PWn4nW6dnjT" target="_blank" class="baidu-highlight">stdio.h</a>>
#include<<a href="https://www.baidu.com/s?wd=string.h&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dWmhcvPyRzPhcvmvP-m1Tk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1D4rj6zn1R3P1T3PWn4nW6dnjT" target="_blank" class="baidu-highlight">string.h</a>>
 
typedef struct myStruct{
    int i;
    int j;
};
 
myStruct myArray[10]  ;//定义一个结构体数组
  
myStruct * Demo()   //举例函数
{
    myStruct Array[10]  ;
    Array[0].i = 12;
    Array[0].j = 23;
 
    Array[1].i = 12;
    Array[1].j = 23;
    return Array;

 
int main()
{
 
    printf("Data = %d  , %d \n",Demo()[0].i,Demo()[0].j); //函数调用 打印输出
 
    system("pause");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnnbwhq1972
推荐于2017-09-17 · TA获得超过3843个赞
知道小有建树答主
回答量:488
采纳率:83%
帮助的人:240万
展开全部
// aaa.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

typedef struct myStruct{
int i;
int j;
};

myStruct myArray[10]  ;//定义一个结构体数组
 
myStruct * Demo()   //举例函数
{
myStruct Array[10]  ;
Array[0].i = 12;
Array[0].j = 23;

Array[1].i = 12;
Array[1].j = 23;
return Array;


int main()
{

printf("Data = %d  , %d \n",Demo()[0].i,Demo()[0].j); //函数调用 打印输出

system("pause");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仙魔法阴阳师
2014-04-20 · 超过25用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:76万
展开全部
你说的意思太模糊,我按我的理解说几个。
返回值用指针指向一个结构体即可指向另一个结构体(链表)

你是要输出结构体里面的东西的话还是得对结构体里每个类型输出
把结构体数组就当普通数组,不过是结构体数组里面的每个结构体能存不同类型的数据而已

for(i=0;i<5;i++)
{
for(j=0;j<10;j++)

{

printf("%d\n",s[i].a[j]);

}

printf("%d\n",s[i].b);
}
不知道这是你要的效果不,上面只是一个输出的小片段,你把它加到函数里就行了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式