版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习任务十一参考答案
问题11-1:说明一个结构体类型st,含有姓名(name)、年龄(age)
和身高(heigh)成员。
structst{
charname[12];
intage;
floatheigh;
);
问题11-2:参照问题117,使用一种方法,定义一个st结构体
类型的变量studo
structststud;
问题11-3:定义一个student结构体类型的变量stud,并赋初
值。
structdata{intyear,month,day;};
structstudent{charname[12];
charsex;
structdatabirthday;
floatsc[4];
1;
voidmain()
{
structstudentstud={"陈立方
",'M',1962,5,10,67.5,56.8,90,100);
问题11-4:参照应用举例11-4,定义一个结构体类型STU,并
写出show函数和fun函数,fun函数的功能是更改x变量的name成
员值,参照程序的执行结果,将代码补充完整。
#include"stdio.h"
#incIude"string.h"
typedefstruct{charnum[3];
charname[9];
charsex;
floatscore[2];
}STU;
voidshow(STUy)
printfC学号姓名性别成绩\n”);
printf("%4s%6s%c%.2f%.2f\n",y.num,y.name,y.sex,y.scor
e[0],y.score[1]);
}
voidfun(STU*z)〃此函数用于更改name成员值
(
strcpy((*z).name,"那仁央措”);
)
voidmain()
(
STUx={”01“,”张楠。W,67,94.5};
printf("修改前:\n");
show(x);
fun(&x);//调用fun函数,更改x变量的name成员值
printf("修改后:\n");
show(x);
getchar();
}
问题11-5:将应用举例11-5中,按姓名排序改为按总成绩降序
排序,将代码补充完整。
#incIude"stdio.h"
#incIude"string.h"
#defineN3
typedefstruct
{charnum[3];
charname[9];
charsex;
floatscore[2];
}STU;
voidshow(STU*x)
{
inti;
printf("学号姓名性别成绩\n“);
for(i=0;i<N;i++)
printf(n%s%6s%3c%.2f%.2f\n",\
x[i].num,x[i].name,x[i].sex,x[i].score[0],x[i].score[1]
);
}
voidsort(STU*x)
(
inti,j;
STUt:
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(x[i].score[0]+x[i].score[1]<x[j].score[0]+x[j].score[1])
t=x[i],x[i]=x[j],x[j]=t;
)
voidmain()
(
STUx[N]={{”0r,“张楠”,'W',67.5,74.5},\
{“02”,”李小涵二,98,91.5},\
「03”,"郭金晶"JW',69,84.51);
show(x);
sort(x);
printf("按成绩降序排序后:\n");
show(x);
getchar();
)
问题11-6:输出平均分。
#incIude"stdio.h"
#incIude"string.h"
typedefstruct
{charnum[3];
charname[9];
charsex;
floatscore[2];
}STU;
typedefstructsIist〃说明节点的结构体类型
{STUst;〃数据域成员
structsIist*next;〃指针域成员
JSLIST;
SLIST*create_sIist()〃创建链表的函数
{STUx;
SLIST*h,*s,*r;
h二(SLIST*)malloc(sizeof(SLIST));〃动态分配一个存储单
元,地址赋给h。
r=h;
puts(”请输入学号:");
gets(x.num);
puts(”请输入姓名:");
gets(x.name);
puts("请输入性别和两科成绩:");
scanf("%c%f%f",&x.sex,&x.score[0],&x.score[1]);
while(1)
if(strcmp(x.num,"00")-0)//当学号为:"00"
时,结束输入.
break;
fflush(stdin);〃清空标准输入缓
存
s=(SLIST*)malloc(sizeof(SLIST));〃分配一个存储单
元,地址赋给So
s->st=x;//为结点的数据成
员赋值
r->next=s;//与前一个结点链
上
r=s;//指针r后移
puts(“请输入学号:");
gets(x.num);
puts(“请输入姓名:");
gets(x.name);
puts(”请输入性别和两科成绩:”);
scanf("%c%f%f",&x.sex,&x.score[0],&x.score[1]);
)
r->next=NULL;〃为链表最后一个结点的指针
成员赋结束标志
returnh;〃返回链表头地址
}
voidprint_slist(SLIST*head)〃输出链表的函数,形参为
链表的头地址。
{SLIST*p;
p=head->next;//p指向第一个有数据的结
点。
if(P=='\0')
printf("Linklistisnull!\n");
eIse
{printf(”学号姓名性别成绩平均分
\n");
do{
printf("%2s%6s%c%.2f%.2f\n",\
p->st.num,p->st.name,p->st.sex,\
p->st.score[0],p->st.score[1],\
(p->st.score[0]+p->st.score[1])/2);
p=p->next;〃指向
下一个结点
}while(p!=f\0');
}
}
main()
{SLIST*head;
head=create_slist();//调用函数创建链表,带回链表的头
地址。
print_sIist(head);〃实参是链表的头地址,调用函数输
出链表中各节点值。
getchar();
getchar();
)
程序运行结果如下:
请输入学号:
01
请输入姓名:
张楠
请输入性别和两科成绩:
W67.574.5
请输入学号:
02
请输入姓名:
李小涵
请输入性别和两科成绩:
M9891.5
请输入学号:
03
请输入姓名:
郭金晶
请输入性别和两科成绩:
W6984.5
请输入学号:
00
请输入姓名:
无
请输入性别和两科成绩:
MOO
学号姓名性别成绩平均分
01张楠W67.5074.50
02李小涵M98.0091.50
03郭金晶W69.0084.50
编程训练11T按要求说明结构体类型。
typedefstructstudent{
intsno;
charname[10];
fIoatscore[3];
}STU;
编程训练11-2编写输出函数。
#incIude<stdio.h>
#defineN5
typedefstructstudent{
intsno;
charname[10];
floatscore[3];
}STU;
voidshow(STU*a)
{inti;
printf(”学号姓名成绩\n”);
for(i=0;i<N;i++)
printf("%d%-6s%.Of%.Of%.Of\n",\
a[i].sno,a[i].name,a[i].score[0],\
a[i].score[1],a[i].score[2]);
1
voidmain()
{STUt[N]={{10001,“马超”,91,92,77},{10002,“曹凯”,
75,60,881.
{10003,“李斯”,85,70,78},{10004,”刘芳
菲“,90,82.87},
{10005,”张萨欧,95,80,88));
show(t);
getchar();
程序运行结果:
学号姓名成绩
10001马超919277
10002曹凯756088
10003李斯857078
10004刘芳菲908287
10005张萨欧958088
编程训练11-3:编写查找函数。
#include<stdio.h>
#incIude<string.h>
#defineN5
typedefstructstudent(
intsno;
charname[10];
floatscore[3];
}STU;
intfun(STU*a,char*s)//形参依据实参写
{inti;
for(i=0;i<N;i++)
if((strcmp(a[i].name,s))=0)
returni;
return-1;
)
voidmain()
{STUt[N]={{10001,”曹凯二91,92,77},{10002,”马利超
",75,60.88).
{10003,“李斯”,85,70.78},{10004,“刘芳菲”,
90,82.87),
{10005,”张萨欧二95,80,88}};
charsname[10];
intn,i;
printf(“请输入要查找的姓名:");
gets(sname);
n=fun(t,sname);//实参是数组名和一个字符串
if(n>=0)
{printf("您要查找的是:“);
printf("\n%-8d%-8s",t[n].sno,t[n].name);
for(i=0;i<3;i++)printf(n%6.2f",
t[n].score[i]);
printf("\n");
}
eIse
printf("查无此人!");
getchar0:
)
程序执行结果:
请输入要查找的姓名:刘娜
查无此人!
请输入要查找的姓名:刘芳菲
您要查找的是:
10004刘芳菲90.0082.0087.00
编程训练11-4编写删除某下标元素的函数。
#incIude<stdio.h>
#incIude<string.h>
#defineN5
typedefstructstudent{
intsno;
charname[10];
fIoatscore[3];
}STU;
voidshow(STU*a,intm)〃输出a地址开始的m个数组元素
{
inti;
printf(”学号姓名成绩\n”);
for(i=0;i<m;i++)
printf("%d%-6s%.Of%.Of%.0f\n",\
a[i].sno,a[i].name,a[i].score[0],\
a[i].score[1],a[i].score[2]);
)
intfun(STU*afchar*s)//查找某姓名的函数
{
inti;
for(i=0;i<N;i++)
if((strcmp(a[i].name,s))=0)
returni;
return-1:
)
voiddeI(STU*a,int*k,intn)//删除a数组*k个元素中下
标为n的元素
(
inti;
for(i=n;i<*k;i++)
a[i]=a[i+1];
一*k;
)
voidmain()
{STUt[N]={{10001,”曹凯二91,92,77},{10002,”马利超
",75,60.88).
{10003,"李斯",85,70,78},{10004,“刘芳菲”,
90,82.87).
{10005.”张萨欧”,95,80,88));
charsname[10];
intn,i,k=N;
charc;
printf("\n请输入要删除的姓名:");
gets(sname);
n=fun(t,sname);
if(n>=0)
{printf(“您要查找的是:”);
printf("\n%-8d%-8s",t[n].sno,t[n].name);
for(i=0;i<3;i++)printf(H%6.2f",
t[n].score[i]);
printf("\n是否删除?Y/N:");
c=getchar();
if(toupper(c)—'Y')
deI(t,&k,n);
show(t,k);
)
else
{printf("查无此人!:\n"):
show(t,k);
)
getchar();
getchar();
)
程序运行结果」:
请输入要删除的姓名:刘娜
查无此人!:
学号姓名成绩
10001曹凯919277
10002马利超756088
10003李斯857078
10004刘芳菲908287
10005张萨欧958088
程序运行结果_2:
请输入要删除的姓名:刘芳菲
您要查找的是:
10004刘芳菲90.0082.0087.00
是否删除?Y/N:N
学号姓名成绩
10001曹凯919277
10002马利超756088
10003李斯857078
10004刘芳菲908287
10005张萨欧958088
程序运行结果_3:
请输入要删除的姓名:刘芳菲
您要查找的是:
10004刘芳菲90.0082.0087.00
是否删除?Y/N:Y
学号姓名成绩
10001曹凯919277
10002马利超756088
10003李斯857078
10005张萨欧958088
编程训练11-5按平均分降序排序
#include<stdio.h>
#incIude<string.h>
#defineN5
typedefstructstudent(
Intsno;
charname[10];
floatscore[3];
}STU;
voidshow(STU*a,intm)〃输出数组元素各成员值及平均分
{inti;
printf(”学号姓名成绩平均分\「);
for(i=0;i<m;i++)
printf("%d%-6s%.Of%.Of%.Of%.2f\n",\
a[i].sno,a[i].name,a[i].score[0],\
a[i].score[1],a[i].score[2],\
(a[i].score[0]+a[i].score[1]+a[i].score[2])/3);
1
voidsort(STU*a,intm)〃依据平均分降序排序
{inti,j;
STUt;
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(a[i].score[0]+a[i].score[1]+a[i].score[2]<\
a[j].score[O]+a[j].score[1]+a[j].score[2])
t=a[i],a[i]=a[j],a[j]=t;
)
voidmain()
{STUt[N]={{10001.”曹凯”,91,92.77l,110002,”马利超
",75,60.88).
{10003,“李斯”,85,70.78},{10004,“刘芳菲”,
90,82,87},
{10005,”张萨欧二95,80,88));
intn,i,k=N;
printf(”原数组:\n");
show(t,k);
sort(t,k);
printf("\n排序后的数组:\n");
show(t,k);
getchar();
)
程序运行结果:
原数组:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版亻黟拓么乃运动健身营养补充品订购协议一
- 2025年度智慧社区管理与居民服务合同模板3篇
- 13《种子发芽了》说课稿-2023-2024学年科学三年级下册青岛版(五四制)
- 2024清工承包合同协议书-城市道路建设专项3篇
- 2024汽车驾驶安全设备检测与维修合同3篇
- 福建省南平市武夷山上梅中学2022年高一数学文测试题含解析
- 福建省南平市吴屯中学高三生物模拟试题含解析
- 4《地球 我们的家园》《环境问题敲响了警钟》说课稿-2023-2024学年道德与法治六年级下册统编版
- 个人向公司租用pos机协议(2024版)2篇
- 2024清洁服务合同协议书-体育场馆深度清洁维护协议3篇
- 2022-2024年浙江中考英语试题汇编:完形填空(学生版)
- 2025年广东省广州市荔湾区各街道办事处招聘90人历年高频重点提升(共500题)附带答案详解
- 中试部培训资料
- 北师大版数学三年级下册竖式计算题100道
- 计算机网络技术全套教学课件
- 【可行性报告】2024年第三方检测相关项目可行性研究报告
- 屋顶分布式光伏发电项目施工重点难点分析及应对措施
- 2024解析:第三章物态变化-基础练(原卷版)
- 2024政务服务综合窗口人员能力与服务规范考试试题
- JT∕T 1477-2023 系列2集装箱 角件
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
评论
0/150
提交评论