实验7 结构体程序设计

合集下载

C语言实验课题目

C语言实验课题目

完成下列题目: 1. 键盘输入与屏幕输出练习
问题 1 要使下面程序的输出语句在屏幕上显示 1, 2, 34, 则从键盘输入的数据格式应为以下 备选答案中的 。
#include <stdio.h> main() { char a,b; int c;
scanf("%c%c%d",&a,&b,&c); }
实验 1 实验 2 实验 3 实验 4 实验 5 实验 6 实验 7
熟悉 VC 环境,熟悉输入输出语句 熟悉选择语句使用 熟悉循环语句使用 熟悉函数使用 熟悉指针 熟悉数组 熟悉结构体
目录
实验 1 实验 2 实验 3 实验 4 实验 5 实验 6 实验 7 输入输出................................................................................................................................2 选择语句................................................................................................................................4 循环语句................................................................................................................................5 函数........................................................................................................................................6 指针........................................................................................................................................8 数组........................................................................................................................................9 结构体..................................................................................................................................10

C语言程序设计方案实验报告实验七结构体和联合体程序设计方案

C语言程序设计方案实验报告实验七结构体和联合体程序设计方案

实验七、结构体程序设计一、实验目的1.掌握结构体类型变量和数组、共用体类型变量和数组以及枚举类型变量的定义和使用。

2.掌握链表的基本,初步学会对链表进行操作。

3.通过编程和调试程序,加深对结构体和共用体概念的理解。

4.实验前复习结构体类型、共用体类型和枚举类型的概念。

二、实验内容及步骤:1、编程利用结构体实现输入若干学生的学号、姓名和成绩,求平均分以及高于平均分的同学。

要求:1) 求平均分的过程由函数实现。

2)打印格式为:学生学号姓名成绩,且其过程由函数实现。

程序代码:#include<stdio.h>#include<malloc.h>typedef struct student{int num;char name[20];int score;struct student *next;}ST,*STU;STU createlink(int n){ int i;STU p,q,head;if(n<=0)return(NULL);head=(STU)malloc(sizeof(ST));printf("input datas:\n");scanf("%d %s %d",&head->num,head->name,&head->score);p=head;for(i=1;i<n;i++){q=(STU)malloc(sizeof(ST));scanf("%d %s %d",&q->num,q->name,&q->score);p->next=q;p=q;}p->next=NULL;1return (head);}void list(STU head){STU p=head;int i=0;double sum=0;for(;p!=NULL;p=p->next){sum=sum+(double)(p->score);i++;}p=head;while(p!=NULL){ if((double)(p->score)>(sum/i))printf("高于平均的学生为:%d %s %d\n",p->num,p->name,p->score);p=p->next;}}double average(STU head){int i=0;double sum=0;for(;head!=NULL;head=head->next){sum=sum+(double)(head->score);i++;}return (sum/i);}void main(){ STU h;int n;double ave;printf("input number of node:");scanf("%d",&n);h=createlink(n);ave=average(h);printf("平均成绩为:%lf\n",ave);list(h);}对程序进行测试,并观察运行结果。

程序设计基础实验

程序设计基础实验

实验5 C程序调用中的指针参数
分析程序并改正。 设计一个C程序,用以测试各表达式的运算。 想使指针变量pt1指向a和b中的大者,pt2指 向小者,以下程序能否实现此目的?如不 能实现目标,找出原因并修改之。
实验6 数组在C程序中的使用
编写程序,测试数组的定义方式是否正确。 运行C程序,根据运行结果,可以说明什么?。 操作符&用以求一个变量的地址,这在函数 scanf中已经使用过了。现在要你设计一个 程序,返回一个3 * 5 的二维数组各元素的 地址,并由此说明二维数组中各元素是按什 么顺序存储的(用二维数组和二维数组指 针两种方法实现)。
实验4 C程序函数调用
编写一个程序,给学生出一道加法运算题, 然后判断学生输入的答案对错与否,按下 列要求以循序渐进的方式编程。要求用Add 函数来进行两个整数的加法运算;用Print 函数判断正确与否;用main函数输入两个 相加的数和学生做的结果,然后判断该学 生输入的答案对错与否。
实验4 C程序函数调用
实验6 数组在C程序中的使用
已知一个数组a大小为20个元素,用随机函 数生成20个不同的2位整数填充该数组,再 将该数组元素从小到大排序。现要求任意 输入一个2位整数,要求将该数插入数组中 合适的位置,使得这个数组中的21个元素 仍然按照从小到大的顺序排列,并将数组 按下标顺序输出。
实验6 数组在C程序中的使用
(选做题)通过计算机随机产生10道四则 运算题,两个操作数为1~10之间的随机数, 运算类型为随机产生的加、减、乘、整除 中的任意一种,如果输入答案正确,则显 示“Right!”,否则显示“Not correct!”, 不给机会重做,10道题做完后,按每题10 分统计总得分,然后打印出总分和做错题 数。

