用结构体编写学生成绩
㈠ C语言结构体与共用体 编写程序,有10个学生,每个学生的数据包括:学号,姓名,3门课程的成绩,输
#include "stdio.h"
#include <stdlib.h>
#define SIZE 10
struct student{
char id[20];
char name[20];
int score[3];
float average;
} stud[SIZE];
void input() /* 输入学生的信息 */
{
int i;
for(i=0;i<SIZE;i++)
{
printf("第%d个学生的信息:\n",i+1);
scanf("%s%s%d%d%d",stud[i].id,stud[i].name,&stud[i].score[0],&stud[i].score[1],&stud[i].score[2]);
stud[i].average=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/3.0;
}
}
void sort /* 按照平均分由高到低排列 */
{
int i,j;
struct student temp;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE-i-1;j++)
{
if(stud[j].average<stud[j+1].average)
{
temp=stud[j];
stud[j]=stud[j+1];
stud[j+1]=temp;
}
}
}
}
void output() /* 输出学生的信息 */
{
int i;
printf("\n");
for(i=0;i<SIZE;i++)
printf("%s %s %d %d %d %3.1f\n",stud[i].id,stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].average);
}
void main()
{
input();
sort();
output();
}
㈡ C语言编程 用结构体的知识编程输入并打印学生的成绩与信息
#include<stdio.h>
#define N 10
struct Student
{
char id[8],name[8];
int s1,s2,s3;
float ave_s;
};
int main()
{
struct Student s[N];
int i,p;
/* 输入学生成绩信息,并计算平均成绩 */
for(i=0; i<N; i++)
{
printf("输入学生 %d 的学号 姓名 和3门课的成绩:",i+1);
scanf("%s%s%d%d%d",&s[i].id,&s[i].name,&s[i].s1,&s[i].s2,&s[i].s3);
s[i].ave_s=(s[i].s1+s[i].s2+s[i].s3)/3.0;
}
/* 输出每个学生的平均成绩 */
printf(" 学号 平均成绩\n");
for(i=0; i<N; i++)
printf("%8s%8.1f\n\n",s[i].id,s[i].ave_s);
/* 查找平均成绩最高的学生 */
p=0;
for(i=0; i<N; i++)
if(s[i].ave_s>s[p].ave_s)
p=i;
/* 输出平均成绩最高的学生信息 */
printf(" 学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("%8s%8s%8d%8d%8d%8.1f\n",s[p].id,s[p].name,s[p].s1,s[p].s2,s[p].s3,s[p].ave_s);
return 0;
}
㈢ 用结构体类型编写一个程序,输入一个学生的学号、姓名、及3门课的成绩,计算机并输出其平均成绩。
#include "stdio.h"
void main(){
struct Student{
char id[10];
char name[10];
int score;
}
stu = {"001", "Sam", 80};
printf("%s %s %d", stu.id, stu.name, stu.score);
}
(3)用结构体编写学生成绩扩展阅读
在C语言中,结构体(struct)指的是一种数据结构,是语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。但是由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。
因此C++允许用户根据需要自己声明一些类型,用户可以自己声明的类型还有结构体类型(structure)、共用体类型(union)、枚举类型(enumeration)、类类型(class )等,这些统称为用户自定义类型(user-defined type,UDT)。
㈣ 用结构体完成N个学生M名课程的成绩排序 用C语言编写
这里是4名学生一门成绩的排序,不过中间还有生日,希望能给你带来点灵感吧!源代码如下:
#include <stdio.h>
struct student_record
{
char name[8];
struct birth
{
int year;
int month;
int day;
}date;
int score;
}student[4];
void main()
{
struct student_record student[4];
struct student_record stu;
int i,j;
printf("please input date:\n");
for(i=0;i<4;i++)
scanf("%s%d%d%d%d",student[i].name,&student[i].date.year,
&student[i].date.month,&student[i].date.day,&student[i].score);
printf("OUTPUT:\n");
printf("NAME BIRTH SCORE\n");
for(j=1;j<=3;j++)
for(i=0;i<4-j;i++)
{
if(student[i].score<student[i+1].score)
{
stu=student[i];
student[i]=student[i+1];
student[i+1]=stu;
}
}
for(i=0;i<4;i++)
printf("%s %d,%d,%d %d\n",student[i].name,student[i].date.year,
student[i].date.month,student[i].date.day,student[i].score);
}
㈤ 利用结构体类型编制一程序,实现输入三个学生的学号,数学语文英语成绩,然后计算每位学生的总成绩以及平均
// struct.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
/*利用结构体类型编制一程序,实现输入三个学生的学号,
数学语文英语成绩,然后计算每位学生的总成绩以及平均成绩 */
int main(int argc, char* argv[])
{
struct stu
{
int stuno;
int mathgrade;
int yuwengrade;
int enggrade;
} a[3] ;
int av_math=0;
int av_yuwen=0 ;
int av_eng=0 ;
for (int i=0 ; i<3 ;i++)
{
printf("请输入第%d位同学的数据:\n",i+1);
printf("请依次输入学号、数学成绩、语文成绩、英语成绩!\n");
scanf("%d %d %d %d",&a[i].stuno,&a[i].mathgrade,&a[i].yuwengrade,&a[i].enggrade) ;
}
printf("数据录入完毕!计算成绩中........\n");
for(int j =0 ;j<3 ;j++)
{
printf("学号为%d的同学的总成绩为:%d\n",a[j].stuno ,a[j].mathgrade + a[j].yuwengrade +a[j].enggrade);
av_math =av_math + a[j].mathgrade ;
av_yuwen =av_yuwen +a[j].yuwengrade ;
av_eng = av_eng +a[j].enggrade;
}
printf("数学的平均成绩是:%d\n",av_math/3) ;
printf("语文的平均成绩是:%d\n",av_yuwen/3) ;
printf("英语的平均成绩是:%d\n",av_eng/3) ;
return 0;
}
哥测试通过了。。放心的黏贴吧
㈥ 用C语言结构体指针编程序实现输入十个学生的学号,期中和期末成绩,计算输出成绩表和学生平均分
#include<iostream>
#include<string>
using namespace std;
//=============<开始定义结构体>===================================================
struct combox{
int num;
int mark;
string name;
combox *next;
};
//=============<结束定义结构体>===================================================
//=============<开始定义Commonbox类>==============================================
//-----类体开始------------------------
class Commonbox{
private:
combox *head;void Swap(combox *,combox *); //交换两个combox变量的数据域
void Print(combox *); //输出一combox指定的记录
combox *Find(int); //查找条例条件的记录,并返回该记录的指针
public:
Commonbox(){head=NULL;}
int ListCount(); //统计当前链表的记录总数,返回一个整数
void AddItem(int num, string name, int mark); //添加一条记录到表尾
void RemoveItem(int); //删除一条指定的记录
void List(); //列出当前链表中的所有记录
void Sort(); //对当前链表进行排序
void Search(int); //在当前链表查找指定记录并输出
float Average(); //计算平均成绩
(6)用结构体编写学生成绩扩展阅读
用C语言结构体指针编程序应用方法:
将一个结构体变量中的数据传递给另一个函数,有下列3种方法:
(1) 用结构体变量名作参数。一般较少用这种方法。
(2) 用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
(3) 用结构体变量的引用变量作函数参数。
在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除。C语言中是利用库函数malloc和free来分配和撤销内存空间的。
㈦ c语言编程,用结构体编学生成绩系统
#include <stdio.h>
#include <string.h>
#define STU_NUM 10//学生数
#define SCORE_NUM 6//每个学生的科目数
typedef struct /*定义结构体数组*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
float score[SCORE_NUM]; /*成绩*/
float total;//总分
float average;//平均分
} Student;
Student stu[STU_NUM];
//输入学生信息
void input()
{
int i,j;
printf("请输入%d个学生的信息:\n",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}
//输出学生信息
void output()
{
int i,j;
//打印表头
printf("学号\t姓名\t");
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d\t",j+1);
}
printf("总分\t平均分\n");
//打印所有学生信息
for(i=0;i<STU_NUM;i++)
{
printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("%3.2f\t",stu[i].score[j]);
}
printf("%3.2f\t%3.2f\n",stu[i].total,stu[i].average);
}
}
//计算总分和平均分
void process()
{
int i,j;
for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}
//排序并输出
void sort()
{
Student tStu;
int i,j;
for(i=0;i<STU_NUM;i++)
{
for(j=STU_NUM-1;j>i;j--)
{
if(stu[j].total>stu[j-1].total)
{
tStu=stu[j];
stu[j]=stu[i];
stu[i]=tStu;
}
}
}
}
void main()
{
input();
process();
sort();
output();
}
经供参考,具体自己调试。
㈧ 利用指向结构体的指针编写程序,实现输入3个学生的学号、姓名、性别、数学期中和期末成绩,然后计算各自
表示部分同意cdyzxy
的观点,可是还有错,你应该自己执行一下试试才能专发现所有的错误。
我在属最后一行发现了最后一个错。
#include
"stdio.h"
#include
"string.h"
struct
student
{
char
ID[9];
char
name[10];
char
sex;
int
score1;
int
score2;
}x;
void
main()
{
struct
student
*p;
int
av;
int
i;
for
(
i=0;i<3;i++
)
//因要输入和处理3个学生的信息,应加一个循环
{
scanf("%s
%s
%c
%d
%d",x.ID,x.name,&x.sex,&x.score1,&x.score2);
//sex是字符型用%c输入,而且要写成&x.sex
//
使用%c和&x.sex
p=&x;
av=((p->score1)+(p->score2))/2;
printf("x的平均成绩是:%d\n",av);
//这里应该改成%d,而不是%.lf
}
}//最后,输入格式:1101
Tom
m
95
90
㈨ 用结构体完成学生信息
奥体完成学业信息可以的。