实验8_结构体

合集下载

中南大学C语言实验(指针、结构体)

中南大学C语言实验(指针、结构体)

实验七指针一、目的要求1.掌握指针的定义和使用指针变量;2.学会使用字符串的指针和指向数组的指针变量;3.学会使用指向函数的指针变量;4.按实验内容要求完成全程程序设计后才允许上机。

二、实验内容与步骤设计一个函数,它有三个形参(1)被查找的字符串str;(2)待查找的字符xCh;(3)在字符串str中xCh出现的位置i=0,1,…它的返回值是在str中xCh 出现的次数(若str中无xCh,则返回值=0)三、上机要求1、键入待查的字符xCh;2、键入被查的字符串str;3、调用该函数;4、打印它的返回值和出现的位置;5、允许重复执行,每次以清屏开始(用循环语句控制重复执行)。

四、提示xCh在str出现位置应设计为一整型指针,以便记下0~N个位置(整数)。

#include<stdio.h>void main(){char temp;int run(),j;int (*prun)();temp='Y';while(temp!='N'||temp!='n'){if(temp=='Y'||temp=='y'){prun=run;j=(*prun)();if (j==0){printf("Can Not Find The xCh! j=%d",j);}else{printf("\nj=%d",j);}printf("\nParden>Y/N:");fflush(stdin);temp=getch();}if(temp=='N'||temp=='n')break;if(temp!='Y'&&temp!='y'){printf("Wrong!Y ou can only put Y(N) or y(n)\nPlease put again(Y/N):");fflush(stdin);temp=getch();}}}int run (char xCh,char str[100],int i){int j;char *p;clrscr();printf("xCh=");xCh=getch();printf("%c\nstr=",xCh);gets(str);p=&str[0];i=0;j=0;while(*p){if (*p==xCh){j++;printf("xCh :%d\t",i);}p=p+1;i++;}return j;}Mian()版:#include<stdio.h>void main(){int i,j;char xCh,str[100],*p,temp;temp='Y';/*给temp赋初值Y,防止第一个while循环无法运行*/while(temp!='N'||temp!='n')/*如果temp不等于n或N时,进行循环*/{if(temp=='Y'||temp=='y')/*当temp为y或Y时,进行下列循环,用于进行题目要求的操作*/{clrscr();/*清屏*/printf("xCh=");/*在屏幕输出提示xCh=*/xCh=getch();/*从屏幕读取一个字符赋给xCh(getch()和getchar()的区别:前者只要输入一个字符就结束输入过程,后者需要按回车或空格后才结束输入过程)*/printf("%c\nstr=",xCh);/*在屏幕xCh=后面输出刚才输入的xCh的值,并提示用户输入str(因为我们用getch(),输入完字符后会自动结束xCh的输入进入下一指令的执行(在本题中,下一指令是:printf("%c\nstr=",xCh);),而不在屏幕输出刚才输入的字符)【不理解的话把该句改成{printf("\nstr=");}看看输出结果就知道了】*/gets(str);/*输入str*/p=&str[0];/*将指针地址指向str这个字符串的首字符位置*/i=0;j=0;while(*p)/*当p所指向的字符不为空字符时,进行判断循环*/{if (*p==xCh)/*当p所指向的字符为所需寻找的xCh时,进行以下操作*/{i++;/*i自加1,用于累计str中xCh的数目*/printf("xCh :%d\t",j);/*输出xCh在str中出现的位置*/}p=p+1;/*指针地址移向str的下个字符*/j++;/*j用于记录此时p的位置,在str中第一个字符时=0,第二个时=1,以此类推*/}if (i==0)/*当str中没有xCh这个字符时,i=0*/{printf("Can Not Find The xCh! i=%d",i);/*在屏幕中提示无法找到str中的xCh,并输出i=0*/}else{printf("\ni=%d",i);/*\n为换行*/}printf("\nParden>Y/N:");fflush(stdin);/*清空计算机缓存*/temp=getch();/*从屏幕中读取一个字符赋给temp*/}if(temp=='N'||temp=='n')/*当temp为N或n时*/break;/*跳出循环*/if(temp!='Y'&&temp!='y')/*当输入的temp不为Y、y、N、n时*/{printf("Wrong!Y ou can only put Y(N) or y(n)\nPlease put again(Y/N):"); fflush(stdin);temp=getch();}}}/*fflush(stdin)*/实验八结构体与共用体一、目的要求1、掌握结构体类型变量与数组的定义和使用;2、学会使用指针变量和结构体指针数组;3、按实验内容要求完成全程程序设计后才允许上机。

