解题思路:1:分别有三个数组li1,li2,li3;

                2:chuang1,chuang2,分别是li1,li2的长度;

                3:g1,g2分别指向li1,li2;

                4:做比较,当li1[g1]<=li2[g2]时,li3[i]保存li1[g1],当li2[g2]<li1[g1],同理

                5:当最小长度的字符串输入完毕时,就是g1等于chuang1或g2等于chuang2;调用函数mo,将长的字符串的末尾数字输入li3.最后输出li3.

注意事项:最后提交多次都是错误,多看了好几遍才发现时多组数据,看来现在本人不是眼睛近视,而是眼睛瞎了,以后还是要看好题目。

参考代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void mo(int *p,int *j,int qi,int wei,int f){
 for(;qi<wei;qi++){
  j[++f]=p[qi];
 }
}
int main(int agrc,char* agrv[]){
 int  li1[110],li2[110],li3[220];
 int chuang1,chuang2;
 while(scanf("%d",&chuang1)!=EOF){
 for (int i=0;i<chuang1;i++){
  scanf("%d",&li1[i]);
 }
 scanf("%d",&chuang2);
 for(int i=0;i<chuang2;i++){
  scanf("%d",&li2[i]);
 }
 int g1=0,g2=0;
 for(int i=0;i<chuang1+chuang2;i++){
  if (li1[g1]<=li2[g2]){
   li3[i]=li1[g1];
   g1++;
   if(g1==chuang1){
   mo(li2,li3,g2,chuang2,i);
   break;
   }
  }else{
   li3[i]=li2[g2];
   g2++;
   if(chuang2==g2){
   mo(li1,li3,g1,chuang1,i);
   break;
   }
  }
 }
 for(int i=0;i<chuang1+chuang2;i++){
  printf("%d ",li3[i]);
 }
 printf("\n");
 }
}

点赞(1)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论