user-0 提问: 可以帮忙看一下嘛 救救孩子

回复:
user: user-0
content: 引用 3 楼 自信男孩的回复:[quote=引用 2 楼 qq_45855547 的回复:] [quote=引用 1 楼 自信男孩的回复:]#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <stddef.h>  void bubble(int a[],int n); int merge(int a[],int lena,int b[],int lenb,int c[]);  int main() {     int *c,n,lena,lenb,m;     int i;      lena=lenb=5;     m=10;     c=(int *)malloc(m * sizeof(int));     int a[5]={2,4,1,6,8};     bubble(a,lena);     printf("数组a的内容是：\n");      for(i = 0; i < 5; i++) {         if (i % 10==0)             printf("\n");         printf("%6d",a[i]);     }     printf("\n");     int b[5]={9,7,3,0,5};      bubble(b,lenb);     printf("数组b的内容是：\n");     for(i = 0; i < 5; i++) {         if (i % 10 == 0)             printf("\n");         printf("%6d", b[i]);     }     printf("\n");      n = merge(a,lena,b,lenb,c);     printf("数组c的内容是：\n");     //for(i = 0; i < 5; i++)     for(i = 0; i < n; i++)     {         if (i%10==0)             printf("\n");         printf("%6d",c[i]);     }     printf("\n");     printf("数组c的长度为%d\n",n); } void bubble(int a[],int n) {     //bool flag=true;     int i,t;     while (n>1) //&& flag)     {         //flag=false;         for (i=0; i<n-1; i++)         {             if (a[i]>a[i+1])             {                 t=a[i];                 a[i]=a[i+1];                 a[i+1]=t;                 //flag=true;             }         }         n--;     } }  int merge(int a[],int lena,int b[],int lenb,int c[]) {      int i=0,j=0, k = 0;     while (i<lena && j<lenb)     {         if (a[i] < b[j])             c[k++] = a[i++];         else             c[k++] = b[j++];      }     while (i < lena)         c[k++] = a[i++];     while (j < lenb)         c[k++] = b[j++];      /*     if (a[i])         c[i++]=a[i++];     if (b[j])         c[i++]=b[j++];     */     return k ; } 供参考～ 那为什么我一开始数组a输进去就是错的鸭[/quote]  你没注意到你的冒泡排序越界了吗？ for (i=0; i<n-1; i++) 等你看完了你的代码和修改之后的代码，然后找一下自己的问题～  for (i=0; i<n; i++) 这是你的代码～[/quote] 没发现耶 我太蔡了qqq 谢谢谢谢宁

user: user-1
content: 引用 2 楼 qq_45855547 的回复:[quote=引用 1 楼 自信男孩的回复:]#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <stddef.h>  void bubble(int a[],int n); int merge(int a[],int lena,int b[],int lenb,int c[]);  int main() {     int *c,n,lena,lenb,m;     int i;      lena=lenb=5;     m=10;     c=(int *)malloc(m * sizeof(int));     int a[5]={2,4,1,6,8};     bubble(a,lena);     printf("数组a的内容是：\n");      for(i = 0; i < 5; i++) {         if (i % 10==0)             printf("\n");         printf("%6d",a[i]);     }     printf("\n");     int b[5]={9,7,3,0,5};      bubble(b,lenb);     printf("数组b的内容是：\n");     for(i = 0; i < 5; i++) {         if (i % 10 == 0)             printf("\n");         printf("%6d", b[i]);     }     printf("\n");      n = merge(a,lena,b,lenb,c);     printf("数组c的内容是：\n");     //for(i = 0; i < 5; i++)     for(i = 0; i < n; i++)     {         if (i%10==0)             printf("\n");         printf("%6d",c[i]);     }     printf("\n");     printf("数组c的长度为%d\n",n); } void bubble(int a[],int n) {     //bool flag=true;     int i,t;     while (n>1) //&& flag)     {         //flag=false;         for (i=0; i<n-1; i++)         {             if (a[i]>a[i+1])             {                 t=a[i];                 a[i]=a[i+1];                 a[i+1]=t;                 //flag=true;             }         }         n--;     } }  int merge(int a[],int lena,int b[],int lenb,int c[]) {      int i=0,j=0, k = 0;     while (i<lena && j<lenb)     {         if (a[i] < b[j])             c[k++] = a[i++];         else             c[k++] = b[j++];      }     while (i < lena)         c[k++] = a[i++];     while (j < lenb)         c[k++] = b[j++];      /*     if (a[i])         c[i++]=a[i++];     if (b[j])         c[i++]=b[j++];     */     return k ; } 供参考～ 那为什么我一开始数组a输进去就是错的鸭[/quote]  你没注意到你的冒泡排序越界了吗？ for (i=0; i<n-1; i++) 等你看完了你的代码和修改之后的代码，然后找一下自己的问题～  for (i=0; i<n; i++) 这是你的代码～

