ghjhkniob 2020-05-18 17:23 采纳率: 93.3%
浏览 549
已采纳

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

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
请认真测试程序的正确性。将源代码以文本方式提交,不要直接提交文件。

  • 写回答

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 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程