当前位置:文档之家› 实验九结构体

实验九结构体

实验九结构体
实验九结构体

实验九结构体、共用体与枚举类型

实验时间:年月日

【实验目的】

1、掌握结构体类型、共用体类型和结构体类型变量的定义方法;

2、掌握结构体类型变量成员赋值和引用方法;

3、学会使用结构体数组;

4、掌握共用体和枚举类型数据的使用。

【实验内容】

1、结构体类型的定义;

2、结构体变量的定义、赋值与使用;

3、结构体数组与结构体指针的定义与使用;

4、共用体类型的定义,共用体变量的定义与使用;

5、枚举类型的定义与使用;

6、链表与动态内存分配;

7、自定义类型的使用。

【实验步骤】

一、在E或F盘上建立以自己的学号命名的文件夹。

二、上机验证与分析题

1、写出程序ex9_1.c运行的结果。

/*文件名ex9_1.c*/

#include

struct HAR

{

int x,y;

struct HAR *p;

}h[2];

int main()

{

h[0].x=1;

h[0].y=2;

h[1].x=3;

h[1].y=4;

h[0].p=&h[1];

h[1].p=h;

printf("%d %d\n",(h[0].p)->x,(h[1].p)->y);

return 0;

}

2、写出程序ex9_2.c运行的结果。

/*文件名ex9_2.c*/

#include "stdio.h"

void main()

{

int z;

union data

{

int x;

int y;

}a;

a.x=3;

a.y=6;

z=a.x+a.y;

printf("z=%d\n",z);

}

3、阅读程序ex9_3.c,预测结果并上机验证。

/*文件名ex9_3.c*/

#include

void main()

{

union data

{

int i;

char ch;

float f;

}a,b,c;

a.i=9;

b=a;

c=b;

printf("b.i=%d,c.i=%d\n",b.i,c.i);

}

4、运行下列程序,写出结果

/*文件名ex9_4.c*/

#include

void main()

{

struct List

{

int data ;

struct List *next;

};

struct List a[3]={1,&a[1],2,&a[2],3,&a[0]}, * p;

p=&a[1] ;

printf("%d\n",--p->data);

printf("%d\n",p->next->data);

printf("%d\n",p--->data);

}

三、编程题:

1、试用结构体定义一个工厂职工的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex9_5.c命名,保存在自己的文件夹内。

2、试用结构体定义一个学院教师的信息表,包含如下成员:工号、姓名、性别、年龄、参加工作日期、联系电话。源程序以ex9_6.c命名,保存在自己的文件夹内。

试编程求这5位同学该门课程的平均成绩,并输出成绩不及格的同学的班级、学号、姓名与成绩等信息。源程序以ex9_7.c命名,保存在自己的文件夹内。

试编程求这5位职工的平均月收入,并输出月收入小于3000元的职工的部门、工号、姓名与月收入等信息。源程序以ex9_8.c命名,保存在自己的文件夹内。

5、已知仓库存书的信息如下表所示

试编程求书的平均价格,并输出价格小于30元的书籍的书号、书名、作者、出版社、出版日期,价格等信息。源程序以ex9_9.c命名,保存在自己的文件夹内。【实验小结】

应知:

1、结构体、共用体、枚举类型的概念及其定义方法;

2、结构体变量、共用体变量、枚举类型变量的定义;

3、动态内存分配的概念及动态内存分配函数。

4、链表的概念。

应会:

1、结构体变量、共用体变量、枚举类型变量的使用;

2、结构体数组及结构体指针的使用;

3、动态内存分配函数的使用;

4、链表的使用。

【实验思考】

1、当定义一个结构体变量时,系统为它分配的内存空间是多少?

2、结构体与数组的区别是什么?

3、用结构体指针作为函数参数与用结构体变量作为函数参数有什么不同?

结构体实验报告

