文档库 最新最全的文档下载
当前位置:文档库 › 实验九__结构体

实验九__结构体

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

实验九结构体

一、实验目的

1.掌握结构体类型变量与结构体数组的定义和使用。

2.学会使用结构体指针变量和结构体指针数组。

3.掌握链表的概念,初步学会对链表进行操作。

二、实验内容

1.输入出10个学生的学号、姓名和成绩,求出其中的高分者和低分者。

# include “stdio.h”

struct student

{ int num;

char name[20];

int score;

};

void main( )

{ int i;

struct student st,stmax,stmin;

stmax.score=0; stmin.score=100;

printf(“\n input data”);

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

{ scanf(“%d%s%d”,&st.num,https://www.wendangku.net/doc/e714514571.html,,&st.score);

if(st.score>stmax.score) stmax=st;

if(st.score

}

printf(“\n hight:%5d%15s%5d”,stmax.num,https://www.wendangku.net/doc/e714514571.html,,stmax.score);

printf(“\n low:%5d%15s%5d”,stmin.num,https://www.wendangku.net/doc/e714514571.html,,stmin.score);

}

①分析程序,上机运行程序。

②程序中,哪些是对结构体变量的成员引用,哪些是整体引用?

③对于此例来说,用结构体变量作为数据结构有何优越性?

2.有一学生情况如下表所示。编制一个C程序,用冒泡法对该学生情况表按成绩(grade)从低到高进行排序。

具体要求如下:

①结构体类型为

struct 结构体名

{ int num;

char name[8];

char sex;

int age;

double grade;

}

②在程序中用一个结构体指针数组,其中每一个指针元素指向结构体类型的各元素。

③在程序中,首先输出排序前的学生情况,然后输出排序后的结果,其格式如上表所示(表的框线不要)。

3.链表基本操作。

具体要求如下:

①初始时链表为空,即链表的头指针为空。

②对于上表所示的学生情况表,依次将每个学生的情况作为一个结点插入到单链表的链头(即当前插入的结点将成为第一个结点)。

③所有学生情况都插入到链表中后,从链头开始,依次输出链表中的各结点值(即每个学生的情况)。输出格式如同上表。

数组指针结构体实验报告

验证性实验:数组指针结构体实验报告 1.实验目的 (1)复习c++语言数组的用法。 (2)复习c++语言指针的用法。 (3)复习c++语言结构体的用法。 (4)理解算法时间复杂度分析的基本方法。 (5)通过实验程序,分析它们的时间复杂度。 2.实验内容 (1)将1~10存入数组a[10],并将其逆序输出。 (2)用指针方式编写程序:从键盘输入10个整数数据,并存入数组,要求将10个数中最大的数与第1个输入的输交换:将10个数中最小的数和最后一个输入的数交换。(3)有5个学生,每个学生的数据包括学号、姓名3门课的成绩、平均分。 要求:从键盘依次输入5个学生的学号、姓名3门课的成绩,自动计算3门课的平均分,将5个学生的数据在屏幕上输出。 3.实验结果 (1)#include void main() { int i,a[10]; for (i=0;i<=9;i++) a[i]=i+1; for (i=9;i>=0;i--) printf("%3d",a[i]); printf("\n"); } (2)#include void main() { int a[10],*p,*max,*min,k; for (p=a;p*p) min=p;

} p=a; if(*max==*(p+9)&&*min==*p) { k=*p; *p=*(p+9); *(p+9)=k; } else if(*max==*(p+9)) { k=*max;*max=*p;*p=k;k=*min;*min=*(p+9);*(9+p)=k; } else { k=*min;*min=*(p+9);*(p+9)=k;k=*max;*max=*p;*p=k; } for(p=a;p struct STUDENT { char id[10]; char name[8]; int score[3]; double ave; }stu[5]; void main() { int num=5,i,j; for(i=0;i

结构体实验报告

实 验 报 告 题目:结构体实验报告: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);

数据结构实验报告七查找、

云南大学软件学院数据结构实验报告 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)实验难度: A □ B □ C □ 学期:2010秋季学期 任课教师: 实验题目: 查找算法设计与实现 姓名: 王辉 学号: 20091120154 电子邮件: 完成提交时间: 2010 年 12 月 27 日

云南大学软件学院2010学年秋季学期 《数据结构实验》成绩考核表 学号:姓名:本人承担角色: 综合得分:(满分100分) 指导教师:年月日(注:此表在难度为C时使用,每个成员一份。)

(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%) 1 哈希表查找。根据全年级学生的姓名,构造一个哈希表,选择适当的哈希函数和解决冲突的方法,设计并实现插入、删除和查找算法。 熟悉各种查找算法的思想。 2、掌握查找的实现过程。 3、学会在不同情况下运用不同结构和算法求解问题。 4 把每个学生的信息放在结构体中: typedef struct //记录 { NA name; NA tel; NA add; }Record; 5 void getin(Record* a)函数依次输入学生信息 6 人名折叠处理,先将用户名进行折叠处理折叠处理后的数,用除留余数法构造哈希函数,并返回模值。并采用二次探测再散列法解决冲突。 7姓名以汉语拼音形式,待填入哈希表的人名约30个,自行设计哈希函数,用线性探测再散列法或链地址法处理冲突;在查找的过程中给出比较的次数。完成按姓名查询的操作。将初始班级的通讯录信息存入文件。 二、【实验设计(Design)】(20%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 1抽象数据类型的功能规格说明和结构体: #include

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; };

实验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<<"总分最高的学生为"<

实验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);

C语言结构体和共用体实验报告

实验九参考程序 实验 9- 1 /**************************************************************** * 实验 9.1 * * ( 1 )为某商店的商品设计合适的结构体 (PRODUCT) 。每一种商品包含编号 (number) 、 * 名称 (name) 、价格 (price) 、折扣 (discount)4 项信息,根据表 9-1 ,为这些信 息选择合适的数据类型。 * (2)建立 2个函数,以实现对商品的操作。 input 函数实现商品的输入; * display 函数显示商品信息。要求这 2个函数都以商品的结构体 (PRODUCT) 指针为 参数。 * (3 )在主函数中为商品键盘定义一个结构体变量 (keyboard) ,利用 input 函数实现键 盘信息的输入; * 定义一个结构体数组 (elec_device[3]) ,利用 input 函数实现冰箱、 空调、电视 信息的输入; * 最后利用 display 函数显示 4 种商品的信息。 * * 表 9-1 #include typedef struct _PRODUCT int iNumber; char strName[32]; float fPrice; float fDiscount; * 编号 名称 价格 折扣 *1010 键盘 89.50 0.85 *1021 冰箱 1024.00 0.95 *1022 空调 2058.50 0.90 *1023 电视 3001.88 0.95 *************************************************************** */

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.了解熟知图的定义和图的基本术语,掌握图的几种存储结构。 2.掌握邻接矩阵和邻接表定义及特点,并通过实例解析掌握邻接矩阵和邻接表的类型定义。 3.掌握图的遍历的定义、复杂性分析及应用,并掌握图的遍历方法及其基本思想。 二、实验内容: 1.建立无向图的邻接矩阵 2.图的xx优先搜索 3.图的xx优先搜索 三、实验步骤及结果: 1.建立无向图的邻接矩阵: 1)源代码: #include "stdio.h" #include "stdlib.h" #define MAXSIZE 30 typedefstruct{charvertex[MAXSIZE];//顶点为字符型且顶点表的长度小于MAXSIZE intedges[MAXSIZE][MAXSIZE];//边为整形且edges为邻近矩阵

}MGraph;//MGraph为采用邻近矩阵存储的图类型 voidCreatMGraph(MGraph *g,inte,int n) {//建立无向图的邻近矩阵g->egdes,n为顶点个数,e为边数inti,j,k; printf("Input data of vertexs(0~n-1): \n"); for(i=0;ivertex[i]=i; //读入顶点信息 for(i=0;iedges[i][j]=0; //初始化邻接矩阵 for(k=1;k<=e;k++)//输入e条边{}printf("Input edges of(i,j): "); scanf("%d,%d",&i,&j); g->edges[i][j]=1; g->edges[j][i]=1;}void main(){inti,j,n,e; MGraph *g; //建立指向采用邻接矩阵存储图类型指针 g=(MGraph*)malloc(sizeof(MGraph));//生成采用邻接举证存储图类型的存储空间}2)运行结果: printf("Input size of MGraph: "); //输入邻接矩阵的大小scanf("%d",&n); printf("Input number of edge: "); //输入邻接矩阵的边数scanf("%d",&e);

