问题描述:
输入两行整数序列,每行整数序列均有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