#include<stdio.h>
#include<string.h>
int main()
{
void sort(char *name[],int n);
void print(char *name[],int n);
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
sort(name,5);
print(name,5);
return 0;
}
void sort(char *name[],int n)
{
int i,j,k;
char *temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[j],name[k]<0)) k=j;
if(k!=i)
{
temp=name[k];name[k]=name[i];name[i]=temp;
}
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<5;i++)
printf("%s\n",name[i]);
}
void print(char *name[], int n) 之后;号写成了中文全角的,要改成英文半角的。
if (strcmp(name[j], name[k]) < 0) //< 0要在strcmp的()外
你题目的解答代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
void sort(char *name[], int n);
void print(char *name[], int n); //之后;号写成了中文全角的,要改成英文半角的。
char *name[] = {"Follow me", "BASIC", "Great Wall", "FORTRAN", "Computer design"};
sort(name, 5);
print(name, 5);
return 0;
}
void sort(char *name[], int n)
{
int i, j, k;
char *temp;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
if (strcmp(name[j], name[k]) < 0) //< 0要在strcmp的()外
k = j;
if (k != i)
{
temp = name[k];
name[k] = name[i];
name[i] = temp;
}
}
}
void print(char *name[], int n)
{
int i;
for (i = 0; i < 5; i++)
printf("%s\n", name[i]);
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
if(strcmp(name[j],name[k])<0) k=j; 这行的括号错乱了
修改如下:
#include<stdio.h>
#include<string.h>
int main()
{
void sort(char *name[],int n);
void print(char *name[],int n);
char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer design"};
sort(name,5);
print(name,5);
return 0;
}
void sort(char *name[],int n)
{
int i,j,k;
char *temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[j],name[k])<0) k=j;
if(k!=i)
{
temp=name[k];name[k]=name[i];name[i]=temp;
}
}
}
void print(char *name[],int n)
{
int i;
for(i=0;i<5;i++)
printf("%s\n",name[i]);
}