实 验 报 告 题目:结构体实验报告:XXXXX 学号:XXXXXXXXXXXX 班级:XXXXXXXXXXXXXXXX 专业:XXXXXXXXX 成绩:

一、实验目的 掌握结构类型的定义和使用,学会使用结构数组编程解决问题。 二、实验容、要求与安排方式 1、实验容: 编程解决如下问题:谁的年龄最小、奖学金统计、猴子选大王、选票统计(二)、数星星(二),任选四道题,其中选票统计(二)、数星星(二)必选。 2、要求:能够上机编辑、调试程序并通过OJ测试。 3、实验安排方式:每组1人,独立完成上机实验; 4、注意事项:结构的嵌套定义和引用方法、用指针访问结构。 三、代码及调试结果 1.数星星代码: #include #include #include typedef struct shiquan { int x; int y; } S; //定义结构体 int main() { S s[216]; int n,i,j; int sum=0; scanf("%d",&n); for(i=0; i

图1 数星星调试结果 2.奖学金代码: #include #include typedef struct student { char name[20]; int Last_Score; int Class_Score; char Stu_leader; char w_stu; int article; int sum; } STU; int main() { int n; STU p[11]; int flag=0; int sum=0; int max=0; scanf("%d",&n); int i; for(i=0; i

实验九 结构体与链表程序设计(解答)

《结构体与链表程序设计》实验解答 1、改错题 (1) #include struct stud { char name[20]; int age; } ; struct stud fun(struct stud person[],int n) //fun(struct stud person[],int n) { int min,i; min=0; for(i=0;i #include struct Poly { float a; /*系数*/ int n; /*指数*/ }; double fpvalue() { struct Poly p; double pvalue=0; float x; printf("输入多项式X:\n"); scanf("%f",&x); printf("输入多项式系数(a)和指数(n,n=-10000,结束):\n"); scanf("%f %d",&p.a,&p.n); //scanf("%f %d", p.a, p.n) while(p.n!=-10000) {pvalue+=p.a*pow(x,p.n); // pvalue+=p.a*pow(x, n);

C语言结构体实验报告

《高级语言程序设计》实验报告实验序号:8 实验项目名称:结构体

附源程序清单: 1. #include struct student { int num; char name[20]; char classname[20]; float score[3]; float aver_score; }stu[5]; void input() { int i; for(i=1;i<6;i++) { printf("第%d个同学",i); printf("请输入学号名字班级三门课程成绩:\n"); scanf("%d %s %s %f %f %f",&stu[i].num,stu[i].name,stu[i].classname,&stu[i].score[1],&stu [i].score[2],&stu[i].score[3]); } }; void averagescore() {

for(i=1;i<=5;i++) stu[i].aver_score=((stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/3); printf("平均成绩:"); for(i=1;i<6;i++) printf("第%d个同学的平均成绩%f:\n",i,stu[i].aver_score); printf("\n"); }; void max() { int i,k=0; float temp=stu[1].aver_score; for(i=2;i<=5;i++) if(stu[i].aver_score>temp) {temp=stu[i] .aver_score;k=i;}; printf("成绩最好的同学:\n"); printf("%d %s %s %4.2f %4.2f %4.2f %4.2f\n", stu[k].num,stu[k].name,stu[k].classname,stu[k].score[1],stu[k].score[2],stu[k].score[3],stu[k].aver _score); }; void main() { input(); averagescore(); max(); } 2.#include struct worker { char name[20]; int workyear; float salary; }work[5]; void input() { int i; for(i=1;i<=5;i++) { printf("第%d个工人:",i); printf("请输入名字工作年限工资总额:\n"); scanf("%s %d %f",&work[i].name,&work[i].workyear,&work[i].salary);

C语言实验九

