- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构:C语言结构体与指针》
实验报告
学生姓名 学生班级 学生学号 指导老师
实验内容:
1) 学生信息的显示,具体要求如下:
???定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址);
???设计一个函数,用于显示单个学生信息,函数的参数为前面定义的结构体类型;
???设计一个主函数,在主函数中输入学生的信息,并调用前面定义的函数进行显示(学生人数不少于5人)。
2) 输入若干个整数作为数组元素值,然后按输入时顺序的就地逆置排序,最后打印出逆置后的元素值。要求用指针和动态内存分配方法实现。例如 输入:10 2 30 4 5,逆置后显示为:5 4 30 2 10。
需求分析
通过结构体和for()来实现学生数据的输入输出,即学号,名字,年龄和性别,并对相关选项判别。
概要设计
本系统通过菜单选项方式,让用户通过选择及简单的输入实现对学生成绩、学生信息的管理。每个版块有对应的功能,在学生信息管理中可以实现对学生各个信息的录入、查询、修改、删除等功能,在学生信息管理中可实现对学生姓名、学号、年龄、地址进行查询、修改、删除等。一共有5个学生的信息,进行查询类时,可以分为两种,一种是全部查询,另一种是查询输入的学号的学生的信息。
详细设计
源代码:#includestdio.h
#define N 20
#define A 30
typedef struct student{
long number;
char name[N];
char sex;
int age;
char adress[A];
}STU;
void xianshi(STU stu[]){
int j;
for(j=0;j5;j++){
printf(第%d个学生信息:\n,j+1);
printf(学号%1d,stu[j].number);
printf(姓名%s,stu[j].name);
printf(性别%c,stu[j].sex);
printf(年龄%d,stu[j].age);
printf(地址%s\n,stu[j].adress);
}
}
void main()
{
int i;
STU stu[N];
printf(请输入学号、姓名、性别、年龄、地址:\n);
for(i=0;i5;i++)
{
printf(请输入第%d个学生信息:\n,i+1);
scanf(%1d,stu[i].number);
scanf(%s,stu[i].name);
scanf(%c,stu[i].sex);
scanf(%d,stu[i].age);
scanf(%s,stu[i].adress);
}
xianshi(stu);
}
截图所示:
第二小问源代码:
#include stdio.h
#define LENGTH 11
int main(void)
{
int a[LENGTH];
/*用来表示当前调换位置的变量*/
int i,j;
/*一个辅助调换的变量*/
int tmp;
printf(逆序前为:);
/*假定初始化一个线性表*/
for(i=0;iLENGTH;i++){
a[i]=i;
printf([%d],a[i]);
}
printf(\n);
i=0;
j=LENGTH-1;
/*对调的终止条件为j比i大1(发生在偶数个元素的时候)
*或者j比i大2(发生在奇数个元素的时候)*/
while(1){
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
if(j-i==1 || j-i==2 || j-i=0){
break;
}
i++;
j--;
}
printf(逆序后为:);
for(i=0;iLENGTH;i++){
printf([%d],a[i]);
}
printf(\n);
return 0;
}
截图所示:
遇到的问题及解决方法
问题:用户不按照正常顺序操作,会出现程序报错;
解决方法:为了防止用户不按照正常的操作流程操作,不进行学生成绩的输入就进行后续操作导致的 系统报错或者弹出错误,在调用函数之前使用while循环增加一段容错代码,如果用户第一次选择的不是输入功能则提示用户选择错误并返回循环重新要求用户选择功能,直到用户输出成绩为止,跳出容错的处理循环进行正常的功能选择循环。
心得体会
在本次实验过程中,使我加深了对文件、指针、结构体等的理解,积累了很多实践经验,增强了动手能力和解决实际问题的能力
原创力文档


文档评论(0)