每日一题——第九十四题

互联网打工人no1 2024-09-20 15:31:03 阅读 63

// SortNumInFile.cpp : 此文件包含 “main” 函数。程序执行将在此处开始并结束。

//

题目:将一个文本文件number.txt中的数字按照从小到大排列后,重新写入到该文件中,要求排序前和排序后都输出该文件的内容。该文件中共有20个整数,每个整数占一行。

<code>#include<stdio.h>

#include<stdlib.h>

void bubbleSort(int arr[], int length);

void swap(int* a, int* b);

int main() { -- -->

FILE* file = fopen("number.txt", "r");

if (file == NULL) {

perror("文件number.txt打开失败!");

return EXIT_FAILURE;

}

int numbers[20];

int count = 0;

//读取文件的所有整数

while (fscanf(file, "%d", &numbers[count]) != EOF && count < 20) {

count++;

}

//输出排序前的文件内容

printf("排序前的内容为:\n");

for (int i = 0; i < count; i++)

{

printf("%d\n", numbers[i]);

}

fclose(file);//先关闭文件,因为即将要重写它

bubbleSort(numbers, count);

file = fopen("number.txt", "w");//以写的方式打开

if (file == NULL) {

perror("文件打开写入失败");

return EXIT_FAILURE;

}

//将排序后的数据写回文件,一行一个数字

for (int i = 0; i < count; i++)

{

fprintf(file, "%d\n", numbers[i]);

}

fclose(file);//关闭文件

//再重新打开文件读取内容

file = fopen("number.txt", "r");

if (file == NULL) {

perror("文件打开读取失败");

return EXIT_FAILURE;

}

//输出排序后的文件内容

printf("排序后的内容为:\n");

for (int i = 0; i < count; i++)

{

printf("%d\n", numbers[i]);

}

fclose(file);//读取完成后,再关闭文件

return 0;

}

void bubbleSort(int arr[], int length) {

for (int i = 0; i < length - 1; i++)

{

for (int j = 0; j < length - (i + 1); j++) {

if (arr[j] > arr[j + 1]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

void bubbleSort(int arr[], int length) {

for (int i = 0; i < length - 1; i++)

{

for (int j = 0; j < length - (i + 1); j++) {

if (arr[j] > arr[j + 1]) {

swap(&arr[j], &arr[j + 1]);

}

}

}

}

void swap(int* a, int* b){

int temp = *a;

*a = *b;

*b = temp;

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。