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

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

问题描述:

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

用ubantu完成


#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

vim 能用冒泡排序?

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')

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