实验8结构体

实验8结构体

实验8 结构体
实验要求:
1、掌握结构体类型方法以及结构体变量的定义和引用。

2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。

3、掌握运算符”.”和”->”的应用。

4、共用体的概念和应用。

实验内容:
1. 编写程序:定义一个职工结构体类型,定义职工结构体变量,从键盘输入一名职工信息,然后输出。

(假设职工信息包括:姓名、身份证号、工龄、工资)
2. 设计一个保存学生情况的结构体,学生情况包括姓名、学号、年龄。

输入5个学生的情况,输出学生的平均年龄和年龄最小的学生的情况
3. 使用结构体数组输入10本书的名称和单价,调用函数按照书名的字母顺序序进行排序,在主函数输出排序结果。

实验结构体实验报告

实验结构体实验报告
}
}
cout<<"姓名"<<'\t'<<"生日"<<'\t'<<"电话"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i].name<<'\t'
<<a[i].bir.year<<"/"<<a[i].bir.month<<"/"<<a[i].bir.day<<"/"<<'\t'
<<a[i].tel<<endl;
{
i=1;
}
else
i=0;
for(j=0;j<p->month;j++)
{
n=n+b[i][j];
}
n=n+p->day;
return n;
}
主要标识符说明:(源程序中主要标识符含义说明)
声明结构体类型nian,包括年(整型)、月份(整型)、天(整型)
struct nian
{
int year;
int month;
cin>>a.month ;
cout<<"请输入第几日"<<endl;
cin>>a.day;
n=find(p);
cout<<"你输入的日期为"<<a.year <<"/"<<a.month<<"/"<<a.day<<endl;

C语言作业(实验报告

C语言作业(实验报告

《程序设计基础》(c语言)实践报告专业: 计算机科学与技术班级: 信息大类1303姓名: 蒋国辉学号: 1130299090教师:《程序设计基础》(c语言)课程组教师寄语课程简介《程序设计基础》是计算机相关专业的专业基础课,其目的是为了培养学生程序设计的技能,使学生掌握程序设计的基本思想和方法,培养学生用计算机解决实际问题的能力。

该课程是后续理论和实践教学的基础和重要工具,将直接影响到专业兴趣的培养,后续专业课程教学内容的实施。

课程内容本课程教学的主要内容包括:1、程序与程序设计的基本概念;算法与算法的表示;结构化程序设计方法等。

2、C语言的基本组成,C程序的基本结构;C程序的上机过程;C语言的数据类型和各类运算规则。

3、顺序程序设计;选择结构程序设计;循环控制;函数;指针;结构体和文件等。

4、C程序的模块化结构;函数的定义与调用,包括函数的递归调用;变量存储属性;工程文件的建立和使用;编译预处理;库函数简介;文件的概念;文件的建立、打开与关闭;各种文件的读写方法。

补充说明1、本课程作为一种与计算机“沟通”的语言工具,在某种程度上讲,和普通话、英语有一些类似。

对初学者而言,最好的学习方式就是在基本的语法规则框架下,不断的模仿和重复训练,最畏惧和担心的就是灵活与多变。

只有不畏惧,才能敢模仿,敢写、敢调试。

才能避免掉入语法漩涡止步不前。

2、课程共设8个单元,对于每个单元的实践内容,按照基础训练和差异化训练相结合的思想,设置了多道编程题目,同学们在每个单元可以根据实际情况,可选做3道,鼓励在有精力的情况下尽可能多练习。

3、课程的源码可以手写也可以打印出来粘贴,对程序运行结果打印粘贴。

4、单元内容即是平时基本功的训练,也可当做理论考试的复习。

实验1 顺序结构程序设计一、实验目的1. 熟悉C语言的编程环境,掌握C程序运行的一般步骤;2. 掌握C语言中数据的输入输出方法,常用输入/输出函数的使用;3. 掌握顺序结构程序设计方法,能编写简单的C程序;二、实验内容1、编写程序,输入一个四位数,打印输出其个位数、十位数、百位数和千位数。

结构体实验

结构体实验

结构体实验
1.实验目的
a)掌握结构体类型变量的定义和使用
b)掌握结构体类型数组的概念和使用
c)掌握共用体的概念与使用。

