当前位置:文档之家› 结构体实验-参考答案

结构体实验-参考答案

结构体实验-参考答案
结构体实验-参考答案

实验九结构体

1.有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学号、姓名、3门课成绩),计算出每个学生的总成绩,并将总成绩最高的学生信息(包括学号、姓名、3门课成绩、总成绩)输出。

#include

struct STU{

char number[7];

char name[10];

int score[3];

int total;

}student[5];

int main()

{

int i,j,n;

printf("请输入5个学生的学号、姓名、3门课成绩: \n");

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

{

student[i].total=0;

scanf("%s%s",student[i].number,student[i].name);

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

scanf("%d",&student[i].score[j]);

student[i].total+=student[i].score[j];

}

}

printf("\n-------------------- 成绩表-----------------------\n");

printf(" 学号姓名数学语文英语总分\n");

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

{

printf("%8s%8s",student[i].number,student[i].name);

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

printf("%8d",student[i].score[j]);

printf("%8d\n",student[i].total);

}

printf("\n----------------成绩最高的学生信息---------------- \n");

printf(" 学号姓名数学语文英语总分\n");

n=0;

for(i=1;i<5;i++)

if(student[i].total>student[n].total)

n=i;

printf("%8s%8s",student[n].number,student[n].name);

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

printf("%8d",student[n].score[j]);

printf("%8d\n",student[n].total);

return 0;

}

2.某单位进行先进个人选举,有5位候选人:zhang、wang、li、zhao、liu,20人参与投票。编写一个统计每位候选人得票数的程序,输出每位候选人的得票数以及得票数最高的候选人姓名。

#include

#include

struct PIAO{

char name[10];

int total;

}people[5]={"zhang",0,"wang",0,"li",0,"zhao",0,"liu",0};

int main()

{

int i,j,n=0;

char xuan[10];

printf("请输入20个选票(zhang,wang,li,zhao,liu): \n");

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

{

scanf("%s",xuan);

for(j=0;j<5;j++){

if(strcmp(xuan,people[j].name)==0)

people[j].total++;

}

}

printf("\n-------候选人得票统计表--------\n");

printf(" 姓名得票数\n");

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

printf(" %8s%8d\n",people[i].name,people[i].total);

for(i=1;i<5;i++)

if(people[i].total>people[n].total)

n=i;

printf("得票数最高的候选人是:%s\n",people[n].name);

return 0;

}

3.将如表21.1所示的学生信息建立成一个按学号升序有序的链表,每个结点包括:学号、姓名、性别、年龄。统计链表中年龄小于20的学生个数并将对应的学生信息(包括学号、姓名、性别、年龄)输出。

表21.1 学生信息表

#include

#include

typedef struct STU

{

char no[7];

char name[10];

char sex[7];

int age;

struct STU *next;

}NODE;

NODE *create(int num);

NODE *create(int num) //创建包含num个节点的链表

{

NODE *head=NULL, *p, *tail; /*定义当前指针、头指针和尾指针*/

int i;

for(i=0;i

{

p=(NODE *)malloc(sizeof(NODE)); /*创建第一个结点*/

printf("请输入第%d个学生的学号、姓名、性别、年龄:\n",i+1);

scanf("%s%s%s%d", p->no,&p->name,p->sex,&p->age);

p->next=NULL;

if(i==0)

head=tail=p;

else

{

tail->next=p;

tail=p;

}

}

return head;

}

int main()

int n=0;

NODE *head,*p;

head=create(4);

p=head;

while(p!=NULL) /*判断是否是尾结点*/

{

if(p->age<20)

{

printf("%s\t%s\t%s\t%d\n",p->no,p->name,p->sex,p->age);

n++;

}

p=p->next; /*p指向下一个结点*/

}

printf("年龄小于20的学生共有%d个。\n",n);

return 0;

}

4.在第3题建立的链表中插入表21.2所示的结点,要求生成的新链表按照学号升序排列,并将生成的新链表输出。

