高手们看这里!!!!

potter2002 2003-01-01 10:16:04
按升序合并两个升序数组。
我自己写的这个程序我实在看不出有什么错误,但就是通不过。
请高手指点。

#include<stdio.h>
main()
{
int a[5]={1,2,3,4,5},b[8]={1,2,3,4,5,6,7,8};
clrscr();
coali(a,b);
}


coali(int *a,int *b)
{
int c[13];
int i,j,t=0;
for(i=0,j=0;i<5&&j<8;t++)
{
if(*(a+i)<=*(b+j))
{ c[t]=*(a+i);i++;}
else
{ c[t]=*(b+j);j++;}
}

if(t<5)
for(;t<5;t++,i++)
c[t]=*(a+i);
else
if(t<8)
for(;t<8;t++,j++)
c[t]=*(b+j);

for(i=0;i<13;i++)
printf("%2d",c[i]);
}

...全文
25 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
boxban 2003-01-02
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

void coali(const int *a, int n, const int *b, int m, int c[]);

int main()
{
int a[5]={1,2,3,4,8},b[8]={1,2,3,4,5,6,7,8};
int c[100];

// clrscr();
coali(a, 5, b, 8, c);
for(int i=0;i<13;i++)
printf("%2d",c[i]);

return 0;
}


void coali(const int *a, int n, const int *b, int m, int c[])
{
int i,j,t=0;
for(i=0,j=0;i<n && j<m;t++)
{
if(a[i] <= b[j])
{ c[t]=a[i++];}
else
{ c[t]=b[j++];}
}

for(;i<n;i++)
c[t++]=a[i];
for(;j<m;j++)
c[t++]=b[j];
}
xilivivian 2003-01-02
  • 打赏
  • 举报
回复
#include<iostream.h>
void coali(int *a,int *b);
void main()
{
int a[5]={1,2,3,4,5},b[8]={1,2,3,4,5,6,7,8};
int *c=a,*d=b;
coali(c,b);
}


void coali(int *a,int *b)
{
int c[13];
int i,j,k=0;
while(i<13&&(j<5||k<8))
{if(*(a+j)<*(b+k))
{c[i]=*(a+j);j++;i++;}
else if(*(a+j)=*(b+k))
{c[i]=*(a+j);j++;i++;k++;}
else {c[i]=*(b+k);k++;i++;}}
for(i=0;i<13;i++)
cout<<c[i];
}


69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