xqnx.net
当前位置:首页 >> C语言两个有序数组合并 >>

C语言两个有序数组合并

就以你的例子来写,可适当修改为更普遍的 算法核心代码为:int i = j = k = 0;//循环比较,将小的插入到C数组中 while ( i < 3 && j < 3) { if (a [i] < b [j]) c[k++] = a[i++]; else c[k++] = b[j++]; }//处理其中一个数组剩下 while (i < 3) c[k++] = a[i++]; while( j < 3) c[k++] = b[j++]; 或许有更好的实现,你自己在想想吧!

基本思想: 1)先在A、B数组中各取第一个元素进行比较,将小的元素放入C数组; 2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元素比较,重复上述比较过程,直到某个数组被先排完;3)将另一个数组剩余元素抄入C

很简单的啊,读取第二个文件再写入到第一个文件结尾就行了,举个例: #include <stdio.h> int main() { file *f1,*f2; int r; char buf[4096]; f1=fopen("1.dat","ab"); f2=fopen("2.dat","rb"); if(f1&&f2) { while(1) { if((r=fread(buf,1,4096,f2))>0) fwrite(buf,1,r,f1); else break; } fcloseall(); } return 0; }

首先一点 printf("%d ",&c[m]); 这个语法错了. 应该是printf("%d ",c[m]); 否则输出的是地址. 其次是算法. 当i和j 也就是a和b有一个到结尾 那么 就会引起循环退出 这时 另一个剩余的元素就没有处理了.比如 你输入 a=1 2 b=3 4 那么c[0] = a[0] c[1] = a[1] 之后,i=2 退出循环 b的两个元素就没加入c了.

1:好像a,b,c三个数组都没清零.2:最后的条件有点问题,应把if(k==n)换成else.改后代码:#include<stdio.h> int main() { int i,j,k,p,n,m; j=0; k=0; int a[20]={0},b[20]={0},c[20]={0}; scanf("%d",&m); for (i=0;i<m;i++) { scanf("%d",&a[i]); } scanf(

#include<stdio.h> #define M 4 //数组a的元素个数 #define N 3 //数组b的元素个数 void paixu(int a[],int w) { int i,j; int t; for(j=1;j<w;j++) for(i=0;i<j;i++) if(a[i]>a[j]) { t=a[i];a[i]=a[j];a[j]=t; } } void main() { int i,j=0,n=M; int a[M],b[N],c[M+N]; printf("请输入数

#include <string.h>#define N 10 main() { int i; char s[N][100],a[1000];/*建字符串*/ for(i=0;i<N;i++) gets(s[i]);/*合并字符串*/ for(i=0;i<N;i++) strcat(a,s[i]); puts(a); }

#include<stdio.h>#include <iostream> using namespace std; int main() { int i,j,k,p,n,m; j=0; k=0; int a[20],b[20],c[20]; //scanf("%d",&m);// for (i=0;i<m;i++) //{ // scanf("%d",&a[i]);// } m=5; n=5; a[0]=1;a[1]=3;a[2]=5;a[3]=7;a[4]=9; b[0]=2;b[1]=4;b[2]

#include<stdlib.h> void main(){ int a[]={1,2,5}; int b[]={0,1,6,7,9}; int i,j,k,c[8]; /*c[8]中的8是数组a的长度加b的长度*/ j=k=0; for(i=0;i<8;i++){ if(j<3 && k<5) /*j小于数组a的长度 k小于数组b的长度*/ c[i]=a[j]<b[k]?a[j++] : b[k++]; else if(i>3) c[i]=b[k++]; else c[i]=a[j++]; } for(i=0;i<8;i++) printf("%d ",c[i]); }

两个错误,三个地方#include#includevoid main(){int a, b,f, g;char c[50], d[50], e[100];gets(c);for(a=0;c[a]!='\0';a++)//原来的是c[a]=!'\0'{e[a]=c[a];}gets(d);g=strlen(d);if(g>5){for(b=0;b 评论0 0 0

网站首页 | 网站地图
All rights reserved Powered by www.xqnx.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com