user-0 提问: 数据结构的直接插入和简单选择排序 编译时候出现问题 求助！！！

回复:
user: user-1
content: void InsertSort(ElemType a[],int n) { int i,j; ElemType temp; for(i=0;i<n-1;i++) { temp=[a+1]; [a+1]是什么？ j=i; while(j>-1 && temp.key<a[j].key) { a[j+1]=a[j]; j--; } a[j+1]=temp; } }   main() { int n=11; int k; printf("请输入元素"); for(k=0,k<n,k++)   for格式不对 scanf("%d",&a[k]); printf("简单选择排序为："); SelectSort(a[],11);  a[]应该是a，数组a又在哪里定义的呢？ printf("直接插入排序为："); InsertSort(a[],11);  a[]应该是a }

user: user-0
content: 改了之后变成这样   G:\sy14.cpp(37) : error C2059: syntax error : '[' G:\sy14.cpp(53) : error C2143: syntax error : missing ';' before ')' G:\sy14.cpp(53) : error C2143: syntax error : missing ';' before ')' G:\sy14.cpp(54) : error C2065: 'a' : undeclared identifier G:\sy14.cpp(54) : error C2109: subscript requires array or pointer type G:\sy14.cpp(54) : error C2102: '&' requires l-value G:\sy14.cpp(56) : error C2059: syntax error : ']' G:\sy14.cpp(58) : error C2059: syntax error : ']' G:\sy14.cpp(59) : warning C4508: 'main' : function should return a value; 'void' return type assumed 执行 cl.exe 时出错.   #include<stdio.h> #include<stdlib.h>  #define N 100 #define KeyType int   typedef struct { KeyType key; }ElemType;  void SelectSort(ElemType a[],int n) //待排序的n个元素放在数组a中 { int i,j,pos;//pos用来标识每一轮找到的最小关键字位置 ElemType temp; for (i=0;i<n-1;i++) { pos=1;//假定第i条记录为第i轮选择初始时的最小值 for(j=i+1;j<n;j++)//从第i+1条记录到n条记录间寻找关键字最小记录 if(a[j].key<a[pos].key) pos=j;//记住最小元素的下标值 if(pos!=i) { temp=a[i]; a[i]=a[pos]; a[pos]=temp; } } }  void InsertSort(ElemType a[],int n) { int i,j; ElemType temp; for(i=0;i<n-1;i++) { temp=[a+1]; j=i; while(j>-1 && temp.key<a[j].key) { a[j+1]=a[j]; j--; } a[j+1]=temp; } }  main() { int n=11; int k; printf("请输入元素"); for(k=0,k<n,k++) scanf("%d",&a[k]); printf("简单选择排序为："); SelectSort(a[],11); printf("直接插入排序为："); InsertSort(a[],11); }

user: user-2
content: 提示说的很明白啊  typedef struct { KeyType key;  //这里的KeyType是种什么类型，编译器不知道（是否遗漏了包含你的头文件） }ElemType ;  这里要有分号

user: user-0
content: G:\sy14.cpp(37) : error C2059: syntax error : '[' G:\sy14.cpp(53) : error C2143: syntax error : missing ';' before ')' G:\sy14.cpp(53) : error C2143: syntax error : missing ';' before ')' G:\sy14.cpp(54) : error C2065: 'a' : undeclared identifier G:\sy14.cpp(54) : error C2109: subscript requires array or pointer type G:\sy14.cpp(54) : error C2102: '&' requires l-value G:\sy14.cpp(56) : error C2059: syntax error : ']' G:\sy14.cpp(58) : error C2059: syntax error : ']' G:\sy14.cpp(59) : warning C4508: 'main' : function should return a value; 'void' return type assumed 执行 cl.exe 时出错.   #include<stdio.h> #include<stdlib.h>  #define N 100 #define KeyType int   typedef struct { 	KeyType key; }ElemType;  void SelectSort(ElemType a[],int n) //待排序的n个元素放在数组a中 { 	int i,j,pos;//pos用来标识每一轮找到的最小关键字位置 	ElemType temp; 	for (i=0;i<n-1;i++) 	{ 		pos=1;//假定第i条记录为第i轮选择初始时的最小值 		for(j=i+1;j<n;j++)//从第i+1条记录到n条记录间寻找关键字最小记录 			if(a[j].key<a[pos].key) 				pos=j;//记住最小元素的下标值 		if(pos!=i) 		{ 			temp=a[i]; 			a[i]=a[pos]; 			a[pos]=temp; 		} 	} }  void InsertSort(ElemType a[],int n) { 	int i,j; 	ElemType temp; 	for(i=0;i<n-1;i++) 	{ 		temp=[a+1]; 		j=i; 		while(j>-1 && temp.key<a[j].key) 		{ 			a[j+1]=a[j]; 			j--; 		} 		a[j+1]=temp; 	} }  main() { 	int n=11; 	int k; 	printf("请输入元素"); 	for(k=0,k<n,k++) 		scanf("%d",&a[k]); 	printf("简单选择排序为："); 	SelectSort(a[],11); 	printf("直接插入排序为："); 	InsertSort(a[],11); }

user: user-1
content: typedef struct { KeyType key; }ElemType ; 这里要有分号