【问题描述】从键盘上输入10个数据(实数), 将数据排序后写到文件a.txt中,同时在屏幕上输出,要求输入输出与写入文件在主函数内完成,排序设计函数完成。该作业对文件可能没有自动测试,同学们可以自己完成后检查当前目录下 a.txt 文件是否存在并且文件中中的数据是否正确 【输入形式】输入10个实数 【输出形式】数据排序后写到文件a.txt中.然后再从文件中读出显示到屏幕上,实数均保留2位小数
时间: 2024-02-25 13:59:03 浏览: 77
以下是基于C语言的实现代码,实现了输入10个实数并进行排序,并将排序后的数据写入文件a.txt中,并从文件中读出数据并在屏幕上显示出来。请将以下代码保存为一个.c文件,使用C编译器进行编译运行即可。
```c
#include <stdio.h>
#include <stdlib.h>
#define NUM 10 // 定义数据个数
// 比较函数,用于qsort函数排序
int cmp(const void* a, const void* b){
return (*(float*)a > *(float*)b)? 1:-1;
}
int main()
{
float nums[NUM]; // 定义存放数据的数组
int i;
FILE *fp; // 定义文件指针
// 从键盘输入10个实数
printf("请输入10个实数:\n");
for(i=0; i<NUM; i++){
scanf("%f", &nums[i]);
}
// 对数据进行排序
qsort(nums, NUM, sizeof(float), cmp);
// 将排序后的数据写入文件a.txt中
if((fp=fopen("a.txt", "w")) == NULL){
printf("文件打开失败!\n");
exit(1);
}
for(i=0; i<NUM; i++){
fprintf(fp, "%.2f\n", nums[i]);
}
fclose(fp);
// 从文件中读出数据并显示在屏幕上
if((fp=fopen("a.txt", "r")) == NULL){
printf("文件打开失败!\n");
exit(1);
}
printf("排序后的数据为:\n");
for(i=0; i<NUM; i++){
fscanf(fp, "%f", &nums[i]);
printf("%.2f ", nums[i]);
}
printf("\n");
fclose(fp);
return 0;
}
```
运行结果:
```c
请输入10个实数:
3.5 1.2 6.7 8.9 4.1 0.2 5.8 9.4 2.3 7.6
排序后的数据为:
0.20 1.20 2.30 3.50 4.10 5.80 6.70 7.60 8.90 9.40
```
阅读全文