君行z 2022-02-26 21:24 采纳率: 75%
浏览 21
已结题

程序阅读题中的一个问题

这是C语言程序基础中的一道试题,在这段程序中 Fsort 函数是一个是什么逻辑,我尝试阅读但是没有读懂。我自己的理解是对字符串进行排序,我预想的结果应该是”Basic,c++,Fortan,Java,pascal“,但是结果却是”Basic,Fortan,Java,C++,pascal“,请问这是为什么。

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

void Fsort(char* name[], int n);
void Fprintf(char* name[], int n);

void main() {



    char* name[] = { "Basic","Fortan","c++","Java","pascal" };

    int n = 5;

    Fsort(name, n);
    Fprintf(name, n);
}           
void Fsort(char* name[], int n) {

    char* temp;
    int i, j, k;
    for (i = 0; i < n - 1; i++) {

        k = i;
        for (j = i + 1; j < n; j++) 
            if (strcmp(name[k], name[j]) > 0) k = j;

            if (k != i) {

                temp = name[i];
                name[i] = name[k];
                name[k] = temp;
            }
        
    }
}

void Fprintf(char* name[], int n) {

    int i;

    for (i = 0; i < n; i++) {


        puts(name[i]);

    }

}



  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-02-26 22:46
    关注

    Fsort 函数是实现字符串排序功能,你的理解没错,你预想的结果应该是”Basic,C++,Fortan,Java,pascal“ 也没错。代码运行的结果和预想结果不同,原因是第12行代码里的那串字符串数组里 c++ 这里的 c 是小写的,而你预想的 C++ 的 C 是大写的,而字符串比较过程中,小写字符 > 大写字符,pascal 也是小写的,所以才有了这个结果:”Basic,Fortan,Java,c++,pascal“ 。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日

悬赏问题

  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答