樱田妮妮nini 2023-04-14 11:53 采纳率: 66.7%
浏览 108
已结题

C语言|背单词系统(vs2010)

这是背单词系统中的一部分,需要用户从上次背到的地方开始做选择题(我想创建一个单独文档存储背到的单词编号 ),统计每个单词的正确率和出现频率,但是老是出错。没法问到身边的人,qwq

1>已启动生成: 项目: 第十一章复习, 配置: Debug Win32
1>生成启动时间为 2023/4/14 11:39:01。
1>InitializeBuildStatus:
1> 正在对“Debug\第十一章复习.unsuccessfulbuild”执行 Touch 任务。
1>ClCompile:
1> 第十一章复习.c
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2061: 语法错误: 标识符“acosf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2061: 语法错误: 标识符“asinf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(19): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2061: 语法错误: 标识符“atanf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2061: 语法错误: 标识符“atan2f”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2061: 语法错误: 标识符“ceilf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(20): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2061: 语法错误: 标识符“cosf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2061: 语法错误: 标识符“coshf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2061: 语法错误: 标识符“expf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(21): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2061: 语法错误: 标识符“fabsf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2061: 语法错误: 标识符“floorf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2061: 语法错误: 标识符“fmodf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(22): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2061: 语法错误: 标识符“frexpf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2061: 语法错误: 标识符“ldexpf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2061: 语法错误: 标识符“logf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(23): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2061: 语法错误: 标识符“log10f”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2061: 语法错误: 标识符“modff”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2061: 语法错误: 标识符“powf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(24): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2061: 语法错误: 标识符“sinf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2061: 语法错误: 标识符“sinhf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2061: 语法错误: 标识符“sqrtf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(25): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2061: 语法错误: 标识符“tanf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2061: 语法错误: 标识符“tanhf”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(26): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2061: 语法错误: 标识符“acosl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2061: 语法错误: 标识符“asinl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(28): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2061: 语法错误: 标识符“atanl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2061: 语法错误: 标识符“atan2l”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2061: 语法错误: 标识符“ceill”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(29): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2061: 语法错误: 标识符“cosl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2061: 语法错误: 标识符“coshl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2061: 语法错误: 标识符“expl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(30): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2061: 语法错误: 标识符“fabsl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2061: 语法错误: 标识符“floorl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2061: 语法错误: 标识符“fmodl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(31): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2061: 语法错误: 标识符“frexpl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2061: 语法错误: 标识符“ldexpl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2061: 语法错误: 标识符“logl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(32): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2061: 语法错误: 标识符“log10l”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2061: 语法错误: 标识符“modfl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2061: 语法错误: 标识符“powl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(33): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2061: 语法错误: 标识符“sinl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2061: 语法错误: 标识符“sinhl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2061: 语法错误: 标识符“sqrtl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(34): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2061: 语法错误: 标识符“tanl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2061: 语法错误: 标识符“tanhl”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(35): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2061: 语法错误: 标识符“abs”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: 语法错误: 标识符“acos”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: 语法错误: 标识符“asin”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: 语法错误: 标识符“atan”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: 语法错误: 标识符“atan2”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: 语法错误: 标识符“ceil”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: 语法错误:“;”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): error C2061: 语法错误: 标识符“cos”
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): fatal error C1003: 错误计数超过 100;正在停止编译
1>
1>生成失败。
1>
1>已用时间 00:00:00.12
生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个

