君行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 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行