表21.2 结点信息

#include

#include

#include

NODE *create(int num);

void print(NODE *head);

NODE *insert(NODE *head,NODE *s);

typedef struct STU

{

char no[7];

char name[10];

char sex[7];

int age;

struct STU *next;

}NODE;

NODE *create(int num) //创建包含num个节点的链表

NODE *head=NULL, *p, *tail; /*定义当前指针、头指针和尾指针*/ int i;

for(i=0;i

{

p=(NODE *)malloc(sizeof(NODE)); /*创建第一个结点*/

printf("请输入第%d个学生的学号、姓名、性别、年龄:\n",i+1);

scanf("%s%s%s%d", p->no,p->name,p->sex,&p->age);

p->next=NULL;

if(i==0)

head=tail=p;

else

{

tail->next=p;

tail=p;

}

}

return head;

}

void print(NODE *head)

{

NODE *p;

p=head; /*p指向表头*/

if(head==NULL)

printf("List is empty!\n");

printf(" 学号\t 姓名\t 性别\t年龄\n");

while(p!=NULL) /*判断是否是尾结点*/

{

printf("%s\t%s\t%s\t%d\n", p->no,p->name,p->sex,p->age);

p=p->next; /*p指向下一个结点*/

}

}

NODE *insert(NODE *head,NODE *s)

{ NODE *p=head,*p1=head;

if (p==NULL){ head=s;s->next=NULL;} /*链表为空的情况*/

else{

/*查找插入位置*/

while(strcmp(p->no,s->no)<0 && p->next!=NULL) {

p1=p;

p=p->next;

}

if (strcmp(p->no,s->no)>=0) {

if (p==head) head=s; /*插入结点作为表头的情况*/

else p1->next=s; /*插入结点在链表中间的情况*/ s->next=p;

}

else { /*插入结点作为表尾的情况*/

p->next=s;

s->next=NULL;

}

}

return head;

}

int main()

{

NODE *head,*s;

head=create(4);

s=(NODE *)malloc(sizeof(NODE)); /*创建插入的结点*/

printf("请输入要插入学生的学号、姓名、性别、年龄:\n");

scanf("%s%s%s%d", s->no,s->name,s->sex,&s->age);

s->next=NULL;

head=insert(head,s);

print(head);

return 0;

}

5. 在第4题建立的链表中删除姓名为“Wang”的结点,并将生成的新链表输出。#include

#include

#include

NODE *create(int num);

void print(NODE *head);

NODE *insert(NODE *head,NODE *s);

NODE *del(NODE *head,char *del_name);

typedef struct STU

{

char no[7];

char name[10];

char sex[7];

int age;

struct STU *next;

}NODE;

NODE *create(int num) //创建包含num个节点的链表