数据结构(邹永林版)实验报告1-复习C

实验一、C语言回顾 复习C语言中关于函数、数组、指针、结构体等的知识,为数据结构实验做准备。【实验学时】 2学时 【实验预习】 回答以下问题: 1、数组的定义与引用 数组定义 在定义数组时,应该说明数组的名字、类型、大小和维数。数组定义形式 类型说明符数组名[常量表达式] 数组元素的引用方法数组名[下标] 2、函数的定义与调用 无参函数 类型说明符函数名(){ 函数体}; 有参函数 类型说明符函数名(形式参数表列){ 函数体}; 函数调用函数名([实参表列]) 3、指针的基本概念 指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。在计算机语言中,由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。 4、结构体类型变量的定义方法 结构体类型定义的一般形式struct结构体名 { 成员表}; struct结构体名{ 成员表}变量表; 5、结构体成员的访问方法 结构体变量名.成员名(*指针变量名).成员名指针变量名->成员名 【实验内容和要求】 1、完成并调试程序:实现对一维数组元素的升序排序并输出结果(横线处仅能补充一条语句)。 #include void sort(int a[],int n);_________________________; int main(){ int s[10]={1,-9,89,120,76,45,43,6,7,2},i; ________________________________; for(i=0;i<10;i++) printf("%4d",s[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语言实验报告之指针、结构体等综合程序设计

一、实验的目的、要求及内容 1、通过实验掌握指针的概念,学会定义和使用指针变量。 2、能正确使用数组的指针和指向数组的指针变量。 3、能正确使用字符串指针和指向字符串的指针变量。 4、掌握结构体类型变量的定义和使用。 二、算法设计思想及内容 本实验主要完成指针和结构体的应用训练,总共要求完成三个问题的源代码的编辑、编译、连接与运行,最终产生相关的运行结果,按规定要求提交相应的实验报告。具体要求完成的问题如下: 1、采用指针方式编写程序输入10个整数,将其中最小的数与第一个数对换,把最 大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3) 输出处理后的10个数。 2、采用指针方式在主函数中输入字符串,在函数中求出字符串的长度,然后输出求 出的长度。 3、有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个 学生的数据,要求输出3门课程的总平均成绩,以及最高分数的学生的数据(包 括学号、姓名、3门课的成绩、平均分)。 三、所使用的软硬件平台 软件平台:Microsoft Windows XP专业版SP3,Microsoft Visual C++ 6.0。 硬件平台:联想系列,Intel(R)Core(TM)i3,CPU 3.20Ghz,2.99GB内存,550GB硬盘。 四、源程序代码 1.#include int main() {int a[10]; void shuru(int a[10]); void chuli(int a[10]); void shuchu(int a[10]); printf("请输入10个数:"); shuru(a); chuli(a); printf("输出处理后的10个数为:"); shuchu(a); printf("\n"); return 0; }

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()为用户自定义函数。

相关文档