新手写的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);
}
可不可以帮忙更正一下程序,我还是不会改啊,我又看了几遍还是不知道问题出在哪。还有那个else的问题。
本回答被网友采纳