#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<time.h>
#define WORD_len 50
#define MEANINIG_len 80
#define number 4000
typedef struct WORD
{int xu;
 char spelling[WORD_len];
 char meanning[MEANINIG_len];
 int displaytimes_right;
 int displaytimes_wrong;
}Word;//单词结构体
int Readfile(char *fname, Word wo[]);//读取文件
int zhengquefrequency(char *fname,int num);//求正确率
int chuxianfrequency(char *fname,int num);//出现频率
int duqubianhao(char *fname);//读取单词编号
void chucunweizhi(char *fname,int xu);//存储学到的单词的编号
void xuanzeti(char *fname,int i);//创建选择题
int main()
{int i=0,choose;
 char yonghuming[20];
 //创建单词的编号
 printf("请输入用户名(可再修改)");
 scanf("%s",yonghuming);
 i=duqubianhao(yonghuming);
 printf("请选择");
 for(;i<=number;i++)
 {printf("1.下一题\n");
  printf("2.停止答题\n");
  scanf("%d",&choose);
  switch(choose)
  {case 1:break;
   case 2:xuanzeti(yonghuming,i);
   }
  }chucunweizhi(yonghuming,i);
 return 0;
}
 void xuanzeti(char *fname,int i)
 {int a,b,c,z,t,character,j;
  char temp[MEANINIG_len];
 FILE *fp;
 Word choice[4];//三个错误选项和一个正确选项
 Word words[number];
 char userschoice[MEANINIG_len];
 fp=fopen(fname,"r");//读取所有单词
 if(fp==0)
 {printf("source error\n");
  exit(0);
 }
 fscanf(fp,"%s%s",words[z].spelling,words[z].meanning);
 while(!feof(fp))
 {z++;
  fscanf(fp,"%s%s",words[z].spelling,words[z].meanning);
 }
 
//产生随机数、选出三个错误选项
 int j=0,random,a,b,c;
 srand((unsigned int) time(0));
 for(j=0,z=0;j<1000&&z<3;j++) 
   {random=rand()%10;
    if(random<=number&&random!=i)
     {strcpy(choice[z].meanning,words[random].meanning);
      z++;
      }
    }
 strcpy(choice[3].meanning,words[number].meanning);
 //打乱选项
 for(a=0;a<4-1;a++)
 {c=1;
  for(b=a+1;b<4;b++)
     if(strcmp(choice[c].meanning,choice[b].meanning)>0)
     c=b;
  if(c!=a)
  {strcpy(temp,choice[a].meanning);
  strcpy(choice[a].meanning,choice[c].meanning);
  strcpy(choice[c].meanning,temp);
  }
 }
 //选择界面
 printf("请选择%s的正确释义\n",words[i].spelling);
 printf("1.%s\n",choice[0].meanning);
 printf("2.%s\n",choice[1].meanning);
 printf("3.%s\n",choice[2].meanning);
 printf("4.%s\n",choice[3].meanning);
 scanf("%d",&character);
 strcpy(userschoice,choice[character].meanning);
 t=strcmp(userschoice,words[i].meanning);
 if(!t)
 {printf("回答正确!");
  words[i].displaytimes_right++;
 }
 else
 {printf("回答错误,正确答案为%s",words[i].meanning);
  words[i].displaytimes_wrong++;
 }
}
//该单词的出现频率
int chuxianfrequency(char *fname,int num)
{int i=0;//控制数组
 int sumt,sumf,sum=0,frequency;
 Word wo[number];
 FILE *fp;
 fp=fopen(fname,"r+");
 if(fp==0)
 {printf("file error");
  exit(1);}
 fscanf(fp,"%d%d",&wo[i].displaytimes_right,&wo[i].displaytimes_wrong);
 while(!feof(fp))
 {i++;
  fscanf(fp,"%d%d",&wo[i].displaytimes_right,&wo[i].displaytimes_wrong);
 }
 fclose(fp);
 for(i=0;i<=number;i++)
 {sum=wo[i].displaytimes_right+wo[i].displaytimes_wrong;
 }
 frequency=(wo[number].displaytimes_right+wo[number].displaytimes_wrong)/sum;
}
//该单词的正确率
int zhengquefrequency(char *fname,int num)
{int i=0;
 int sumt,sumf,sum=0,frequency;
 Word wo[number];
 FILE *fp;
 fp=fopen(fname,"r+");
 if(fp==0)
 {printf("file error");
  exit(1);}
 fscanf(fp,"%d%d",&wo[i].displaytimes_right,&wo[i].displaytimes_wrong);
 while(!feof(fp))
 {i++;
  fscanf(fp,"%d%d",&wo[i].displaytimes_right,&wo[i].displaytimes_wrong);
 }
 fclose(fp);
 frequency=wo[number].displaytimes_right/(wo[number].displaytimes_right+wo[number].displaytimes_wrong);
}
//
int duqubianhao(char *fname)//输入文档名和用户名有关,读取用户上次学到的那个单词的编号
 FILE *fp;
 int bianhao;
 fp=fopen(fname,"r+");
 if(fp==0)
 {printf("用户开始学习第一个单词");
  exit(1);
 fopen(fname,"w+");
 bianhao=0;
 }
 else
 {fscanf(fp,"%d",&bianhao);
 }
 return bianhao;
} 
void chucunweizhi(char *fname,int xu)//输入文档名和用户名有关
{FILE *fp;
 fp=fopen(fname,"w+");
 if(fp==0)
 {printf("file error");
  exit(1);}
 fprintf(fp,"%d",xu);
 fclose(fp);
}

  • 写回答

