用记事本创建文件org.txt,往其中写入一组已排好序的整型数列,然后再由键盘输入一个整数,要求按原来排序的规律将它插入数列中,最后将数列仍写入文件org.txt中。
例如:原来整型数列为:3 6 9 11 56 70 100。
若输入65,则输出数列为:3 6 9 11 56 65 70 100。
方法越多越好,谢谢!
参考这里:https://ask.csdn.net/questions/7741049
第二个是我的答案
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{
int n,a[100],i,l=0;
FILE *fp;
if ((fp = fopen("org.txt", "r")) == NULL)
{
printf("cannot open file\n");
return -1;
}
while (fscanf(fp,"%d",&n)!=EOF)
{
a[l] = n;
printf("%d ",a[l]);
l++;
}
fclose(fp);
printf("\n");
scanf("%d", &n);
for (i = l; i > 0; i--)
{
if (a[i-1]<n)
break;
a[i] = a[i-1];
}
a[i] = n;
l++;
if ((fp = fopen("org.txt", "w")) == NULL)
{
printf("cannot open file\n");
return -1;
}
for (i = 0; i < l; i++)
{
printf("%d ", a[i]);
fprintf(fp,"%d ", a[i]);
}
fclose(fp);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
解答如下
#include <stdio.h>
#include <stdlib.h>
int t1[]={3,6,9,11,56,70,100};
void write(int len)
{
FILE *fp;
fp = fopen("org.txt","a+");
if(fp == NULL)
{
printf("error!");
return;
}
else
{
for(int i=0;i<len;i++)
{
printf("%d ",t1[i]);
fprintf(fp,"%d ",t1[i]);
}
fprintf(fp,"\n");
printf("\n");
}
}
int main()
{
int len=sizeof(t1)/sizeof(int);
write(len);
int n;
scanf("%d",&n);
t1[len]=n;
for(int i=0;i<len;i++)
{
for(int j=0;j<len-i;j++)
{
if(t1[j]>t1[j+1])
{
int tem=t1[j];
t1[j]=t1[j+1];
t1[j+1]=tem;
}
}
}
write(len+1);
return 0;
}