实验9 结构体与链表程序设计 一、实验目的 1、掌握结构体类型变量的定义和使用。 2、掌握结构体类型数组的概念和应用。 3、掌握链表的概念,初步学会对链表进行操作。 二、实验内容 1.改错题 (1)下列程序的功能为:学生姓名(name)和年龄(age)存于结构体数组person中。函数fun的功能是:找出年龄最小的学生。纠正程序中存在的错误,以实现其功能。程序以文件名sy9_1.c保存。 #include Struct stud { char name[20]; int age; }; fun(struct stud person[],int n) { int min,i; min=0; for(i=0;i #include #define NUM 4 struct student { int rank; /* 学生排名*/

实验九结构体

实验九结构体、共用体与枚举类型 实验时间:年月日 【实验目的】 1、掌握结构体类型、共用体类型和结构体类型变量的定义方法; 2、掌握结构体类型变量成员赋值和引用方法; 3、学会使用结构体数组; 4、掌握共用体和枚举类型数据的使用。 【实验内容】 1、结构体类型的定义; 2、结构体变量的定义、赋值与使用; 3、结构体数组与结构体指针的定义与使用; 4、共用体类型的定义,共用体变量的定义与使用; 5、枚举类型的定义与使用; 6、链表与动态内存分配; 7、自定义类型的使用。 【实验步骤】 一、在E或F盘上建立以自己的学号命名的文件夹。 二、上机验证与分析题 1、写出程序ex9_1.c运行的结果。 /*文件名ex9_1.c*/ #include struct HAR { int x,y; struct HAR *p; }h[2]; int main() { h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=&h[1]; h[1].p=h; printf("%d %d\n",(h[0].p)->x,(h[1].p)->y); return 0; } 2、写出程序ex9_2.c运行的结果。

/*文件名ex9_2.c*/ #include "stdio.h" void main() { int z; union data { int x; int y; }a; a.x=3; a.y=6; z=a.x+a.y; printf("z=%d\n",z); } 3、阅读程序ex9_3.c,预测结果并上机验证。 /*文件名ex9_3.c*/ #include void main() { union data { int i; char ch; float f; }a,b,c; a.i=9; b=a; c=b; printf("b.i=%d,c.i=%d\n",b.i,c.i); } 4、运行下列程序,写出结果 /*文件名ex9_4.c*/ #include void main() { struct List {

C语言实验八结构体上机报告

《标准C语言程序设计》上机报告实验八结构体程序设计 专业:电子信息工程 班级:电信1301 学号:U201313480 姓名:秦行 完成日期:2014/6/9

一、实验目的: 1、掌握结构体类型的说明和结构体变量的定义; 2、掌握结构体变量成员的引用和对结构体变量的初始化; 3、掌握结构体数组及结构体指针变量的定义及使用。 4、理解并掌握结构体在函数间的传递; 5、进一步掌握复杂程序编译、连接和调试的技巧。 二、实验内容及要求(鼓励一题多解) ——以下均要求不得使用全局变量: 1 (1)、正确定义该表格内容要求的数据类型; (2)、分别输入各成员项数据,并打印输出(为简便起见,假设只有3名考生)。#include #include #define N 3 struct date { int year; int month; int day; }; struct student { unsigned int num; char name[20]; char sex; struct date birth; }; void main()

