Crush_Y_X 2022-05-02 16:58 采纳率: 66.7%
浏览 32
已结题

C语言指针数组应用求解

我采用了冒泡排序为什么只能交换邻近的两组数组,各位能帮我看看吗。
编写一个函数,利用指针将输入的多个字符串按长度升序排序

void StrSort(char *p[N],int n)

【输入形式】

循环输入四个字符串。每输入完一个按回车。

【输出形式】

输出排序后的四个字符串。
【样例输入】

HU

KOBE

BRYANT

CCZU
【样例输出】

HU

KOBE

CCZU

BRYANT

#include <stdio.h>
#include <string.h>

#define N 4
void StrSort(char *p[N],int n)
{
    int num[4],i,j ;
    char t[100];
    for(i = 0; i< 4 ; i++)
    {
        num[i] = strlen(p[i]);    
    } 
    for(i = 0 ; i<3;i++)
    {
        for(j = 0 ; j<3-i ;j++)
        {
            if(num[j] >num[j+1] )
            {
                strcpy(t , p[j]);
                strcpy(p[j] , p[j+1]);
                strcpy(p[j+1] , t);
            }
        }
    }
    
}

int main(void)
{
    
    char a[100], b[100] ,c[100], d[100];
    char *str[4] = {a,b,c,d};
    int i;
    
    for( i = 0 ; i < 4; i++) gets(str[i]);
    putchar('\n');
    StrSort(str, 0);
    
    for( i= 0 ; i<4 ; i++)
    {
        puts(str[i]);
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-05-02 17:42
    关注

    给你改了一下,你看排序那里就懂了

    img

    #pragma warning(disable:4996)
    #include <stdio.h>
    #include <string.h>
    
    #define N 4
    void StrSort(char* p[N], int n)
    {
        int num[4], i, j,temp;
        char t[100];
        for (i = 0; i < 4; i++)
        {
            num[i] = strlen(p[i]);
        }
        for (i = 0; i < 3; i++)
        {
            for (j = 0; j < 3 - i; j++)
            {
                if (num[j] > num[j + 1])
                {
                    strcpy(t, p[j]);
                    strcpy(p[j], p[j + 1]);
                    strcpy(p[j + 1], t);
                    temp = num[j];
                    num[j] = num[j+1];
                    num[j+1] = temp;
                }
            }
        }
    
    }
    
    int main(void)
    {
    
        char a[100], b[100], c[100], d[100];
        char* str[4] = { a,b,c,d };
        int i;
    
        for (i = 0; i < 4; i++) gets(str[i]);
        putchar('\n');
        StrSort(str, 0);
    
        for (i = 0; i < 4; i++)
        {
            puts(str[i]);
        }
        return 0;
    }
    
    
    

    望采纳,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月3日
  • 已采纳回答 5月2日
  • 创建了问题 5月2日

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证