输入两行整数序列,每行整数序列均有10个正整数

问题描述:

输入两行整数序列,每行整数序列均有10个正整数,且每个序列从小到大有序排列的,请你按如下要求编写程序。

(1)    将两行有序整数序列读取到整型数组arr1中与arr2中。

(2)    将数组arr1与arr2中元素合并到整型数组arr3中,要求合并时要去除数组arr1与数组arr2中的重复数据。

(3)    将合并之后的数组arr3按顺序进行打印输出。

 

程序输入:

   共两行,每行10个正整数,正整数之间使用空格隔开。

程序输出:

    按顺序输出合并后的新数组。

输入示例:

1 3 5 6 7 8 10 13 14 15

2 4 6 8 9 10 12 13 15 16

输出示例:

    1 2 3 4 5 6 7 8 9 10 12 13 14 15 16

#include<stdio.h>
int main(void){
	int arr1[10];
	int arr2[10];
	int arr3[20];
	int i,j,temp;
	int zero=0;
	printf("请按由小到大的顺序输入正整数,正整数之间使用空格隔开\n");
	printf("请先输入十个正整数\n");
	for(i=0;i<10;i++){
		scanf("%d",&arr1[i]);
	}
	printf("请再输入十个正整数\n");
	for(j=0;j<10;j++){
		scanf("%d",&arr2[j]);
	}
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			if(arr1[i]==arr2[j]){
				arr2[j]=0;
			}
		}
	}
	for	(i=0;i<20;i++){
		if(i<10){
			arr3[i]=arr1[i];
		}
		else{
			arr3[i]=arr2[i-10];
		}
	}
	for	(i=10;i<20;i++){
		if(arr3[i]!=0){
			for(j=10;j<i;j++){
				if(arr3[j]==0){
					zero+=1;
				}
			}
			temp=i-zero;
			arr3[temp]=arr3[i];
		}
	}
	for	(i=0;i<20;i++){
		printf("%d ",arr3[i]);
	}
	return 0;
}

//C语言

#include<stdio.h>
int main(void){
    /*
    1 3 5 6 7 8 10 13 14 15

    2 4 6 8 9 10 12 13 15 16
    */
    int arr1[10];
    int arr2[10];
    int arr3[20];
    int i,j,temp;
    int zero=0;
    int t;
    printf("请按由小到大的顺序输入正整数,正整数之间使用空格隔开\n");
    printf("请先输入十个正整数\n");
    for(i=0;i<10;i++){
        scanf("%d",&arr1[i]);
    }
    printf("请再输入十个正整数\n");
    for(j=0;j<10;j++){
        scanf("%d",&arr2[j]);
    }
    for(i=0;i<10;i++){
        for(j=0;j<10;j++){
            if(arr1[i]==arr2[j]){
                arr2[j]=0;
            }
        }
    }
    for    (i=0;i<20;i++){
        if(i<10){
            arr3[i]=arr1[i];
        }
        else{
            arr3[i]=arr2[i-10];
        }
    }
    //冒泡排序
    for(i=0;i<20;i++)
    {
        for(j=i+1;j<=19;j++)
        {
            if(arr3[i]>arr3[j])
            {
                t=arr3[i]; //t是临时变量
                arr3[i]=arr3[j];
                arr3[j]=t;    
            }
        }    
    }
    
    for    (i=0;i<20;i++){
        if(arr3[i]>0)
            printf("%d ",arr3[i]);
    }
    return 0;
}
 

哪里错了??

 给你附上各种排序算法http://c.biancheng.net/view/3446.html  

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

img


哥们你这几行代码是想干个啥