C语言【问题描述】从键盘上输入10个数据(实数), 将数据排序后写到文件a.txt中,同时在屏幕上输出,要求输入输出与写入文件在主函数内完成,排序设计函数完成。该作业对文件可能没有自动测试,同学们可以自己完成后检查当前目录下 a.txt 文件是否存在并且文件中中的数据是否正确 【输入形式】输入10个实数 【输出形式】数据排序后写到文件a.txt中.然后再从文件中读出显示到屏幕上,实数均保留2位小数 【样例输入】 34 5 7 18 9 6 13 8 11 10 【样例输出】 5.00 6.00 7.00 8.00 9.00 10.00 11.00 13.00 18.00 34.00 【样例说明】 在当前目录下存在文件a.txt,其中文件内容为: 5.00 6.00 7.00 8.00 9.00 10.00 11.00 13.00 18.00 34.00
时间: 2024-02-19 15:57:48 浏览: 70
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
void sortAndWriteToFile(double arr[], int n, char *filename) {
int i, j;
double temp;
FILE *fout = fopen(filename, "w");
if (fout == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for (i = 0; i < n; i++) {
fprintf(fout, "%.2f ", arr[i]);
printf("%.2f ", arr[i]);
}
fclose(fout);
}
void readAndPrintFromFile(char *filename) {
double x;
FILE *fin = fopen(filename, "r");
if (fin == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
printf("\n从文件中读取的结果为:");
while (fscanf(fin, "%lf", &x) != EOF) {
printf("%.2f ", x);
}
fclose(fin);
}
int main() {
double arr[10];
int i;
printf("请输入10个实数:");
for (i = 0; i < 10; i++) {
scanf("%lf", &arr[i]);
}
sortAndWriteToFile(arr, 10, "a.txt");
readAndPrintFromFile("a.txt");
printf("\n");
return 0;
}
```
在 `sortAndWriteToFile` 函数中,使用冒泡排序对输入的数组进行排序,并将结果写入文件中。在写入文件时,使用 `fprintf` 函数输出实数,保留小数点后两位。同时,将排序后的结果也输出到屏幕上。
在 `readAndPrintFromFile` 函数中,先使用 `fopen` 函数打开文件,然后循环读取文件中的每个实数,同时将其输出到屏幕上。
在 `main` 函数中,先输入 10 个实数,然后调用 `sortAndWriteToFile` 函数将结果写入文件,并调用 `readAndPrintFromFile` 函数将结果从文件中读取并输出到屏幕上。
阅读全文