{ struct student tester[N]; int i; for(i=0;i #include #include #define N 10 struct worker { char name[20]; int salary; };

实验8_结构体

《C语言程序设计》实验报告实验序号:8 实验项目名称:结构体

【思考与扩展】

3.定义一个结构体变量(包括年、月、日)。计算某年某月某日是本年中第几天?注意闰年

附源程序清单: 1. #include void main() { struct student { long num; char name[20]; char classname[20]; float score[3]; float averagescore; }stu[5]; float average(float aver[3]); float h(float a[5]); int i,j; float high,hi[5]; for(i=0;i<5;i++) { printf("请输入第%d学生的信息:\n",i+1); scanf("%ld",&stu[i].num); scanf("%s",stu[i].name); scanf("%s",stu[i].classname); for(j=0;j<3;j++) scanf("%f",&stu[i].score[j]); } for(i=0;i<5;i++) { stu[i].averagescore=average(stu[i].score); hi[i]=stu[i].averagescore; } high=h(hi); printf("\n%-5s%-10s%-15s%-10s%-10s%-10s%-20s%\n","Num","Name","Classnam

e","Score1","Score2","Scoare3","Averagescore"); for(i=0;i<5;i++) printf("%-5ld%-10s%-15s%-10.3f%-10.3f%-10.3f%-20.3f%\n",stu[i].num,stu[i].name, stu[i].classname,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].averagescore); printf("平均分最高为:%.3f\n",high); } float average(float aver[3]) { float ave; ave=(aver[0]+aver[1]+aver[2])/3.0; return ave; } float h(float a[5]) { int i; float max; max=a[0]; for(i=0;i<5;i++) if(max void main() { struct worker { char name[20]; int year; int money; }wor[5]; int i; int a(int b); int allmoney[5]; for(i=0;i<5;i++) { printf("请输入第%d位职工的信息:\n",i+1); scanf("%s",wor[i].name); scanf("%d",&wor[i].year); scanf("%d",&wor[i].money); } for(i=0;i<5;i++) allmoney[i]=a(wor[i].year,wor[i].money);

实验09结构体实验报告

1.学会结构体类型变量的定义和使用方法。 2.能够运用结构体数组编写程序。 3.学会结构体指针的定义使用方法。 4.能够运用结构体指针作函数参数编写程序。 二、实验环境 (调试程序所使用的软硬件环境) 软件环境:VC++6.0 硬件环境:宏基Intel 奔4 主频2.8GHz,内存256MB 三、实验内容、结果及分析 1、题目1.建立一个有n(3 #include #include using namespace std; const int N=10; struct rem { String num; string name; double mark[3]; double all; }; int main () { int n,i,m; double max; rem loq[N]; cout<<"请输入人数"<>n; for(i=0;i

cout<<"请输入第"<>loq[i].num>>loq[i].name >>loq[i].mark[0] >>loq[i].mark[1] >>loq[i].mark[2]; } for(i=0;imax) { max=loq[i].all; m=i; } } cout<<"总分最高的学生为"<

c语言程序设计,江宝钏著,实验九

宁波大学实验报告 学号 姓名 专业土木建设类5班 学院阳明学院 2016年6月10 日

printf("Input year,month,day:"); scanf("%d,%d,%d",&,&,&; days=0; for(i=1;i<;i++) days+=day_tab[i]; days+=; if>2&&%4==0&&%100!=0||%400==0)) days+=1; printf("%d/%d is the %dth day in %d",,,days,; } 2.程序改写题 #include<> struct { int year; int month; int day; }date; int main()

sum=sum+day; if((year%1==0&&year%100!=0||year%400==0)&&month>=3) { sum+=1; } return sum; } 3.一般编程题 (1) #include<> struct z { char a[30]; int r; }; void main() { struct z z1={"通信工程",32},z2={"电子信息科学与工程",35},z3={"自动化",44},z4={"光电

信息工程",28}; printf("%s专业,报名人数%d\n",,; printf("%s专业,报名人数%d\n",,; printf("%s专业,报名人数%d\n",,; printf("%s专业,报名人数%d\n",,; } (2) #include "" #include <> #define SIZE 3 struct student { int score[3]; float average; } stud[SIZE]; void input() { int i; for(i=0;i

实验九 结构体

实验九结构体 程序设计 1.阅读程序,写出程序运行结果,并说明理解。 #include typedef union { long i; int k[5]; char c; }DATE; struct date { int cat; DA TE cow; double dog; }too; DA TE max; void main() { printf("%d %d %d\n",sizeof(struct date),sizeof(max),sizeof(struct date)+sizeof(max)); } /*p11_1.c*/ 2,结构类型处理学生数据 题目描述 输入n(1<=n<=10)和n个学生的数据,每个学生的数据包括学号、姓名、三门课的成绩。数据从键盘输入,输出每个学生的姓名三门课的分数及总分,以及总分最高的学生姓名。(要求定义一个表示学生数据类型的结构) 输入描述 输入n和n个学生数据(n是整数不超过10),学生数据由整数,字符串,和三个整数组成) 输出描述 每个学生数据占一行(包括学号姓名三门课成绩总分) 最后输出总分最高分学生姓名及总分 样例输入 3 1 zhangsan 80 90 60 2 lisi 50 30 20