{

NODE *head=NULL, *p, *tail; /*定义当前指针、头指针和尾指针*/ int i;

for(i=0;i

{

p=(NODE *)malloc(sizeof(NODE)); /*创建第一个结点*/

printf("请输入第%d个学生的学号、姓名、性别、年龄:\n",i+1);

scanf("%s%s%s%d", p->no,p->name,p->sex,&p->age);

p->next=NULL;

if(i==0)

head=tail=p;

else

{

tail->next=p;

tail=p;

}

}

return head;

}

void print(NODE *head)

{

NODE *p;

p=head; /*p指向表头*/

if(head==NULL)

printf("List is empty!\n");

printf(" 学号\t 姓名\t 性别\t年龄\n");

while(p!=NULL) /*判断是否是尾结点*/

{

printf("%s\t%s\t%s\t%d\n", p->no,p->name,p->sex,p->age);

p=p->next; /*p指向下一个结点*/

}

}

NODE *insert(NODE *head,NODE *s)

{ NODE *p=head,*p1=head;

if (p==NULL){ head=s;s->next=NULL;} /*链表为空的情况*/

else{

/*查找插入位置*/

while(strcmp(p->no,s->no)<0 && p->next!=NULL) {

p1=p;

p=p->next;

}

if (strcmp(p->no,s->no)>=0) {

if (p==head) head=s; /*插入结点作为表头的情况*/

else p1->next=s; /*插入结点在链表中间的情况*/

s->next=p;

}

else { /*插入结点作为表尾的情况*/

p->next=s;

s->next=NULL;

}

}

return head;

}

NODE *del(NODE *head,char *del_name)

{

NODE *p,*p1;

if (head==NULL) printf("链表为空,不能进行删除结点操作!");

else{

p= head;

while(strcmp(p->name,del_name)!=0&&p->next!=NULL){

/*查找删除位置*/

p1=p;

p=p->next;

}

if (strcmp(p->name,del_name)==0){

if (p==head) head=p->next; /*删除表头结点*/

else p1->next=p->next; /*删除中间结点或尾结点*/

free(p); /*释放删除结点的内存空间*/ }

else printf("没有该学学生的记录!\n");

}

return(head);

}

int main()

{

NODE *head,*s;

char del_name[10];

head=create(4);

s=(NODE *)malloc(sizeof(NODE)); /*创建插入的结点*/

printf("请输入要插入学生的学号、姓名、性别、年龄:\n");

scanf("%s%s%s%d", s->no,s->name,s->sex,&s->age);

s->next=NULL;

head=insert(head,s);

printf("输入要删除节点的学生姓名:");

scanf("%s",del_name);

head=del(head,del_name);

print(head);

return 0;

}

数组指针结构体实验报告

验证性实验:数组指针结构体实验报告 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

实验8 指针

实验8 指针 一、实验目的 1. 熟练掌握指针的定义、赋值的方法 2. 掌握间接引用运算符的使用方法 3. 掌握通过指针引用数组元素的方法 4. 掌握使用指针处理字串的方法 二、实验内容 实训1 循环输入学生某门课的成绩,将成绩存储到数组中,统计最高分和获得最高分的学生人数,最后输出统计信息。 1)在VS2013中新建项目,在项目中新建C++源文件,输入下面程序。 #include// 包含输入输出接口文件 using namespace std; // 引用标准命名空间 int main() // 主函数 { const int n = 5; // 使用常变量定义学生人数 int score[n]; // 定义成绩数组,有n个整型元素 int maxScore = 0; // 最高分,并初始化为 int maxStudent = 0; // 得到最高分的学生人数 int i; // 循环变量 int *p = 0; p = score; // p指向score[0] for (i = 0; i < n; i++) // 计数循环 { // 开始循环 cout << "请输入第" << i << "位学生的成绩:"; cin >> p[i]; // 输入第i位学生的成绩,并存储到score[i] if (maxScore < p[i]) // 如果第i位学生的成绩高于原最高分 { maxScore = p[i]; // 将最高分修改为第i位学生的成绩} } // 结束循环 cout << "本班最高分为" << maxScore << endl; cout << "得到最高分的学生序号为:" << endl; for (i = 0; i < n; i++) // 计数循环 { // 循环开始 if (*(p + i) == maxScore) // 如果第i位学生的成绩等于最高分 { maxStudent++; // 得最高分的学生人数增1 cout << i << endl; // 输出该生序号

结构体实验报告

实 验 报 告 题目:结构体实验报告: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.掌握结构体类型变量的定义和使用。 2.掌握结构体类型数组的概念和使用。 3.掌握结构体指针及链表的概念,初步学会对链表进行操作,学会在函数之间传送链表的方法。 4.理解共用体的概念与使用。 实验内容 1、结构体类型的变量及数组 (1)利用指向结构体的指针,遍历结构体数组,寻找第一个名字首字母是‘M’的学生,参考代码如下:

