ghjhkniob 2020-05-18 17:23 采纳率: 93.3%

# C语言编程题 编写main函数，声明结构数组a、b并用测试数据初始化

64.

【测试数据】
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

• 写回答

#### 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;
}

``````

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

#### 悬赏问题

• ¥20 收一个快手协议下单算法
• ¥15 求一个图片中的成交量选股公式
• ¥15 已知正方形内随机生成坐标matlab
• ¥30 关于#python#的问题：我想要的是这79个大特征对于房屋售价的最大的影响前十名（相关搜索：随机森林）
• ¥15 使用matlab计算自定义特殊函数的二重积分，改变积分顺序所得的结果不同的问题？
• ¥15 mysql做碎片化处理老是报错怎么办
• ¥15 如何正确在vs2010中初始化map对象
• ¥30 mmdet3d模型部署问题
• ¥15 comsol仿真反射率、吸收率时峰值位置和深度不对！
• ¥30 Visual Studio找不到sdk，如何解决？