user: user-0
content: 引用 1 楼 自信男孩的回复:#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <stddef.h>  void bubble(int a[],int n); int merge(int a[],int lena,int b[],int lenb,int c[]);  int main() {     int *c,n,lena,lenb,m;     int i;      lena=lenb=5;     m=10;     c=(int *)malloc(m * sizeof(int));     int a[5]={2,4,1,6,8};     bubble(a,lena);     printf("数组a的内容是：\n");      for(i = 0; i < 5; i++) {         if (i % 10==0)             printf("\n");         printf("%6d",a[i]);     }     printf("\n");     int b[5]={9,7,3,0,5};      bubble(b,lenb);     printf("数组b的内容是：\n");     for(i = 0; i < 5; i++) {         if (i % 10 == 0)             printf("\n");         printf("%6d", b[i]);     }     printf("\n");      n = merge(a,lena,b,lenb,c);     printf("数组c的内容是：\n");     //for(i = 0; i < 5; i++)     for(i = 0; i < n; i++)     {         if (i%10==0)             printf("\n");         printf("%6d",c[i]);     }     printf("\n");     printf("数组c的长度为%d\n",n); } void bubble(int a[],int n) {     //bool flag=true;     int i,t;     while (n>1) //&& flag)     {         //flag=false;         for (i=0; i<n-1; i++)         {             if (a[i]>a[i+1])             {                 t=a[i];                 a[i]=a[i+1];                 a[i+1]=t;                 //flag=true;             }         }         n--;     } }  int merge(int a[],int lena,int b[],int lenb,int c[]) {      int i=0,j=0, k = 0;     while (i<lena && j<lenb)     {         if (a[i] < b[j])             c[k++] = a[i++];         else             c[k++] = b[j++];      }     while (i < lena)         c[k++] = a[i++];     while (j < lenb)         c[k++] = b[j++];      /*     if (a[i])         c[i++]=a[i++];     if (b[j])         c[i++]=b[j++];     */     return k ; } 供参考～ 那为什么我一开始数组a输进去就是错的鸭

user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <stddef.h>  void bubble(int a[],int n); int merge(int a[],int lena,int b[],int lenb,int c[]);  int main() {     int *c,n,lena,lenb,m;     int i;      lena=lenb=5;     m=10;     c=(int *)malloc(m * sizeof(int));     int a[5]={2,4,1,6,8};     bubble(a,lena);     printf("数组a的内容是：\n");      for(i = 0; i < 5; i++) {         if (i % 10==0)             printf("\n");         printf("%6d",a[i]);     }     printf("\n");     int b[5]={9,7,3,0,5};      bubble(b,lenb);     printf("数组b的内容是：\n");     for(i = 0; i < 5; i++) {         if (i % 10 == 0)             printf("\n");         printf("%6d", b[i]);     }     printf("\n");      n = merge(a,lena,b,lenb,c);     printf("数组c的内容是：\n");     //for(i = 0; i < 5; i++)     for(i = 0; i < n; i++)     {         if (i%10==0)             printf("\n");         printf("%6d",c[i]);     }     printf("\n");     printf("数组c的长度为%d\n",n); } void bubble(int a[],int n) {     //bool flag=true;     int i,t;     while (n>1) //&& flag)     {         //flag=false;         for (i=0; i<n-1; i++)         {             if (a[i]>a[i+1])             {                 t=a[i];                 a[i]=a[i+1];                 a[i+1]=t;                 //flag=true;             }         }         n--;     } }  int merge(int a[],int lena,int b[],int lenb,int c[]) {      int i=0,j=0, k = 0;     while (i<lena && j<lenb)     {         if (a[i] < b[j])             c[k++] = a[i++];         else             c[k++] = b[j++];      }     while (i < lena)         c[k++] = a[i++];     while (j < lenb)         c[k++] = b[j++];      /*     if (a[i])         c[i++]=a[i++];     if (b[j])         c[i++]=b[j++];     */     return k ; } 供参考～