d)掌握用typedef定义类型。

2.实验内容
1)某班有若干个学生(假设为10),每个学生的信息包括学号、姓名、三
门课的成绩,从键盘输入这些学生的信息,要求打印出三门课总平均成
绩,以及最高分的学生的数据(包括学号、姓名、三门课的成绩、平均
分数)。

要求:
i.用input函数输入十个学生数据;
ii.用average函数求总平均分;
iii.用max函数找出最高分的学生数据;
iv.总平均分和最高分学生的数据都在主函数中输出。

2)某单位有n名职工参加计算机水平考试,设每个人的信息包括准考证号、
姓名、年龄、成绩。

单位规定30岁以下的职工必须进行考试,分数为百
分制,60分为及格;30岁以上的职工进行操作考试,成绩分为A、B、
C、D四个等级,C以上为及格,统计及格人数,并输出每位考生的成绩。

提示:n名职工组成结构体类型数组定义如下:
struct
{
char name[20];
long num;
int age;
union
{
float score;
char grade;
}result;
}employee[N];。

淮阴工学院c++实验报告实验八结构和链表

淮阴工学院c++实验报告实验八结构和链表

实验八结构体与链表一、实验目的和要求1.掌握结构体类型、结构体变量的基本概念;2.掌握结构体指针、结构体数组的应用;3.掌握链表的基本概念;4.掌握链表的基本操作与应用,包括建立链表、遍历链表、插入结点、删除结点、查找结点等。

二、相关知识点1.结构体类型:定义:struct 结构类型名{数据类型数据项1;数据类型数据项2;…………………….数据类型数据项n;}2.结构体变量:1.定义:(1)间接定义法──先定义结构类型、再定义结构变量struct 结构类型名结构变量;(2)直接定义法──在定义结构类型的同时定义结构变量struct 结构类型名{………}结构变量表;2.结构变量的初始化与引用:(1)如:struct std_info student={"000102","张三","男",{1980,9,20}};(2)结构变量的引用规则,对于结构变量,要通过成员运算符“.”,逐个访问其成员即结构变量.成员3.结构体指针:(1)使用指向结构变量的指针来访问结构变量的各个成员。

struct std_info *p_std=&student(2)使用指向结构数组的指针来访问结构数组struct std_info *p_std=student;4.结构体数组结构数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员。

struct std_info student[3]={{“000102”, “张三”,“男”,{1980,9,20}},{“000105”,“李四”,“男”,{1980,8,15}},{“000112”, “王五”,“女”,{1980,3,10}}};5.链表的基本操作与应用:(1)建立链表:创建静态链表,创建动态链表(2)访问链表(3)插入结点(4)删除结点(5)查找结点(6)链表的释放。

三、实验内容1.定义一个学生成绩结构体类型,包含“学号”、“姓名”、“性别”、“年龄”、“班级”、“英语”、“数学”、“物理”、“总分”、“名次”等信息。

《程序设计础—C程序实验》

《程序设计础—C程序实验》
4.编程,输出100~300之间所有素数,并将它们的和打印出来。
思考题:编程,输出以下图形:
*
***
*****
*******
*********
*******
*****
***
*
实验7数组
一、实验目的
1.理解数组的概念,掌握一维数组和二维数组的定义、存储结构、赋值和输入输出的方法。
2.理解字符串的概念,掌握字符数组和字符串函数的使用。
/*ex1.c*/
#include <stdio.h>
main()

printf("Hello!\n");
printf("This is C program!\n");

试编译、连接、运行该程序,并按Alt+F5查看运行结果。
运行结果是:
2.输入并调试运行以下程序,查看运行结果(由此结果可以了解到在实验用的微型机上,几种数据类型所占的字节数)。
for(i=1;i<5;i++)
{if(i%2)printf("*");elsecontinue;
printf("%");
}
printf("@");
}运行结果是:
2.编程,用公式π/4≈1- + - +…求π的近似值,当某项绝对值小于 时计算结束。
3.输入一行字符,编程统计并输出其中的大写英文字母和数字的个数。
4.详细记录数据的输入、输出信息,按要求写出实验报告。
三、实验内容
1.输入并调试以下程序:
(1)#include<stdio.h>
main()

