永发信息网

c语言编程问题(文件系统)

答案:2  悬赏:80  手机版
解决时间 2021-03-09 13:16
  • 提问者网友:欺烟
  • 2021-03-09 03:37
用记事本建立一个数据文件data1.txt,内容为30位学生的成绩(即30个0~100之间的整数),各成绩用空格分隔。编程读取该文件各数据,统计90~100、80~89、70~79、60~69、60以下的人数以及各自所占百分比,结果写到文件data2.txt中。
提示:文件的读和写使用文件的格式输入输出函数fscanf() 和fprintf() 。
最佳答案
  • 五星知识达人网友:平生事
  • 2021-03-09 04:27
#include 
int main(int argc,char *argv[]){
    FILE *fpi,*fpo;
    int i,k,f[5]={0};
    char s[5][7]={"90~100"," 80~89"," 70~79"," 60~69","  <60"};
    fpi=fopen("data1.txt","r");
    fpo=fopen("data2.txt","w");
    if(fpo==NULL || fpi==NULL){
        printf("Open the file(s) failure...\n");
        return 0;
    }
    while(fscanf(fpi,"%d",&k)==1){
        if(k>=90 && k<=100)
            f[0]++;
        else if(k>=80 && k<=89)
            f[1]++;
        else if(k>=70 && k<=79)
            f[2]++;
        else if(k>=60 && k<=69)
            f[3]++;
        else if(k<60)
            f[4]++;
    }
    fclose(fpi);
    for(i=0;i<5;i++){
        fprintf(fpo,"%.2f ",f[i]/30.0);
        printf("%s:\t%.2f\n",s[i],f[i]/30.0);
    }
    fclose(fpo);
    return 0;
}
全部回答
  • 1楼网友:西岸风
  • 2021-03-09 05:15
#include "stdio.h" #include "stdlib.h" #include "string.h" void main() { file *fp; int i,j,len,a; long int add=0; char str[1000],str1[10]; if((fp=fopen("int.txt","rt"))==null) { printf("cannot open file\n"); return; } while (fgets(str,1000,fp)) //读取一行,并判断文件是否结束 { len=strlen(str); for(i=0;i0) { a=atoi(str1); add+=a;} j=0; } } if(j>0) { str1[j]=0; a=atoi(str1); add+=a; } } fclose(fp); if((fp=fopen("int.txt","a+"))==null) { printf("cannot open file\n"); return; } fprintf(fp,"\n%ld",add); fclose(fp); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