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
#include
#include
#include
#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);
}

引用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;
}

img

错误信息很明确,你前面定义了j,后面又定义j,重复了
下面一堆都是类似问题
int duqubianhao(char *fname)
这里少了 { 括号

你的代码写得太乱,加上缩进吧

这个是编译错误,你检查一下头文件是否正确引用,以及是否正确地使用了cmath库中的函数。在使用cmath库的函数时,需要在代码中包含cmath头文件。

可能的错误信息:

  • 在 xuanzeti() 函数中,你定义了两个 j 变量,需要删除其中一个。

  • 在 chuxianfrequency() 函数中,你需要将所有的单词读取出来,并计算出它们的总出现次数,而不仅仅是最后一个单词的出现次数。可以在读取文件时进行累加,并在循环结束后计算出总次数。

  • 在 zhengquefrequency() 函数中,你需要将所有的单词读取出来,并计算出它们的总出现次数和总正确次数,而不仅仅是最后一个单词的出现次数和正确次数。同样可以在读取文件时进行累加,并在循环结束后计算出总次数和总正确次数。

朋友您好,以下是我把您的问题和相关观点都看了一遍分析出来的,望采纳谢谢啦
谢谢,麻了,笑哭,让我想起了当年大一,去图书馆借本书朋友可以改掉不少这些细节的地方,代码下面错了很多语法,不是光这些报错解决就能运行成功的

这个错误提示可能与头文件中的某些内容有关,看起来像是缺少某些头文件或者命名空间。建议尝试以下几种方法解决问题:
1.确保在代码中包含了正确的头文件,比如#include 。还要检查代码是否在正确的命名空间中,如using namespace std;。
2.如果确定代码中的头文件和命名空间都正确,那么可能是编译器的问题。尝试更新编译器版本或者切换到其他编译器,比如MinGW。
3.如果以上两种方法都没有解决问题,可以考虑使用其他方式实现相同的功能,比如使用第三方库或者自己编写相应的代码。