c++怎样用函数输出结构体数组?
已知一个结构体数组s[10],结构体内有数组a[10],整形b。设计一个函数,输出s[5](包括a[10]的所有元素)。...
已知一个结构体数组s[10],结构体内有数组a[10],整形b。
设计一个函数,输出s[5](包括a[10]的所有元素)。 展开
设计一个函数,输出s[5](包括a[10]的所有元素)。 展开
4个回答
展开全部
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;
}
但是,相比较使用结构体的方法,对于候选人和票数的关系,更加直观,联系更加明显。
代码如下:
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;
}
但是,相比较使用结构体的方法,对于候选人和票数的关系,更加直观,联系更加明显。
展开全部
// 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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 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");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的意思太模糊,我按我的理解说几个。
返回值用指针指向一个结构体即可指向另一个结构体(链表)
你是要输出结构体里面的东西的话还是得对结构体里每个类型输出
把结构体数组就当普通数组,不过是结构体数组里面的每个结构体能存不同类型的数据而已
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);
}
不知道这是你要的效果不,上面只是一个输出的小片段,你把它加到函数里就行了,
返回值用指针指向一个结构体即可指向另一个结构体(链表)
你是要输出结构体里面的东西的话还是得对结构体里每个类型输出
把结构体数组就当普通数组,不过是结构体数组里面的每个结构体能存不同类型的数据而已
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);
}
不知道这是你要的效果不,上面只是一个输出的小片段,你把它加到函数里就行了,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询