C语言之结构体程序设计

C语言之结构体程序设计

C语言程序设计实验报告实验七、结构体程序设计班级学号姓名【实验目的】(1)掌握结构体类型的概念、定义和使用;(2)掌握结构体数组、结构体指针的定义和使用;【实验内容及步骤】1、验证性实验输入已编好的源程序,然后进行编辑、编译、连接和运行,观察运行结果。

#define N 5struct student{ char num[6];char name[8];int score[4];float avr;}stu[10];#include "stdio.h"main( ){ int i,j,max,maxi,sum;float average;for(i=0;i<N;i++){ printf("\n input scores of student:%d\n", i+1);printf("No:");scanf("%s",stu[i].num);printf("name:");scanf("%s",stu[i].name);for(j=0;j<3;j++){ printf("score%d:",j+1);scanf("%d",&stu[i].score[j]);}}average=0;max=0;maxi=0;for(i=0;i<N;i++){sum=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].avr=sum/3.0;average+=stu[i].avr;if (sum>max){max=sum;maxi=i;} }average/=N;printf("No. name score1 score2 score3 average\n");for(i=0;i<N;i++){ printf("%5s%10s",stu[i].num,stu[i].name);for(j=0;j<3;j++)printf("%9d",stu[i].score[j]);printf("%8.2f\n",stu[i].avr);}printf("average=%6.2f\n",average);printf("the highest score is:%s,score total:%d",stu[maxi].name,max); }输出结果:2、编程题:根据上题代码,自行编写如下程序:设有三个人的姓名和年龄存在数组中,输出三人中年龄居中者的姓名和年龄。

最新《C++程序设计案例教程》教学实验完美版实验7 结构体

最新《C++程序设计案例教程》教学实验完美版实验7 结构体

实验7 结构体
一.实验目的
1. 掌握结构的概念和结构类型的定义;
2. 掌握结构变量的定义和初始化;
3. 掌握结构体类型的概念和应用;
4. 掌握结构成员的访问、结构赋值的含义以及结构与指针、函数的关系。

二.实验内容
1. 有5个学生,每个学生的数据包括学号、姓名、三门课成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分和学生的数据(包括学号、姓名、三门课成绩、平均分)。

2.将上题按照平均分由大到小排序并按大到小排序后输出每位学生的学号、姓名、三门课成绩和平均分。

3. 建立一个链表,每个结点包括:学号、姓名和年龄。

输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删除,否则将此结点插入在表最后。

三.实验要求
1. 结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。

2. 整理上机步骤,总结经验和体会。

3. 完成实验报告和上交程序。

程序设计基础(Ⅰ)实验目的、内容及实验报告填写要求2015新修改 (1)

程序设计基础(Ⅰ)实验目的、内容及实验报告填写要求2015新修改 (1)

封面:2015-2016学年第一学期,年级是2015级,指导教师:网络工程专业1班写:赵玉艳陈海宝;网络工程2班写:赵玉艳肖刚,其它如实填写。

实验名称:实验一用C语言编写简单程序;实验二分支结构程序设计;实验三循环结构程序设计;实验四函数程序设计;实验五数组程序设计;实验六指针程序设计;实验七结构体程序设计。

课程名称:程序设计基础(Ⅰ)实验时间:分别为9.28, 10.12, 11.9, 11.23, 12.7, 12.21, 1.4实验地点:X405组号,同组人以及成绩:不需要填写实验环境:Windows 7;Visual C++ 6.0。

实验目的实验一用C语言编写简单程序1. 熟悉VC6.0的编程环境,掌握运行C程序的基本步骤。

2. 了解C程序的基本框架,模仿例题编写简单的C语言程序。

3. 正确书写算术表达式、赋值表达式和关系表达式。

4. 掌握基本输入输出函数的使用,正确调用C语言提供的数学库函数。

