当前位置: 首页 > article >正文

每日一题——第九十四题

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

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

#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;
}

http://www.kler.cn/a/316864.html

相关文章:

  • quartz
  • uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用
  • 【专题】计算机网络之网络层
  • 时间管理的三个痛点
  • 3D绘制动态爱心Matlab
  • 重构代码之内联临时变量
  • pywinauto:Windows桌面应用自动化测试(十)
  • 成都睿明智科技有限公司怎么样?
  • 【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
  • Shader 中的光源
  • 民主测评系统可以解决哪些问题?
  • Typescript进阶:解锁Infer类型的使用
  • C++笔记---set和map
  • NLP--自然语言处理学习-day1
  • 《微信小程序实战(3) · 推广海报制作》
  • 文件系统(软硬链接 动静态库 动态库加载的过程)
  • C++学习笔记(32)
  • 在C#中使用NPOI将表格中的数据导入excel中
  • 工业交换机如何保证数据的访问安全
  • SkyWalking 简介
  • 深入理解Go语言中的并发封闭与for-select循环模式
  • 使用脚本自动化管理外部Git仓库依赖
  • 如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查
  • MySQL面试题——第一篇
  • 人工智能不是人工“制”能
  • FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据