c语言如何用文件存储数据
#include<stdio.h>#include<math.h>#include<conio.h>#include<stdlib.h>#include<iostream...
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include<iostream>
#include<string.h>
struct test
{
int num;
float s;
};
void main()
{
FILE *fp;
int i,j,k,bad,good;
double ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n");
for(i=0;i<10;i++)
{data[i].num=i+1;
scanf("%f",&data[i].s);
/*分数的输入部分*/
if(data[0].s==0) exit(0);
}
for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]<tm[j])
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/
}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8;
/*计算平均值的部分*/
printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");
(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
min=fabs(p[5]->s-aver);
good=5;
/*暂定第六个为最公平裁判*/
for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/
for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/
printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*打印出最不公平裁判和其分数*/
printf("The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*打印出最公平裁判和其分数*/
printf("\n----------------------------------\n");
printf("Next one:"); /*打印出下一位*/
}while(1);
}
请在以上程序中修改 使其10个分数和最终结果能存在一个文件中。 展开
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include<iostream>
#include<string.h>
struct test
{
int num;
float s;
};
void main()
{
FILE *fp;
int i,j,k,bad,good;
double ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n");
for(i=0;i<10;i++)
{data[i].num=i+1;
scanf("%f",&data[i].s);
/*分数的输入部分*/
if(data[0].s==0) exit(0);
}
for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]<tm[j])
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/
}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8;
/*计算平均值的部分*/
printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");
(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
min=fabs(p[5]->s-aver);
good=5;
/*暂定第六个为最公平裁判*/
for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/
for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/
printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*打印出最不公平裁判和其分数*/
printf("The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*打印出最公平裁判和其分数*/
printf("\n----------------------------------\n");
printf("Next one:"); /*打印出下一位*/
}while(1);
}
请在以上程序中修改 使其10个分数和最终结果能存在一个文件中。 展开
7个回答
展开全部
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用文件操作函数即可用文件储存数据。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:
#include<stdio.h>
int a;
char b,c[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
return 0;
}
fscanf(fp1,"%d",&a);//从输入文件读取一个整数
b=fgetc(fp1);//从输入文件读取一个字符
fgets(c,100,fp1);//从输入文件读取一行字符串
printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
fputs(c,fp2);//向输出文件写入一行字符串
fputc(b,fp2);//向输出文件写入一个字符
fprintf(fp2,"%d",a);//向输出文件写入一个整数
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct test
{
int num;
float s;
};
void main()
{
FILE *fp;
int i,j,k,bad,good;
double ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
fp=fopen("./test.txt","w+");
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n");
for(i=0;i<10;i++)
{
data[i].num=i+1;
scanf("%f",&data[i].s);
/*分数的输入部分*/
if(data[0].s==0)
{
fclose(fp);
exit(0);
}
}
for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]<tm[j])
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/
}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8;
/*计算平均值的部分*/
printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");
fprintf(fp,"\n-----------------\n");
fprintf(fp,"The aver is:%.1f\n",aver);
fprintf(fp,"-----------------\n");
(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
min=fabs(p[5]->s-aver);
good=5;
/*暂定第六个为最公平裁判*/
for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/
for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/
printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
fprintf(fp,"The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*打印出最不公平裁判和其分数*/
printf("The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
fprintf(fp,"The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*打印出最公平裁判和其分数*/
printf("\n----------------------------------\n");
fprintf(fp,"\n----------------------------------\n");
printf("Next one:"); /*打印出下一位*/
}while(1);
}
输出到文件不难,在程序开始使用fopen打开一个文件,得到返回值fp,之后使用fprintf把想输出的内容输出到fp即可,在退出程序的时候使用fclose关闭fp。
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct test
{
int num;
float s;
};
void main()
{
FILE *fp;
int i,j,k,bad,good;
double ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
fp=fopen("./test.txt","w+");
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n");
for(i=0;i<10;i++)
{
data[i].num=i+1;
scanf("%f",&data[i].s);
/*分数的输入部分*/
if(data[0].s==0)
{
fclose(fp);
exit(0);
}
}
for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]<tm[j])
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/
}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8;
/*计算平均值的部分*/
printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");
fprintf(fp,"\n-----------------\n");
fprintf(fp,"The aver is:%.1f\n",aver);
fprintf(fp,"-----------------\n");
(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
min=fabs(p[5]->s-aver);
good=5;
/*暂定第六个为最公平裁判*/
for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/
for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/
printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
fprintf(fp,"The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);
/*打印出最不公平裁判和其分数*/
printf("The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
fprintf(fp,"The best pingwei is %d and the sorce is %.1f\n",
p[good]->num,p[good]->s);
/*打印出最公平裁判和其分数*/
printf("\n----------------------------------\n");
fprintf(fp,"\n----------------------------------\n");
printf("Next one:"); /*打印出下一位*/
}while(1);
}
输出到文件不难,在程序开始使用fopen打开一个文件,得到返回值fp,之后使用fprintf把想输出的内容输出到fp即可,在退出程序的时候使用fclose关闭fp。
追问
能不能具体点 。。。
追答
都实现了还要怎么具体。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询