![《C语言学习与应用》课后习题及答案11_第1页](http://file4.renrendoc.com/view/2b6b9264836e4f42bf7bbac4f4347fef/2b6b9264836e4f42bf7bbac4f4347fef1.gif)
![《C语言学习与应用》课后习题及答案11_第2页](http://file4.renrendoc.com/view/2b6b9264836e4f42bf7bbac4f4347fef/2b6b9264836e4f42bf7bbac4f4347fef2.gif)
![《C语言学习与应用》课后习题及答案11_第3页](http://file4.renrendoc.com/view/2b6b9264836e4f42bf7bbac4f4347fef/2b6b9264836e4f42bf7bbac4f4347fef3.gif)
![《C语言学习与应用》课后习题及答案11_第4页](http://file4.renrendoc.com/view/2b6b9264836e4f42bf7bbac4f4347fef/2b6b9264836e4f42bf7bbac4f4347fef4.gif)
![《C语言学习与应用》课后习题及答案11_第5页](http://file4.renrendoc.com/view/2b6b9264836e4f42bf7bbac4f4347fef/2b6b9264836e4f42bf7bbac4f4347fef5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习任务十一参考答案
问题11T:说明一个结构体类型st,含有姓名(name)、年龄(age)
和身高(heigh)成员。
structst(
charname[12];
intage;
fIoatheigh;
);
问题11-2:参照问题117,使用一种方法,定义一个st结构体
类型的变量studo
structststud;
问题11-3:定义一个student结构体类型的变量stud,并赋初
值。
structdata{intyear,month,day;};
structstudent{charname[12];
charsex;
structdatabirthday;
fIoatsc[4];
};
voidmain0
(
structstudentstud={"陈立方
",'M',1962,5,10,67.5,56.8,90,100};
}
问题11-4:参照应用举例11-4,定义一个结构体类型STU,并
写出show函数和fun函数,fun函数的功能是更改x变量的name成
员值,参照程序的执行结果,将代码补充完整。
#incIude"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,"那仁央措”);
}
voidmain0
(
STUx={"01","张楠",W,67,94.5};
prin"("修改前:\n");
show(x);
fun(&x);//调用fun函数,更改x变量的name成员值
printf("修改后:\n");
show(x);
getchar();
}
问题11-5:将应用举例11-5中,按姓名排序改为按总成绩降序
排序,将代码补充完整。
#include"stdio.h"
#include"string.h"
#defineN3
typedefstruct
{charnum[3];
charname[9];
charsex;
fIoatscore[2];
}STU;
voidshow(STU*x)
(
inti;
printf("学号姓名性别成绩\n");
for(i=0;i<N;i++)
printf("%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]={{"01","张楠",'W',67.5,74.5}.\
{"02","李小涵",,M',98,91.5},\
{"03","郭金晶",'W’,69,84.5}};
show(x);
sort(x);
printf("按成绩降序排序后:\n");
show(x);
getchar();
)
问题11-6:输出平均分。
#incIude"stdio.h"
#incIude"string.h"
typedefstruct
{charnum[3];
charname[9];
charsex;
fIoatscore[2];
}STU;
typedefstructsIist〃说明节点的结构体类型
{STUst;〃数据域成员
structsIist*next;〃指针域成员
}SLIST;
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]);
whiIe(1)
if(strcmp(x.num,"00")==0)//当学号为:"00"
时,结束输入.
break;
ffIush(stdin);//清空标准输入缓
存
s=(SLIST*)maIloc(sizeof(SL1ST));〃分配一个存储单
元,地址赋给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_sIist(SLIST*head)//输出链表的函数,形参为
链表的头地址。
{SLIST*p;
p=head->next;//p指向第一个有数据的结
点。
if(p='\0')
printf("LinkIistisnull!\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!='\0');
)
}
main()
{SLIST*head;
head二create_sIist0;〃调用函数创建链表,带回链表的头
地址。
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];
fIoatscore[3];
}STU;
voidshow(STU*a)
tinti;
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]);
}
voidmain0
{STUt[N]={{10001,"马超",91,92,77],{10002,"曹凯",
75,60.88},
{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:编写查找函数。
#incIude<stdio.h>
#incIude<string.h>
#defineN5
typedefstructstudent{
intsno;
charname[10];
fIoatscore[3];
}STU;
intfun(STU*a,char*s)//形参依据实参写
(inti;
for(i=0;i<N;i++)
if((strcmp(a[i].name,s))==0)
returni;
return-1;
}
voidmain0
{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("%6.2f",
t[n].score[i]);
printf("\n");
)
eIse
printf("查无此人!");
getchar();
)
程序执行结果:
请输入要查找的姓名:刘娜
查无此人!
请输入要查找的姓名:刘芳菲
您要查找的是:
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*a,char*s)〃查找某姓名的函数
(
inti;
for(i=0;i<N;i++)
if((strcmp(a[i].name,s))==0)
returni;
return-1;
)
voiddel(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("%6.2f",
t[n].score[i]);
printf("\n是否删除?Y/N:");
c=getchar();
if(toupper(c)=='Y')
deI(t,&k,n);
show(t,k);
}
eIse
{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按平均分降序排序
#incIude<stdio.h>
#incIude<string.h>
#defineN5
typedefstructstudent(
intsno;
charname[10];
fIoatscore[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);
)
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[0]+a[j].score[1]+a[j].score[2])
t=a[i],a[i]=a[j],a[j]=t;
}
voidmain0
{STUt[N]={{10001,“曹凯",91,92,77],{10002,"马利超
",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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年艺术品捐赠收藏合同范本3篇
- 智研咨询-2025年中国园艺机具行业市场全景调查、投资策略研究报告
- 2025年中国三片罐行业投资方向及市场空间预测报告(智研咨询发布)
- 二零二五年度私人住宅地基买卖及配套设施建设协议3篇
- 第13课 现代交通运输的新变化 【知识精研】高二历史统编版(2019)选择性必修2经济与社会生活
- 第03章 热现象(物态变化)-2024年中考物理第一轮复习章节过关检测(人教版)
- 二零二五年度铝材研发与应用合作协议范本3篇
- 《服务用语及技巧》课件
- 《隧道盾构法施工》课件
- 《高级程序设计语言》课件
- 2023国民阅读时间报告
- 部编版三年级语文下册第一单元《1.古诗三首-绝句》教案
- 四川省成都市武侯区2022-2023学年七年级下学期期末英语试卷(含答案)
- 智能机器人与传感器PPT完整全套教学课件
- GB/T 42595-2023承压设备修理基本要求
- 塑料成型模具设计(第2版)江昌勇课件1-塑料概述
- 科幻小说赏读智慧树知到答案章节测试2023年杭州师范大学
- 《足球:脚背内侧传球》说课课件
- 高中生物 人教版 选修二《生态系统及其稳定性》 《生态系统及其稳定性》单元教学设计
- 公司设备日点检表模板
- (新版)金属冶炼(铅、锌冶炼)主要负责人考试题库(含答案)
评论
0/150
提交评论