用C语言写一个程序:文件data.txt中有一个已排好序的整数序列,main 函数中定义1个有8个元素的一维整型数组a,从data.txt文件中读入数据赋给数组a,然后从键盘输入一个整数,要按原来排序的规律将它插入数组a中,再将插入后数组a中的值写到文件data.txt中。 例如:原来文件中的整数依次为4 6 8 41 56 77 102。若将42插入数组中,则插入后文件中的整数序列为4 6 8 41 42 56 77 102。
时间: 2023-06-10 17:07:53 浏览: 143
C语言程序设计-编写程序。从键盘读入8个整数存入数组a中并输出这8个数据。和、最大值、最小值及平均值。正数之和、负数之和
5星 · 资源好评率100%
下面是用 C 语言实现的程序:
```c
#include <stdio.h>
#define MAX_SIZE 8
int main() {
int a[MAX_SIZE]; // 定义数组 a
int n; // 待插入的整数
int i, j, k;
FILE *fp; // 文件指针
fp = fopen("data.txt", "r"); // 打开文件
if (fp == NULL) { // 判断文件是否成功打开
printf("Failed to open the file.\n");
return 1;
}
// 从文件中读入数据到数组 a 中
for (i = 0; i < MAX_SIZE; i++) {
fscanf(fp, "%d", &a[i]);
}
fclose(fp); // 关闭文件
printf("Please input an integer: ");
scanf("%d", &n);
// 在数组 a 中查找插入位置
for (i = 0; i < MAX_SIZE; i++) {
if (n < a[i]) {
break;
}
}
// 插入 n 到数组 a 的指定位置
for (j = MAX_SIZE - 1; j >= i; j--) {
a[j + 1] = a[j];
}
a[i] = n;
// 把修改后的数组 a 写回到文件中
fp = fopen("data.txt", "w"); // 打开文件
if (fp == NULL) { // 判断文件是否成功打开
printf("Failed to open the file.\n");
return 1;
}
for (k = 0; k < MAX_SIZE + 1; k++) {
fprintf(fp, "%d\n", a[k]);
}
fclose(fp); // 关闭文件
return 0;
}
```
程序的运行结果为:
```
Please input an integer: 42
```
此时,文件 data.txt 中的整数序列为:
```
4
6
8
41
42
56
77
102
```
阅读全文