Bone丶 2021-11-18 15:22 采纳率: 45.5%
浏览 114
已结题

使用vim进行文本编辑、保存并退出

任务描述
1)读取文件“sort.txt”,文件第一行是十个数字“65,43,79,21,298,12,3,54,44,1”;
2)对读取的“sort.txt”中的十个数字使用冒泡排序进行排序
3)将排序结果写到“result.txt”目录下。

用ubantu完成

  • 写回答

4条回答 默认 最新

  • 广大菜鸟 2021-11-18 16:40
    关注
    
    #include <stdio.h>
    #include<stdlib.h>
    #define swap(a, b) \
        {              \
            a ^= b;    \
            b ^= a;    \
            a ^= b;    \
        }
    void bubbleSort(int *array, int n)
    {
        int i, j, flag;
        for (i = 0; i < n - 1; i++)
        {
            flag = 0;
            for (j = n - 1; j > i; j--)
            {
                if (array[j - 1] > array[j])
                {
                    swap(array[j - 1], array[j]);
                    flag = 1;
                }
            }
            if (flag == 0)
                break;
        }
    }
    int main()
    {
        FILE *from_fd,*to_fd;
        char *filename = "./sort.txt", *filename1="./result.txt";
        from_fd = fopen(filename, "r+");
        to_fd = fopen(filename1, "w+");
        if (from_fd == NULL)
        {
            printf("open source  file failed!\n");
            return -1;
        }
        if (to_fd == NULL)
        {
            printf("open source  file failed!\n");
            return -1;
        }
        int Array[10];
        int i;
        for(i=0;i<10;i++){
            fscanf(from_fd,"%d",&Array[i]);       
        }
        printf("\n");
        bubbleSort(Array,sizeof(Array)/sizeof(int));
        for(i=0;i<10;i++){
            fprintf(to_fd,"%d ",Array[i]);
        }    
        close(to_fd);
        close(from_fd);
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
  • ---逆渡默行--- 2021-11-18 16:09
    关注

    vim 能用冒泡排序?

    评论
  • 净夜凡尘 2021-11-18 16:40
    关注

    C 不太熟悉,用python 写出来了,可以看一下

    #! /usr/bin/env python3
    # _*_ coding: utf8 _*_
    
    def bubbleSort(nums):
        for i in range(len(nums) - 1):
            for j in range(len(nums) - i - 1):
                if nums[j] > nums[j + 1]:
                    nums[j], nums[j + 1] = nums[j + 1], nums[j]
        return nums
    
    
    def bubbleSort_file(red_file, write_file):
        # 读取文件
        with open(red_file, 'r') as f1:
            data = [int(i) for i in f1.read().split(',')]
    
        # 进行冒泡排序
        str_data = [str(i) for i in bubbleSort(data)]
    
        # 写入文件
        with open(write_file, 'w') as f2:
            f2.write(','.join(str_data))
    
    
    if __name__ == '__main__':
        bubbleSort_file('sort.txt', 'result.txt')
    
    评论
  • 恒悦sunsite 运维领域新星创作者 2021-11-18 16:50
    关注

    1、创建sort.txt文件
    #ubuntu@vanfonuat:/scritps$ vim sort.txt
    插入如下内容:
    65,43,79,21,298,12,3,54,44,1
    2、编写脚本px.sh
    ubuntu@vanfonuat:
    /scritps$ cat px.sh
    #!/bin/bash
    #author:Bone

    curdir=`cd -P $(dirname $0); pwd`
    cd $curdir

    cp sort.txt bak.txt
    sed -i 's/,/ /g' bak.txt
    bstr=`cat bak.txt`
    echo "$bstr"
    score=($bstr)
    #外层为轮
    for ((i=1;i<${#score[@]};i++));do
    #内层为次
    for ((j=0;j<${#score[@]}-i;j++));do
    #两两交换
    if [ ${score[$j]} -gt ${score[((j+1))]} ] ;then #j为下标 第二个就是j+1
    tmp=${score[((j+1))]} #这边就是赋值
    score[((j+1))]=${score[$j]}
    score[$j]=$tmp
    fi
    done
    done
    echo ${score[@]}
    3、Ubuntu下执行测试

    img

    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月19日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 Google Chrome 所有页面崩溃,三种解决方案都没有解决,我崩溃了
  • ¥18 如何用c++编写数学规律题
  • ¥20 使用uni-app发起网络请求,获取重定向302返回的cookie
  • ¥20 手机外部浏览器拉起微信小程序支付 (相关搜索:微信小程序)
  • ¥20 怎样通过一个网址找到其他同样模版的网址
  • ¥30 XIAO esp32c3 读取FDC2214的数据
  • ¥15 在工控机(Ubuntu系统)上外接USB蓝牙硬件进行蓝牙通信
  • ¥15 关于PROCEDURE和FUNCTION的问题
  • ¥100 webapi的部署(标签-服务器)
  • ¥20 怎么加快手机软件内部计时的时间(关键词-日期时间)