6条回答 默认 最新

  • Zyb0627 2023-04-14 16:19
    关注

    引用chatGPT作答,在代码中存在一些语法错误和逻辑错误,需要进行如下修正:

    1.在头文件中包含是错误的,应该改为#include<string.h>,以便使用strcpy等字符串操作函数。
    2.在zhengquefrequency函数中,缺少return语句,需要添加。
    3.在chuxianfrequency函数中,frequency计算公式错误,应该是(wo[num].displaytimes_right+wo[num].displaytimes_wrong)*100/sum。
    4.在chuxianfrequency函数中,sum应该在for循环中进行累加,否则只计算最后一个单词的总出现次数。
    5.在main函数中,duqubianhao函数未定义,需要添加该函数的定义。
    6.在main函数中,chucunweizhi函数未定义,需要添加该函数的定义。
    7.在xuanzeti函数中,字符数组j重复定义,应该将其中一个j改为其他变量名。
    8.在xuanzeti函数中,变量z未初始化,应该在读取文件之前将z初始化为-1。
    9.在xuanzeti函数中,循环次数限制应该是z<3,而不是j<3。
    10.在xuanzeti函数中,应该先读取单词编号,再读取单词拼写和释义。
    11.在xuanzeti函数中,需要在读取单词拼写和释义之后,将z加1。
    12.在xuanzeti函数中,计算选择的答案是否正确的部分需要加入if语句,以确保用户输入的选择在1到4之间。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    
    #define WORD_LEN 50
    #define MEANING_LEN 80
    #define NUMBER 4000
    
    typedef struct WORD {
        int xu;
        char spelling[WORD_LEN];
        char meaning[MEANING_LEN];
        int displaytimes_right;
        int displaytimes_wrong;
    } Word; //单词结构体
    
    int read_file(char *fname, Word wo[]); //读取文件
    int zhengque_frequency(char *fname, int num); //求正确率
    int chuxian_frequency(char *fname, int num); //出现频率
    int read_bianhao(char *fname); //读取单词编号
    void save_weizhi(char *fname, int xu); //存储学到的单词的编号
    void create_xuanze(char *fname, int i); //创建选择题
    
    int main() {
        int i = 0, choose;
        char yonghuming[20];
    
        //创建单词的编号
        printf("请输入用户名(可再修改)");
        scanf("%s", yonghuming);
        i = read_bianhao(yonghuming);
    
        printf("请选择");
    
        for (; i <= NUMBER; i++) {
            printf("1.下一题\n");
            printf("2.停止答题\n");
            scanf("%d", &choose);
            switch (choose) {
                case 1:
                    break;
                case 2:
                    create_xuanze(yonghuming, i);
                    break;
            }
        }
    
        save_weizhi(yonghuming, i);
        return 0;
    }
    
    void create_xuanze(char *fname, int i) {
        int a, b, c, z, t, character, j;
        char temp[MEANING_LEN];
        FILE *fp;
        Word choice[4]; //三个错误选项和一个正确选项
        Word words[NUMBER];
        char userschoice[MEANING_LEN];
    
        fp = fopen(fname, "r"); //读取所有单词
    
        if (fp == NULL) {
            printf("source error\n");
            exit(0);
        }
    
        fscanf(fp, "%s%s", words[z].spelling, words[z].meaning);
    
        while (!feof(fp)) {
            z++;
            fscanf(fp, "%s%s", words[z].spelling, words[z].meaning);
        }
    
        //产生随机数、选出三个错误选项
        int random;
        srand((unsigned int) time(NULL));
    
        for (j = 0, z = 0; j < 1000 && z < 3; j++) {
            random = rand() % 10;
            if (random <= NUMBER && random != i) {
                strcpy(choice[z].meaning, words[random].meaning);
                z++;
            }
        }
    
        strcpy(choice[3].meaning, words[i].meaning); //将正确答案放入选项数组
    
        //打乱选项
        for (a = 0; a < 4 - 1; a++) {
            c = 1;
            while (c) {
                c = 0;
                for (b = 0; b < 4 - 1 - a; b++) {
                    if (rand() % 2) {
                        strcpy(temp, choice[b].meaning);
                        strcpy(choice[b].meaning, choice[b + 1].meaning);
                        strcpy(choice[b + 1].meaning, temp);
                        c = 1;
                    }
                }
            }
        }
    
        //显示题目和选项
        printf("%s\n", words[i].spelling);
        for (a = 0; a < 4; a++) {
            printf("%d.%s ", a + 1, choice[a].meaning);
        }
        printf("\n");
    
        //获取用户选择
        printf("请输入您的选择:");
        scanf("%s", userschoice);
    
        //判断用户选择是否正确
        if (strcmp(userschoice, "1") == 0 && strcmp(choice[0].meaning, words[i].meaning) == 0) {
            printf("恭喜你,答对了!\n");
        } else if (strcmp(userschoice, "2") == 0 && strcmp(choice[1].meaning, words[i].meaning) == 0) {
            printf("恭喜你,答对了!\n");
        } else if (strcmp(userschoice, "3") == 0 && strcmp(choice[2].meaning, words[i].meaning) == 0) {
            printf("恭喜你,答对了!\n");
        } else if (strcmp(userschoice, "4") == 0 && strcmp(choice[3].meaning, words[i].meaning) == 0) {
            printf("恭喜你,答对了!\n");
        } else {
            printf("很遗憾,答错了,正确答案是:%s\n", words[i].meaning);
        }
    
        fclose(fp);
    }
    
    void chucunweizhi(char *fname,int xu)
    {FILE *fp;
    fp=fopen(fname,"w");
    fprintf(fp,"%d",xu);
    fclose(fp);
    }
    //读取上一次背到的单词编号
    int duqubianhao(char *fname)
    {int i=0;
    FILE *fp;
    fp=fopen(fname,"r");
    if(fp==0)
    {printf("file error");
    exit(1);}
    fscanf(fp,"%d",&i);
    fclose(fp);
    return i;
    }
    
    //读取文件
    int Readfile(char *fname, Word wo[])
    {int i=0;
    FILE *fp;
    fp=fopen(fname,"r+");
    if(fp==0)
    {printf("file error");
    exit(1);}
    fscanf(fp,"%d%d%s%s",&wo[i].displaytimes_right,&wo[i].displaytimes_wrong,wo[i].spelling,wo[i].meanning);
    while(!feof(fp))
    {i++;
    fscanf(fp,"%d%d%s%s",&wo[i].displaytimes_right,&wo[i].displaytimes_wrong,wo[i].spelling,wo[i].meanning);
    }
    fclose(fp);
    return i;
    }
    
    //统计出现频率和正确率
    void frequency(char fname)
    {int i=0,sum=0,sumt=0,sumf=0;
    double rate;
    Word wo[number];
    i=Readfile(fname,wo);
    for(i=0;i<number;i++)
    {sum+=wo[i].displaytimes_right+wo[i].displaytimes_wrong;
    sumt+=wo[i].displaytimes_right;
    sumf+=wo[i].displaytimes_wrong;
    }
    rate=(double)sumt/sum;
    printf("所有单词的正确率为%f%%,",rate100);
    printf("出现频率最高的单词是%s,出现次数为%d\n",wo[number].spelling,wo[number].displaytimes_right+wo[number].displaytimes_wrong);
    }
    
    //主程序
    int main()
    {int i=0,choose;
    char yonghuming[20];
    printf("请输入用户名(可再修改)");
    scanf("%s",yonghuming);
    i=duqubianhao(yonghuming);
    printf("请选择\n");
    for(;i<=number;i++)
    {printf("1.下一题\n");
    printf("2.停止答题\n");
    scanf("%d",&choose);
    switch(choose)
    {case 1:xuanzeti(yonghuming,i);break;
    case 2:xuanzeti(yonghuming,i);break;
    }
    }
    chucunweizhi(yonghuming,i);
    frequency(yonghuming);
    return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月14日
  • 已采纳回答 4月14日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页