3 zhaoliu 70 70 76 样例输出 1 zhangsan 80 90 60 230 2 lisi 50 30 20 100 3 zhaoliu 70 70 76 216 zhangsan 230 /*p11_2.c*/ 3、复数的和与积 题目描述 输入两个复数,计算并输出它们的和与积。 注:两个复数的和:(A+Bi)+(C+Di)=(A+C)+(B+D)i 两个复数的积:(A+Bi)(C+Di)=(AC-BD)+(BC+AD)i 输入描述 每个复数占一行,依次输入实部和虚部。 输出描述 按照复数格式“A+Bi”依次输出复数的和与积,每个结果占一行,结果保留2位小数。样例输入 5.3 1.6 4.5 -7.1 样例输出 9.80-5.50i 35.21-30.43i /*p11_3.c*/ 4、复数的模 题目描述 知识点:结构体成员变量的输入输出 题目:定义结构体来表示复数,在键盘输入一个复数,计算其模后输出。struct comp { double x,y;//x表示实数,y表示虚数 double m;//m表示复数的模

实验9 结构1

实验9 结构体与共用体 实验目的 1. 掌握结构体类型的定义。 2. 掌握结构体变量、结构体数组的定义及其引用方法。 3. 掌握通过指针引用结构体变量和数组元素的方法。 4. 掌握链表的概念,初步学会对链表进行操作。实验环境 实验环境 实验内容 1 .输入10 个学生的学号、姓名、成绩,求出其中的高分者和低分者。 2 .输入10 个学生的学号、姓名和成绩,并按成绩从高到低的顺序排序后输出。 3. 定义一个结构体变量,包括年,月,日,编写一个day函数计算某天是在本年第几天。4有一个学生数组,该数组有5个学生数据记录,每个记录包括学号,姓名,三门课成绩(语文,数学,英语,用结构体数组表示),性别。编写一个函数输入这些记录,再编写的函数输出这些记录,编写一个函数,求男生的总平均成绩。 5一副扑克牌,除去大小王有4种花色,每种花色13张,共52张,分别完成洗牌和发牌功能。发牌功能就是把洗完的牌打印出来。 6建立一个学生名单链表,名单内容包括姓名,学号,链表节点按学号排序。分别编写出链表创建、添加记录、修改姓名、删除记录、通过学号查询姓名,通过姓名查询学号的函数。

使用结构体实现扑克牌洗牌发牌 扑克牌定义成结构类型card,有两个成员一个是花色,一个是牌面。 这两个成员都定义成字符指针形式。 定义一个一维数组,拥有52个元素,每个元素都是扑克牌card类型。 定义字符指针数组face表示牌面,suit表示花色。 接下来给这个一维数组进行填充,就是让数组的每个元素确定好花色类型,牌面值。洗牌就是打乱扑克牌数组排序 #include #include #include struct card { char *face; char *suit; }; typedef struct card Card; void fillDeck(Card *, char *[], char *[]); void shuffle(Card *); void deal(Card *); void main() { Card deck[52]; char *face[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"}; char *suit[] = {"H", "D", "C", "S"}; srand(time(NULL)); fillDeck(deck, face, suit); shuffle(deck); deal(deck); } void fillDeck(Card *wDeck, char *wFace[], char *wSuit[]) { int i; for (i = 0; i <= 51; i++) { wDeck[i].face = wFace[i % 13]; wDeck[i].suit = wSuit[i / 13]; } } void shuffle(Card *wDeck) {

C语言实验报告九

C语言实验报告九

数学与软件科学学院实验报告 学期:_2013_至_2014_ 第1 学期 2013_年12_月09_日课程名称: 程序设计基础教程-C语言_ 专业:_数学与应用数学_2012_级_1班实验编号: 09实验项目:结构体和共用__ 指导教师__ ____ 姓名:学号:实验成绩: 一、实验目的及要求 (1) 掌握C语言环境下结构体和共用体类型变量的定义和使用方法; (2) 掌握结构体类型数组的概念和使用; (3) 掌握指向结构体变量的指针变量、尤其是链表概念; 二、实验内容 1.首先熟悉结构体类型变量的基本声明方法、结构体类型变量的内存分配原则、初始化和引用结构体变量及其成员变量的基本方法;然后掌握结构体变量的输入、输出方法。(参见教材例10-1~10-5) 2.基于结构体数组的应用实验。 (1) 有n个学生,每个学生的数据包括学好(num)、姓名(name[20])、性别(sex)、年龄(age),以及三门课程的成绩(score[3])。要求:在main()函数中输入这些学生的这些数据,然后设计一个函数count()来计算每个学生的总分和平均分,最后,打印出所有数据信息(包含原来输入的学生原始数据信息和求解出来的新信息)。 (2)对第(1)题实验,求出其中成绩最好的人和成绩最差的人,并显示出来。(假定成绩最好和最差的人都只有一个) (3)*如果假定成绩最好和最差的人的个数不一定唯一,程序应该如何修改才能完成求出所有最好和最差者,以及输出它们来。 3.*链表实验。 (1) 建立一个链表,每个结点包含:职工号、工资。用malloc()函数开辟新结点,用free()函数回收不用的结点空间。要求从键盘输入5个员工的数据信息(用create_list()),然后,用函数output_list()将它们一一打印出来,用free_list()将链表中的结点空间回收。假设职工编号为1001,1005,1008,1010,1101。 注:malloc()和free()为系统函数。create_list(),output_list(),free_list()为用户自定义函数。

实验9-1 结构体与共用体

实验9-1 结构体和共用体(1) 1 【实验目的】 掌握结构体类型变量的定义和使用 掌握结构体类型数组的概念和应用 了解链表的概念和操作方法 【实验要求】 掌握结构体类型变量的定义和使用 了解链表的概念和操作方法 【实验环境】 (1) Microsoft XP操作系统 (2) Microsoft VC++ 6.0 【实验内容】 1、第几天https://www.doczj.com/doc/1217784500.html,/acmhome/problemdetail.do?&method=showdetail&id=1071 描述:给定一个日期,输出这个日期是该年的第几天。 输入 输入数据有多组,每组占一行,数据格式为YYYY-MM-DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。 输出:对于每组输入数据,输出一行,表示该日期是该年的第几天。 样例输入:2000-01-01

样例输出:1 2、学生成绩https://www.doczj.com/doc/1217784500.html,/JudgeOnline/problem.php?id=1518 题目描述 现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。编写一个函数input,用来输入一个学生的数据记录。编写一个函数print,打印一个学生的数据记录。在主函数调用这两个函数,读取N条记录输入,再按要求输出。 N<100 输入:学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。 输出:每个学生的学号、姓名、三科成绩占一行,逗号分开。 样例输入 2 a100 zhblue 70 80 90 b200 newsclan 90 85 75 样例输出 a100,zhblue,70,80,90 b200,newsclan,90,85,75 3、平均分和最高分https://www.doczj.com/doc/1217784500.html,/JudgeOnline/problem.php?id=1519 题目描述 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)

C语言程序设计 实验九 结构体和共用体 答案 西北民大 电气院

实验九结构体和共用体 一,实验目的: 1,掌握结构体类型变量的定义和使用. 2,掌握结构体类型数组的概念和应用. 3,掌握共用体的概念和使用. 4,了解链表的概念,初步学会对链表进行操作. 二,实验准备: 1,复习结构体的概念和定义方法. 2,复习共用体的概念和定义方法. 3,源程序. 三,实验步骤及内容: 程序改错 typedef union { lo ng x[2]; int y[4]; char z[8]; } MYTYPE; typedef union them; main() { printf("%d",sizeof(them)); } 修改后的程序: typedef union { lo ng x[2]; int y[4]; char z[8]; } MYTYPE; MYTYPE them; main() { printf("%d",sizeof(them)); } 程序填空 以下程序建立了一个带有头结点的单向链表,结点中的数据可由键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data与不放数据,表空的条件是ph―>next==NULL). #include ______ struct list {int data ;struct list *next ;}; _ struct list *creatlist() { struct list *p, *q, *ph; int a ;

