回 帖 发 新 帖 刷新版面

主题:函数的使用

[b][/b][b]
[size=6][size=5]题目就是归并两个数组,并排序,必须用函数

//归并函数
#include <stdio.h>
int  guibing(int a[10],int b[10])

      int i,j,k,c[10];
    
     for(i=0,j=0,k=0;i<10,j<10,k<10;)
         if(a[i]>b[j])
         { c[k++]=a[i];
         i++;}
         else {c[k++]=b[j];
         j++;}

        int paixu(c,10);
}

//排序函数
int paixu(int c[],int n)
{
    int i,temp,j;
    for(i=0;i<n;i++)
    scanf("%d",&c[i]);
for(i=0;i<n;i++)
printf("%4d",c[i]);
printf("\n");
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
        if(c[j]>c[j+1])
        {temp=c[j];
        c[j]=c[j+1];
        c[j+1]=temp;
        }
    
for(i=0;i<10;i++)
              printf("%4d",c[i]);
              printf("\n");
}
//主调函数
void main()
{
int a[10],b[10],c[10],i,j,k;
  printf("请输入两串按降序排列的数:\n");
for(i=0;i<10;i++)
    scanf("%d",&a[i]);
for(i=0;i<10;i++)
    printf("%3d",a[i]);
printf("\n");
for(i=0;i<10;i++)
    scanf("%d",&b[i]);
for(i=0;i<10;i++)
    printf("%3d",b[i]);
     printf("\n");
guibing(a,b);

}
程序运行以后显示有一个错误,就是在paixu(c,10)那里显示"too many initializers"是什么意思啊?该怎么该呀?[/size][/size][/b]

回复列表 (共2个回复)

沙发

首先,你在这里int paixu(c,10);是要调用paixu这个函数,但是这时候paixu这个函数还没声明,结果你就把声明和调用写混了。
正确的做法是在guibing()开头的地方写上int paixu(int[],int);,然后把你调用函数时候前面那个int去掉
其次,你的int paixu()和int guibing()没有返回值,为什么还要写int呢?如果你是想保持返回一个状态值的代码习惯,那么至少return一个标志变量比如1作为函数调用成功的标志,否则的话,使用void即可。main根据标准是不能void的,如果要返回只能写int,其默认返回值为0

板凳

谢谢!修改以后可以运行啦!我概念好混乱的~

我来回复

您尚未登录,请登录后再回复。点此登录或注册