error C2143: 语法错误 : 缺少“;”(在“类型”的前面) error C2059: 语法错误:“else”

新手写的c语言关于把这几个单词按字典排序的程序。
我感觉自己逻辑上没问题,但是不知道自己语法错误怎么修改,
求大神指教。
#include<stdio.h>
int min1(int i,int k,int d,char a[][4]);
int min2(char a[][4],int i,int k);
int main()
{
int i,j,k,index;
char n;
char a[8][4]={{'P','A','B'},{'5','C'},{'P','A','B','C'},{'C','X','Y'},{'C','R','S','I'},{'B','8','9','9'},{'B','9'},{'7'}};
for (k=0;k<n-1;k++) //选择排序法,从小到大
{
index=k;
for (i=k+1;i<n;i++)
if (min2(a,i,index))
index=i;
for(j=0;j<4;j++)
{n=a[index][j];
a[index][j]=a[k][j];
a[k][j]=n;
}

for (i=0;i<8;i++)//输出
{
for (j=0;j<4;j++)
printf("%s",a[i][j]);
printf ("\n");
}
return 0;
}

int min1(int i,int k,int d,char a[][4])//字母和数字比大小
{
if(64<a[i][d]<133)//是字母
{
if(64<a[k][d]<133)
{if (a[i][d]<a[k][d])
return 1;
//else return 0;
}
else
return 1;
}
if(47<a[i][d]<58)
{
//if(64<a[k][d]<133)
// return 0;
if(47<a[k][d]<58)
{if (a[i][d]<a[k][d]) return 1;
//else return 0;
}
}
}
int min2(char a[][4],int i,int k)//数组比大小
{ int d;
for(d=0;d<4;d++)
{
if(a[i][d]!=a[k][d])
break; }
return min1(i,k,d,a);
}

第1个回答  2017-09-24
C语言编译时,如果出现了一条新的语句,但是上一语句又没有用分号结尾,就会报这个错误。比如,在C语言中,要求每种变量定义,必须为一个独立语句,如inta,b;charc;等。如果写作inta,b//注意这里少了一个分号。charc;在编译的时候就会报这个错误。不过,编译器给出的建议并不是绝对准确的,有时也会误报,具体如何修改,是否只是在前面一句结尾加上分号就可以,还需要根据代码上下文及其要达到的目的,进行具体分析。追问

可不可以帮忙更正一下程序,我还是不会改啊,我又看了几遍还是不知道问题出在哪。还有那个else的问题。

本回答被网友采纳