7-1 字符串排序

7-1 字符串排序

输入n个字符串(n<=10,每个字符串长度均小于20),按照从小到大的顺序输出这些字符串。

输入格式:

第一行输入一个整数n;接下来的n行输入n个字符串。

输出格式:

输出n个字符串,每行1个串。

输入样例:

在这里给出一组输入。例如:

5
China
Mongolia
Korea
Japan
Philippines

输出样例:

在这里给出相应的输出。例如:

China
Japan
Korea
Mongolia
Philippines

个人思路:

题目要求输入n个字符串,首先我们需要输入一个n的值 ,但是如何输入n的字符串呢?

输入一个字符串可以写成char s[]这里表示输一个字符串,s[]在这里确实就是一个指针,s[]就是一个指向字符串s的首个数组的地址,那如果是n个字符串就可以写成:s[n][20]这样来表示,后面写20是因为题目说明了字符串不会超过20.

#include
int main()
{
    int n;
    scanf("%d\n",&n);
    char s[n][20];
  
}

然后在输入每一个字符串下面是错误示范:

#include
int main()
{
    int n;
    scanf("%d\n",&n);
    char s[n][20];
    for(int i=0;i

在C语言中,二维字符数组s[n][20]表示一个包含n个字符串的数组,每个字符串的最大长度为20。当我们使用s[i]时,它表示第i个字符串,而s[i]本身就是一个指向该字符串的指针。

因此,在gets(s[i]);语句中,我们应该使用s[i],而不是s[i][20]。因为s[i]本身就是一个指向字符串的指针,gets;会将输入的字符串存储到s[i]指向的位置。

所以,gets语句应该是gets(s[i]);而不是gets(s[i][20]);

#include
#include
int main()
{
    int n;
    scanf("%d\n",&n);
    char s[n][20];
    for(int i=0;i

成功存取全部字符串以后就可以用数组来比较他们之间的大小了,字符串之间的比较这里直接用c语言里的一个库函数strcmp,这里需要引入头文件:string.h

strcmp(s1, s2); 如果s1=s2那么就返回0,如果s1大返回1,s2大就返回-1。

下面我采用的是冒泡排序

   完整代码:

#include
#include
int main()
{
    int n;
    scanf("%d\n",&n);
    char s[n][20];
    for(int i=0;i0)
            {
                char t[20];
                strcpy(t,s[j]);
                strcpy(s[j],s[j+1]);
                strcpy(s[j+1],t);
                
                
            }
        }
    }
    for(int i=0;i

你可能感兴趣的:(c语言)