5. 掌握简单的单步调试方法。

实验二分支结构程序设计1.熟练掌握关系表达式的使用。

2.熟练掌握使用else-if语句实现多分支结构程序设计。

3.熟练掌握关系表达式和逻辑表达式的使用。

4.熟练掌握字符型数据的输入输出。

5.熟练掌握用嵌套的if语句或switch语句实现多分支结构程序设计。

6.熟练掌握switch语句中的break语句的作用。

7.掌握使用断点调试程序的方法。

实验三循环结构程序设计1. 熟练使用for、while和do-while语句实现简单的循环程序。

2. 理解循环条件和循环体,以及for、while和do-while语句的相同及不同之处。

3. 掌握使用Debug菜单调试程序的方法。

4. 掌握break语句的使用。

5. 掌握continue语句的使用。

6. 熟练掌握嵌套循环程序设计。

实验四函数程序设计1. 熟练掌握函数的定义和调用。

2. 熟练掌握使用函数编写程序。

3.熟练掌握函数的实参、形参和返回值的概念及使用。

c语言程序设计—结构体—实验报告

c语言程序设计—结构体—实验报告

c语言程序设计—结构体—实验报告
实验报告
一、实验背景
随着计算机科学的发展,数据的处理和存储已经发生了巨大的变化,变得更加结构化和更有效率。

考虑到这一点,结构体在计算机程序设计中尤其重要。

因此,本实验的目的是练习使用C语言编程,设计并实现相应的结构体,来实现一定的功能。

二、实验目标
设计一个结构体struct book,包含书名、作者名、出版社、价格等字段,并实现以下功能:
(1)按照书名查找图书;
(2)将书籍信息以字符串格式输出;
(3)将书籍信息保存到文件中;
三、实验内容
1. 用C语言定义结构体struct book,包含书名字段name(char类型)、作者author(char类型)、出版社publisher(char类型)、价格price(float类型)等信息。

2. 创建一个函数findBook,输入参数为书名字符串,输出参数为书籍信息struct book。

该函数实现按照书名查找图书功能,若查找成功返回书籍信息,否则返回null。

四、实验结果
经过上述步骤,已经编写了相应的C语言程序实现了按照书名查找图书、将书籍信息以字符串格式输出、将书籍信息保存到文件中、从文件中读取书籍信息等功能。

五、总结
本实验中,使用C语言实现了结构体struct book的定义及四个功能的程序,理解并大致掌握了结构体的使用,学会用程序实现数据的存取。

因此,我们可以看到,结构体的使用可以使数据的存取更加有效率和简单,对于程序设计是很重要的一个概念。

C语言程序设计实验报告(结构体和共用体)

C语言程序设计实验报告(结构体和共用体)

C语言程序设计实验报告(结构体和共用体)1实验目的1、掌握结构体类型变量的定义和使用;2、掌握结构体类型变量数组的概念和使用;3、掌握链表的概念,初步学会对链表进行操作;4、掌握共用体的概念和使用。

2实验内容1)在一个结构体数组中存入三个人的姓名及年龄,输出三者中年龄居中者的姓名及年龄。

要求:1、三个人的数据采用直接初始化的方式赋值;2、利用结构体指针实现处理过程。

3算法描述流程图4源程序#include<stdio.h>main(){struct students{char name[10];int age;} stu[3]={{"Jack",17},{"Anne",16},{"Tom",19}},stu1[3];struct students *stu2=&stu[0],*t=&stu1[0];int i,j,k;for(i=0;i<2;i++){k=i;for(j=i+1;j<3;j++){if(((stu2+j)->age)<((stu2+k)->age))k=j;}*t=*(stu2+k);*(stu2+k)=*(stu2+i);*(stu2+i)=*t;}printf("三人中年龄居中者姓名:%s,年龄:%d\n",stu[1].name,stu[1].age); }5测试数据{"Jack",17},{"Anne",16},{"Tom",19}6运行结果7出现问题及解决方法;实验中,引用结构体数组出现错误,忘记写{},指针的初始化忘记写*,这些问题都是些低级错误,不应该犯的,在循环中,i的初始化错误。

以后应更加仔细,多注意细节问题,很多时候细节是决定事情的关键。

