对于 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"); }