字符串按字母顺序从大到小输出

#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]);
}

img

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]);
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

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]);
}

  • 出现了中文分号
  • 个人觉得把函数声明写main函数里面不是一个好的代码习惯,应该写main函数前头,或者整个函数的实现都写在main前面
  • 提问的时候请使用代码块粘贴代码
  • 建议不要使用devc这种老旧编译器,它的报错一点都不详细,你看VS一下就告诉你问题在哪里了

img