用结构体类型编写一个程序,输入一个学生的学号、姓名、及3门课的成绩,计算机并输出其平均成绩。

 我来答
休闲娱乐chl
高粉答主

2019-09-25 · 每个回答都超有意思的
知道大有可为答主
回答量:5627
采纳率:100%
帮助的人:152万
展开全部

#include "stdio.h"

void main(){

 struct Student{

        char id[10];

        char name[10];

        int score;

    }

    stu = {"001", "Sam", 80};

    printf("%s\t%s\t%d", stu.id, stu.name, stu.score);

}

扩展资料

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。 

C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。但是由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。

因此C++允许用户根据需要自己声明一些类型,用户可以自己声明的类型还有结构体类型(structure)、共用体类型(union)、枚举类型(enumeration)、类类型(class )等,这些统称为用户自定义类型(user-defined type,UDT)。

云云说教育
2019-09-25 · 教育领域爱好者
云云说教育
采纳数:630 获赞数:403563

向TA提问 私信TA
展开全部

#include <iostream>

using namespace std;

struct student 

{

int num;

char name[10];

char sex;

double score[3];

double sum;

};

void out(student *p);

int main()

{

struct student stu[2],*ps;

int i;

for (i=0;i<2;i++)

{

cout<<"Please input score of student"<<i<<endl;

cout<<"num:";

cin>>stu[i].num;

cout<<endl;

cout<<"name:";

cin>>stu[i].name;

cout<<endl;

cout<<"sex:";

cin>>stu[i].sex;

cout<<endl;

for (int j=0;j<3;j++)

{

cout<<"score["<<j<<"]:";

cin>>stu[i].score[j];

cout<<endl;

}

stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];

}

ps=stu;

out(ps);

system ("pause");

return 0;

}

void out(student *p)

{

int i,n=2,min,m,t;

min=p->sum;

m=0;

for (i=0;i<2;i++)

{

if (min<(p+1)->sum)

{

/* t=p->sum;

p->sum=(p+1)->sum;

(p+1)->sum=t;*/

min=(p+1)->sum;

}

cout<<p->num<<"        "<<p->name<<"        "<<p->sex<<"        "<<p->score[0]<<"        "<<p->score[1]<<"        "<<p->score[2]<<"        "<<p->sum<<endl;

}

}

扩展资料

结构体类型名用来作结构体类型的标志。上面的声明中Student就是结构体类型名。大括号内是该结构体中的全部成员(member),由它们组成一个特定的结构体。

num,name,sex,score等都是结构体中的成员。在声明一个结构体类型时必须对各成员都进行类型声明即类型名成员名;每一个成员也称为结构体中的一个域(field)。成员表列又称为域表。

声明结构体类型的位置一般在文件的开头,在所有函数(包括main函数)之前,以便本文件中所有的函数都能利用它来定义变量。当然也可以在函数中声明结构体类型。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
renjianke
推荐于2018-03-13 · TA获得超过2932个赞
知道小有建树答主
回答量:580
采纳率:0%
帮助的人:660万
展开全部

很简单~

自己再改一下~

#include<iostream>

using namespace std;

struct student

{

int number;

char name[10];

float score[3];

float average;

};

void order(student s[],int n)

{

int i,j;

for(int i=0;i<n;i++)

s[i].average=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

if(s[i].average<s[j].average)

{

student temper;

temper=s[i];

s[i]=s[j];

s[j]=temper;

}

for( i=0;i<n;i++)

cout<<s[i].number<<" \t"<<s[i].name<<"\t"<<s[i].score[0]<<"\t"<<s[i].score[1]<<"\t"<<s[i].score[2]<<"\t"<<s[i].average<<endl;

}

int main()

{

int i;

student s[100];

cout<<"enter the numer name and the score of course:"<<endl;

for( i=0;i<100;i++)

{

cin>>s[i].number>>s[i].name>>s[i].score[0]>>s[i].score[1]>>s[i].score[2];

if(s[i].number == 0)

break;

}

cout<<"the order of the score is:"<<endl;

cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"语文"<<"\t"<<"数学"<<"\t"<<"英语"<<"\t"<<"平均成绩"<<endl;

order(s,i);

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式