ph=(struct list *)malloc(sizeof(struct list)); p=q=ph; printf("input an integer number,enter -1 to end :\n"); scanf("%d",&a); while (a!=-1) { p=(struct list *)malloc(sizeof(struct list)); p->data=a; q->next=p; ph->next=p; scanf("%d",&a); } p->next ="\0"; return(ph); } main() {struct list *head; head=creatlist(); } 3,有5个学生,每个学生的数据包括学号,姓名,三门课成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课成绩,平均成绩). 要求:用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出.(习题9.5) 源程序: #include #define N 5 struct student { char num[6]; char name[8]; float score[3]; float avr;} stu[N]; int i,j,maxi; float sum,max,average; void main() { printf("请输入学生信息:\n"); for(i=0;i<5;i++) {printf("no.:"); scanf("%s",stu[i].num);

C语言程序设计 结构体和共用体(12.2.15)--实验9结构体数组作函数参数

实验9 结构体数组作函数参数 【实验任务】学生成绩管理系统V5.0 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目为数学(MT)、英语(EN)和物理(PH)。参考例12.7,定义结构体类型,用结构体数组作函数参数,编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分; (3)计算每个学生的总分和平均分; (4)按每个学生的总分由高到低排出名次表; (5)按每个学生的总分由低到高排出名次表; (6)按学号由小到大排出成绩表; (7)按姓名的字典顺序排出成绩表; (8)按学号查询学生排名及其考试成绩; (9)按姓名查询学生排名及其考试成绩; (10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比; (11)输出每个学生的学号、姓名、各科考试成绩,以及每门课程的总分和平均分。 要求程序运行后先显示如下菜单,并提示用户输入选项: 1.Append record 2.Caculate total and average score of every course 3.Caculate total and average score of every student 4.Sort in descending order by total score of every student 5.Sort in ascending order by total score of every student 6.Sort in ascending order by number 7.Sort in dictionary order by name 8.Search by number 9.Search by name 10.Statistic analysis for every course 11.List record 0.Exit Please enter your choice: 然后,根据用户输入的选项执行相应的操作。 题 【思考】 动态单链结构数组编实现 (1)考例 参12.9~例12.11,用向表代替体,程上述程序。 础删记录插记录会动态链与结构数组(2)在(1)基上,增加“除”和“入”的功能,体表体的优 不同点和缺点。 【实验目的】 在实验“学生成绩管理系统V4.0”的基础上,通过增加任务要求,熟悉结构体类型、结构体数组作函数参数、模块化程序设计方法,体会应用结构体类型代替普通的数组类型实现数据库管理的优越性。

C语言实验报告九

数学与软件科学学院实验报告 学期:_2013_至_2014_ 第1 学期 2013_年12_月09_日 课程名称: 程序设计基础教程-C语言_ 专业:_数学与应用数学_2012_级_1班实验编号: 09实验项目:结构体和共用__ 指导教师__ ____ 姓名:学号:实验成绩: 一、实验目的及要求 (1) 掌握C语言环境下结构体和共用体类型变量的定义和使用方法; (2) 掌握结构体类型数组的概念和使用; (3) 掌握指向结构体变量的指针变量、尤其是链表概念; 二、实验内容 1.首先熟悉结构体类型变量的基本声明方法、结构体类型变量的内存分配原则、初始化和引用结构体变量及其成员变量的基本方法;然后掌握结构体变量的输入、输出方法。(参见教材例10-1~10-5) 2.基于结构体数组的应用实验。 (1) 有n个学生,每个学生的数据包括学好(num)、姓名(name[20])、性别(sex)、年龄(age),以及三门课程的成绩(score[3])。要求:在main()函数中输入这些学生的这些数据,然后设计一个函数count()来计算每个学生的总分和平均分,最后,打印出所有数据信息(包含原来输入的学生原始数据信息和求解出来的新信息)。 (2)对第(1)题实验,求出其中成绩最好的人和成绩最差的人,并显示出来。(假定成绩最好和最差的人都只有一个) (3)*如果假定成绩最好和最差的人的个数不一定唯一,程序应该如何修改才能完成求出所有最好和最差者,以及输出它们来。 3.*链表实验。 (1) 建立一个链表,每个结点包含:职工号、工资。用malloc()函数开辟新结点,用free()函数回收不用的结点空间。要求从键盘输入5个员工的数据信息(用create_list()),然后,用函数output_list()将它们一一打印出来,用free_list()将链表中的结点空间回收。假设职工编号为1001,1005,1008,1010,1101。 注:malloc()和free()为系统函数。create_list(),output_list(),free_list()为用户自定义函数。 (2)在(1)的基础上,新增一个函数inset_node()插入员工1006和1032的数据信息。要求新插入的员工后,员工仍然按职工号顺序排列。 (3) 在(2)的基础上,新增一个函数delete_node(),可以用来将指定员工的数据从链表中删除。

实验九 结构体编程练习

2.2.9 实验9:结构体编程练习 在屏幕上模拟显示一个数字式时钟 按如下方法定义一个时钟结构体类型: struct clock { int hour; int minute; int second; }; typedef struct clock CLOCK; 然后,将下列用全局变量编写的时钟模拟显示程序改成用CLOCK结构体变量类型重新编写。已知用全局变量编写的时钟模拟显示程序如下: #include #include int hour, minute, second; /*全局变量定义*/ /* 函数功能:时、分、秒时间的更新 函数参数:无 函数返回值:无 */ void Update(void) { second++; if (second == 60) /*若second值为60,表示已过1分钟,则 minute值加1*/ { second = 0; minute++; } if (minute == 60) /*若minute值为60,表示已过1小时,则 hour值加1*/ { minute = 0; hour++; } if (hour == 24) /*若hour值为24,则hour的值从0开始计时*/ { hour = 0; }

第2章上机实验指导·137·} /*函数功能:时、分、秒时间的显示 函数参数:无 函数返回值:无 */ void Display(void) /*用回车符'\r'控制时、分、秒显示的位置*/ { printf("%2d:%2d:%2d\r", hour, minute, second); } /*函数功能:模拟延迟1秒的时间 函数参数:无 函数返回值:无 */ void Delay(void) { long t; for (t=0; t<50000000; t++) { /*循环体为空语句的循环,起延时作用*/ } } main() { long i; hour = minute = second = 0; /*hour,minute,second赋初值0*/ for (i=0; i<100000; i++) /*利用循环结构,控制时钟运行的时间*/ { Update(); /*时钟更新*/ Display(); /*时间显示*/ Delay(); /*模拟延时1秒*/ } } 【思考题】请读者思考: ①用结构体指针作为函数参数与用结构体变量作为函数参数有什么不同?本题可以用结构体变量作为函数参数编程实现吗? ②请读者自己分析下面两段程序代码,并解释它们是如何实现时钟值更新操作的。 void Update(struct clock *t) {

相关主题
文本预览
相关文档 最新文档