C语言程序设计教程(第二版)张敏霞 参考答案

C语言程序设计教程(第二版)张敏霞 参考答案

c语言程序设计教程(第2版)课后题及模拟题参考答案习题1 (3)1-1 填空题 (3)1-2 思考题 (3)1-3 编程题 (3)习题2 (4)2-1 单选题 (4)2-2 思考题 (4)习题3 (5)3-1 选择题 (5)3-2 填空题 (5)3-3 编程题 (5)习题4 (7)4-1单选题 (7)4-2填空题 (7)4-3 编程题 (7)习题5 (10)5-1单选题 (10)5-2填空题 (10)5-3 编程题 (10)习题6 (13)6-1单选题 (13)6-2填空题 (13)6-3 编程题 (13)习题7 (15)7-1单选题 (15)7-2填空题 (15)7-3 编程题 (15)习题8 (16)8-1单选题 (16)8-2填空题 (16)8-3 编程题 (16)习题9 (18)9-1单选题 (18)9-2填空题 (18)9-3 编程题 (18)习题10 (22)10-1单选题 (22)10-2填空题 (22)10-3 编程题 (22)习题11 (24)11-1单选题 (24)11-2填空题 (24)习题12 (25)12-1单选题 (25)12-2 填空题 (25)实验篇 (26)实验1 熟悉Visual C++6.0可视化集成开发环境 (26)实验2 顺序结构程序设计 (26)实验3 选择结构程序设计 (26)实验4 循环结构程序设计 (26)实验5 函数 (28)实验6 数组 (32)实验7 指针 (33)实验8 结构体和共用体 (35)实验9 文件 (36)实验10 综合编程 (36)模拟试卷(一)参考答案 (37)模拟试卷(二)参考答案 (38)习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5.{, }6./*, */7.顺序结构,选择结构,循环结构8..c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言程序设计》实验报告实验序号:8 实验项目名称:结构体
int i;
for(i = 0; i<= number; i++)
{
Stu[i] = (stu[i].score[0]+ stu[i].score[1]+stu[i].score[2])/3.0
}
}
③求平均分最高的学生
int averagescore(student stu[], int number)
{
int k = 0;
//查找最高平均分并记录在数组中的下标值
for( int i = 0; i<= number; i++)
{
………
}
return k; //返回最高平均分数组元素的下标
}
【测试数据】
自己设计一组测试数据。

运行结果截图:
【思考与扩展】
如果这样定义结构体
typedef struct Student
{
int num;//学号
char name[20];//姓名注意字节长度
char classname[20];//班级
float score[3];//三门课程成绩
float aver_score; //平均分
} STU,* pSTU;
说明如下三条语句的含义:
student stu1;
STU stu2;
pSTU pstu;
2.采用结构体数组编写程序,定义一个含职工姓名、工作年限、工资总额的结构体类型,初始化5名职工的信息,最后再对工作年限超过30年的职工加100元工资,然后分别输出工资变化之前和之后的所有职工的信息。

运行结果截图:
3.定义一个结构体变量(包括年、月、日)。

计算某年某月某日是本年中第几天?注意闰年问题。

运行结果截图:
附源程序清单:
1.
#include<stdio.h>
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<a[i+1]) max=a[i+1];
return max;
}
2.
#include<stdio.h>
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);
printf("%-20s%-10s%-10s%-10s\n","Name","Year","Money","Allmoney");
for(i=0;i<5;i++)
printf("%-20s%-10d%-10d%-10d\n",wor[i].name,wor[i].year,wor[i].money,allmoney[i]); }
int a(int b,int c)
{
int d;
if(b>=30)
{
d=c+100;
return d;
}
else return c;
}
3.
#include<stdio.h>
void main()
{
struct date
{
int year;
int month;
int day;
}date;
int a(int b);
int sum,i;
printf("请输入年月日:\n");
scanf("%d%d%d",&date.year,&date.month,&date.day);
switch(date.month)
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=334;break;
default:printf("data error");
}
i=a(date.year);
sum=sum+date.day+i;
printf("该天为该年第%d天\n2",sum);
}
int a(int b)
{
int c;
if(b%4==0&&b%100!=0||b%400==0) return c=1;
else return c=0;
}。

相关文档
最新文档