64.
编程题
编写main函数,声明结构数组a、b并用测试数据初始化(a、b数组中数据按成员id值升序存储;显示a,b数组中数据(显示数组数据调用display函数完成,下同);调用delete函数从a数组中删除在b数组中重复出现的联系人信息,显示a数组中数据;调用merge函数将a数组中全部联系人信息合并到b数组,显示b数组中数据;调用sort函数对a数组中数据排序,显示a数组中数据。
【测试数据】
a数组:{101, "tom","m"},{103,"mary","f"},{104,"mark","m"},
{105,"julia","f"},{106, "sara","f"}
b数组: {102, "mark","m"},{104,"mark","m"}
【输出结果】
a:
ID NAME SEX
101 tom m
103 mary f
104 mark m
105 julia f
106 sara f
b:
ID NAME SEX
102 mark m
104 mark m
a:
ID NAME SEX
101 tom m
103 mary f
105 julia f
106 sara f
b:
ID NAME SEX
101 tom m
102 mark m
103 mary f
104 mark m
105 julia f
106 sara f
a:
ID NAME SEX
105 julia f
103 mary f
106 sara f
101 tom m
请认真测试程序的正确性。将源代码以文本方式提交,不要直接提交文件。
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
C语言编程题 编写main函数,声明结构数组a、b并用测试数据初始化
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qtchen_1988 2020-05-18 18:52关注
#include <iostream> #include <string.h> #include <algorithm> using namespace std; struct Stu{ int id; char name[20]; char sex[2]; }; void display(Stu stu[],int n) { printf("ID NAME SEX\n"); int i; for(i=0;i<n;i++) printf("%d %s %s\n",stu[i].id,stu[i].name,stu[i].sex); } void del(Stu a[],Stu b[],int na,int nb) { int i,j,idx=-1; Stu temp[7]; memset(temp,0x0,sizeof(temp)); for(i=0;i<nb;i++) for(j=0;j<na;j++) { if(a[j].id == b[i].id && (strcmp(a[j].name,b[i].name)==0) && (strcmp(a[j].sex,b[i].sex)==0)) { idx = j; break; } } if(idx != -1) { for(i=0;i<(na-1);i++) { if(i >= idx) a[i] = a[i+1]; } } memset(&a[i],0x0,sizeof(a[i])); } bool cmp(Stu a,Stu b) { return a.id<b.id; } bool cmp2(Stu a,Stu b) { return (strcmp(a.name,b.name) < 0); } void merge(Stu a[],Stu b[],int na,int nb) { int i; for(i=0;i<na;i++) b[i+nb] = a[i]; sort(b,b+(na+nb),cmp); } void sort(Stu stu[],int n) { sort(stu,stu+n,cmp2); } int main(){ Stu a[7] = {{101, "tom","m"},{103,"mary","f"},{104,"mark","m"}, {105,"julia","f"},{106, "sara","f"}},b[7]={{102, "mark","m"},{104,"mark","m"}}; printf("a:\n"); display(a,5); printf("\nb:\n"); display(b,2); del(a,b,5,2); printf("\na:\n"); display(a,4); merge(a,b,4,2); printf("\nb:\n"); display(b,6); sort(a,4); printf("\na:\n"); display(a,4); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