8实验心得在本次试验中,我通过学习和实践,对结构体类型变量的定义和使用以及链表的概念有了更清楚的理解,初步学会了对链表进行操作,掌握了结构体类型变量数组以及共用体的使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:
实验七 结构体程序设计
日期:
任课教师:
专业:
计算机科学与技术
学号:
姓名:
【实验目的】
1、掌握结构体类型的说明、结构体变量的定义、引用方法。
2、掌握结构体数组的使用方法。
3、领会枚举类型变量的定义和使用方法。
【实验内容】
1、假设某年不是瑞年,且该年的第一天刚好是星期三,从键盘入月、日,计算该天为星期几(程序中要求使用结构体表示日期,用枚举类型表示星期)。
{int month; int day;}date;
输入month day
days=0
பைடு நூலகம்for(i=1;i<date.month;i++)
days=days+day_tab[i];
days=days+date.day;
enum weekday{sun,mon,tue,wed,thu,fri,sat}n;
(stu[i].score-10)>average
T F
stu[i].great='C';
stu[i].great='B';
for(i=0;i<10;i++)
输出每位同学的姓名成绩等级
源程序:#include<stdio.h>
struct student
{char name[20];
float score;
char great;
}stu[10]={{"zhang",95},{"wang",70},{"li",99},{"zhao",65},{"qian",78},
{"sun",98},{"qin",60},{"tong",70},{"zhu",63},{"she",94}};
void main()
{
float i,sum=0,average;
printf("input month,day:");
scanf("%d,%d",&date.month,&date.day );
days=0;
for(i=1;i<date.month;i++)
days=days+day_tab[i];
days=days+date.day;
{enum weekday{sun,mon,tue,wed,thu,fri,sat}n;
解题思路:
先定义一个结构体用来表示日期,再计算此日期为这年的第几天即days(将这个月的前几个月天数相加再加日)再定义枚举类型enum weekday{sun,mon,tue,wed,thu,fri,sat};用(days+2)%7计算出星期几,输出即可
流程图:
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31};
stu[i].great='C';
else stu[i].great='B';
printf("Name Score great\n");
for(i=0;i<10;i++)
printf("%-10s,%3f,%5c\n",stu[i].name,stu[i].score,stu[i].great);
getch();
}
运行结果:
学习心得(可选):
【教师评语和成绩】
成绩:指导教师:日期:
流程图:
struct student{char name[20];float score; char great;
stu[10]={{"zhang",95},{"wang",70},{"li",99},{"zhao",65},{"qian",78},{"sun",98},{"qin",60},{"tong",70},{"zhu",63},{"she",94}};
float i,sum=0,average;
for(i=0;i<10;i++)
sum=sum+stu[i].score;
average=sum/10.0;
输出aversge
for(i=0;i<10;i++)
((stu[i].score-10)>average)
T F
stu[i].great='A';
case thu:printf("today is:thu\n");break;
case fri:printf("today is:fri\n");break;
case sat:printf("today is:sat\n");break;
} }
getch();
}
运行结果:
学习心得(可选):
2、编写一程序,读入全班10个学生的姓名、成绩,计算出全班的平均分,最后评定出每个学生的成绩等级A、B、C,高于全班平均分10分以上者为A等,低于全班平均分10分以上者为C等,其余为B等,并将学生的信息输出(程序中要求使用结构体表示学生信息)。
解题思路:
按照要求将每位同学的信息按照结构体形式初始化,再将每位同学的成绩相加得sum. sum/10便得平均分,用if语句将每位同学的成绩与平均分相比较,若成绩(stu[i].score-10)>average则为A。若average-10)>stu[i].score则为C.其他都为B。再按照for语句,将每位同学的信息输出(姓名,分数,等级|)
n=(days+2)%7;
n=0
n=1
n=2
n=3
n=4
n=5
n=6
输出sun
输出mon
输出tue
输出wed
输出thu
输出fri
输出sat
源程序:
#include<stdio.h>
struct
{int month;
int day;
}date;
void main()
{int i, days;
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31};
n=(days+2)%7;
switch(n)
{
case sun:printf("today is:sun\n");break;
case mon:printf("today is:mon\n");break;
case tue:printf("today is:tue\n");break;
case wed:printf("today is:wed\n");break;
for(i=0;i<10;i++)
sum=sum+stu[i].score;
average=sum/10.0;
printf("average:%f\n",average);
for(i=0;i<10;i++)
if
((stu[i].score-10)>average)
stu[i].great='A';
else if ((average-10)>stu[i].score)
相关文档
最新文档