2、结构体链表 (1)建立一个创建单链表的函数 (2)在单链表中查找一个会员 定义一个函数find。该函数能在head指向的链表中,查找一个名字和s所指字符串完全一样的会员,并返回其地址。若未找到,则返回NULL。代码如下: struct CStudent * find(struct CStudent *head, char *s){ struct CStudent *p=head; while( p!=NULL && strcmp(p->name, s)!=0 ) p=p->next; return p; } 而在主调函数中可以按如下的方式来调用find函数:

p=find(head, "Sun"); if(p==NULL) printf("没找到\n"); 完整的参考代码如下: (3)设计一个函数,在链表的当前节点之后插入一个节点。 该函数的功能是在链表的当前节点插入一个节点,当前节点还有要插入的数据以函数的形式参数传给函数。 函数原型 data *Insert_link((data *op_list, int value); 其中data数据类型定义如下: //Link list struct typedef struct data{ int value; struct data *next;

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

《结构体与链表程序设计》实验解答 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语言上机实验实验八

实验八 (2018-12-12~2018-12-17) 一、实验名称: 结构体 二、实验目的: (1)掌握结构体类型的定义和使用; (2)掌握结构体类型变量的概念和使用; (3)掌握链表的概念,初步学会对链表进行操作; (4)进一步熟悉Visual C++6.0开发环境下调试程序的基本步骤。 三、实验项目(必做题) 本次实验要求同学们事先在纸介质上编好解决下面问题的源程序,然后才允许进实验室上机调试。 (1)利用顺序表实现“先进后出”的堆栈 提示:定义结构体struct来定义堆栈;采用动态数组实现顺序表;定义函数实现堆栈中元素的压入和弹出,保证“先进后出”的实现 // 结构体Stack struct Stack{ int * List; // 用来存储元素的顺序表 int curNumber; // 用来存储当前元素的总个数 }; void iniStack(Stack * A); // 初始化堆栈 void clearStack(Stack * A); //清空堆栈 void push(Stack * A, ELEMENT obj); //将元素obj压入堆栈的栈顶 void pop(Stack * A); //将当前栈顶的元素弹出栈。要求:栈不为空 ELEMENT get_top(Stack * A); //返回当前栈顶的元素值。要求:栈不为空 int is_empty(Stack * A); //判断当前堆栈是否为空,空返回1,非空返回0 void display(Stack * A); //自顶向下显示堆栈中的元素 测试实例: 向堆栈中压入:1 2 3 4 弹出次序应为:4 3 2 1

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; /* 学生排名*/

实验5结构体与文件处理

实验5结构体与文件处理(上机调试运行) 1.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中,请编写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(只有一个最高分)。 2.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,功能是:按照分数的高低排列学生的记录,高分在前。并将数据存入文件中。 3.给定程序的功能:从键盘输入若干行文本(每行不超过80个字符),写的文件myfile4.txt中,用-1作为字符串输入结束的标志,然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText 实现。 二.实验目的 1.掌握结构体的概念及其数据结构 2.有效应用结构体进行二维表格编程 3.掌握C语言中文件的概念及其数据结构 4.熟悉文件的读写操作 实验4 运用指针类型及函数编程练习 一.实验要求 本实验包含三个程序 1.fun函数的功能是:统计一个无符号整数中各位数字值为0的个数,通过形参传回主函数。并把该整数中各位上最大的数字值作为函数值返回。例如,若输入30800,则零的个数为3,各位上数字值最大的是8。 2.fun函数的功能:用指针的形式比较两个字符串的的长度,将长的那个字符串的首地址作为函数值返回。 3.给定函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。偶数在主函数中定义。 二.实验目的 1.掌握指针的概念及其运算 2.掌握以指针作为形参的函数调用及用函数返回一个指针 3.掌握指针与字符串之间的运算关系

实验九结构体

实验九结构体、共用体与枚举类型 实验时间:年月日 【实验目的】 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<<"总分最高的学生为"<

C语言实验八

实验8 结构体、共用体与枚举类型 一、实验目的和要求 1.掌握枚举类型的基本使用方法。 2.掌握共用体的概念和应用。 3.掌握结构体变量及结构体数组的定义和使用。 4.掌握简单链表的基本使用方法。 二、实验内容和步骤 1.有5个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩,从键盘输入5个学生的数据,要求输出4门课的平均成绩,以及平均成绩最高的学生信息(包括学号、姓名、性别、4门课的成绩、平均分数)。 同时要求用in函数输入5个学生数据;用aver函数求平均分;用max函数找出平均成绩最高的学生数据;学生的数据在out函数中输出。 2.输入和运行以下程序。 #include union data { char c[4]; long b; int i[2]; }; main() { union data s; scanf("%c,%c,%c,%c",&s.c[0],&s.c[1],&s.c[2],&s.c[3]); printf("i[0]=%d,i[1]=%d\nb=%ld\nc[0]=%c,c[1]=%c,c[2]=%c,c[3]=%c\n", s.i[0],s.i[1],s.b,s.c[0],s.c[1],s.c[2],s.c[3]); } (1)输入4个字符a,b,c,d给s.i[0],s.c[1],s.c[2],s.c[3],并分析运行结果。 (2)将scanf()改为: scanf("%ld",&s.b); 输入876543给b,分析运行结果。 3.请用枚举类型表示一年的十二个月份,并输出每个月的天数。 4.建立一个有5个结点的单向链表,每个结点包含姓名、年龄和工资。编写两个函数,一个用于建立链表,另一个用来输出链表。 5.在上面的基础上,写一函数find,根据姓名查找一个结点,并输出该结点信息。 6.在上面的基础上,写一函数del,根据姓名(假定姓名不能重名)删除一个结点,并输出删除后的链表。 7.在上面的基础上,写一函数insert,插入一个结点,并输出插入后的链表。 对应答案:实验8 结构体、共用体与枚举类型1.分析 有5个学生,每个学生的数据包括学号、姓名、性别、4门课的成绩,可建立结构体数组的数据结构如下。 struct student /*定义结构体*/ { long num; /*学号*/ char name[20]; /*姓名*/ char sex; /*性别*/

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

实验项目10 结构体简单应用

实验项目10 结构体简单应用 ●实验目的 1.掌握结构体数据类型的基本概念。 2.掌握结构体类型变量的定义和使用方法。 3.掌握结构体类型数组与指针的关系及使用方法。 4.掌握结构体类型变量和数组作为函数参数的使用方法和技巧 5.掌握C语言中的存储分配函数使用方法。 6.理解链式存储结构与数组的区别。 7.掌握单链表中的建立、访问、插入和删除等最常见操作的C语言处理方法。 ●实验内容 1.程序填空 (1)下面程序的功能是统计每个候选人的选票和无效的选票,请填空完成程序。 #include #include struct candidate { char name[20]; int count; }; int main() { int i,n; char temp[20]; struct candidate list[]={{"Invalid",0},{"Li",0},{"Wang",0},{"Sun",0}}; printf("请输入参加投票的人数:"); scanf("%d",&n); while(n--) { printf("Enter the Name of Candidate:"); scanf("%s",temp); for(i=1;i<4;i++) if( ) { list[i].count++; ; } if(i==4) ; }; for (i=0; i<=3; i++) printf("%s:%d\n",list[i].name,list[i].count); return 0; }

(2)下面程序的功能是:从键盘上输入3个学生的姓名、英语成绩、数学成绩,然后计算每个学生的总成绩并输出,请填空完成程序。 #include #define Total 3 struct Student { char Name[20]; int English; int Math; int Sum; }Person[Total]; void Input(struct Student *p,int N) { int i; for (i=0; iSum=p->English+p->Math; for (i=0; i #include struct Complex { int r; int i; }; struct Complex Add(struct Complex x,struct Complex y) {

数据结构图实验报告

数据结构教程 上机实验报告 实验七、图算法上机实现 一、实验目的: 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);

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