对于 C语言子函数语法错误
我对主函数传入数组地址到子函数;用指针数组排序;
然后输出!
但是在排序中报错,for前有语法错误,我怎么都搞不懂!
程序代码:#include "stdio.h"
#include "stdlib.h"
//dot1:
int main()
{
int i,l,wl,z,a[100]; //内存浪费了。。。
// system("title ") ;
int aput(int a[100]); //子函数声明
int aput(int a[100]);
printf("请问你要输入多少个代表官职的数据:\n");
scanf("%d",&l);
for(i=0;i<l;i++)
{
printf("那么请输入第 %d 个代表官职的数据:",i+1); //由于I从0开始
scanf("%d",&a[i]);
}
exchange1(&a); //引用比较算法排序
aput(a);
printf("\n请问你有几个王者,我将对王者排位:\n");
scanf("%d",&wl);
if(l+wl>=100)
{
printf ("亲:抱歉数据总个数大于一百,无法排位。\n");return 0;
/* printf ("************************\n");
printf("\t重新运行")
printf("************************\n");
goto dot1;*/
}
for(i=0;i<wl;i++)
{
printf("请输入第%d个王者的官职数据:\n",i+1);
scanf("%d",&a[l+i+1]);
}
exchange1(&a);
aput(a);
}
exchange1(int *a[100]) //子函数-比较算法排序
int i,f,j;
for(i=0;a[i]!='\0';i++)
{
f=i;
for(j=i+1;a[j]!='\0';j++)
{
if(a[f]>a[j])
{
f=j;
}
}
if(f!=i)
{
*a[f]=*a[i]+*a[f];
*a[i]=*a[f]-*a[i];
*a[f]=*a[f]-*a[i];
}
}
int aput(int a[100]) //子函数--a数组输出
{
int i;
printf("排序后:\n")
for(i=0;a[i]!='\0';i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
[此贴子已经被作者于2015-11-29 16:38编辑过]
程序代码:
#include <stdio.h>
#include <stdlib.h>
//函数的声明最好放在这里
void aput(int * a); //int aput(int a[100]); //子函数声明 //这里的int a[100]没啥意义
void exchange1(int * a); //exchange1(&a); //引用比较算法排序 //这里也声明的完全不对
int main()
{
int i,l,wl,z,a[100]; //内存浪费了。。。
// system("title ") ;
//int aput(int a[100]); //子函数声明
//int aput(int a[100]);
printf("请问你要输入多少个代表官职的数据:\n");
scanf("%d",&l);
for(i=0;i<l;i++)
{
printf("那么请输入第 %d 个代表官职的数据:",i+1); //由于I从0开始
scanf("%d",&a[i]);
}
//exchange1(&a); //引用比较算法排序
aput(a);
printf("\n请问你有几个王者,我将对王者排位:\n");
scanf("%d",&wl);
if(l+wl>=100)
{
printf ("亲:抱歉数据总个数大于一百,无法排位。\n");return 0;
/* printf ("************************\n");
printf("\t重新运行")
printf("************************\n");
goto dot1;*/
}
for(i=0;i<wl;i++)
{
printf("请输入第%d个王者的官职数据:\n",i+1);
scanf("%d",&a[l+i+1]);
}
exchange1(a);
aput(a);
}
void exchange1(int *a) //子函数-比较算法排序
{
int i,f,j;
for(i=0;a[i]!='\0';i++) //这里用 '\0 ' 来判断结束 风马牛不相及的东西
{
f=i;
for(j=i+1;a[j]!='\0';j++) //这里用 '\0 ' 来判断结束 风马牛不相及的东西
{
if(a[f]>a[j])
{
f=j;
}
}
if(f!=i)
{
a[f]=a[i]+a[f]; //以下三行代码寻址方式不正确
a[i]=a[f]-a[i];
a[f]=a[f]-a[i];
}
}
}
void aput(int * a) //子函数--a数组输出
{
int i;
printf("排序后:\n"); //这里缺少分号
for(i=0;a[i]!='\0';i++)
{
printf("%d\t",a[i]);
}
printf("\n");
}
