VS2010环境,现实的问题解决不了。先问题后代码
c(12): error C2146: 语法错误: 缺少“)”(在标识符“cor”的前面)
c(12): error C2081: “word”: 形参表中的名称非法
c(12): error C2061: 语法错误: 标识符“cor”
c(12): error C2059: 语法错误:“;”
c(12): error C3409: 不允许空特性块
c(12): error C2059: 语法错误:“)”
c(12): error C2059: 语法错误:“;”
c(27): warning C4013: “spell”未定义;假设外部返回 int
c(37): error C2371: “spell”: 重定义;不同的基类型
c(103): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
c(153): fatal error C1075: 与左侧的 大括号“{”(位于“d:\b22130809\程序设计1\程序设计1\程序设计1.c(84)”)匹配之前遇到文件结束
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10//错误单词个数
#define EN 50//单词英文长度
#define CN 50//单词中文长度
#define WN 10//每轮背单词个数
FILE *fp;
int num=0;
char options;
int score;
void spell(char *fName,word cor[]);
void reflect();
void spellwrong();
typedef struct word //每轮所背单词
{
char English[EN];//每个单词英文
char Chinese[CN];//每个单词中文
}word;
word character[WN];//每组单词个数
word fail[N];//每组背完错误单词个数
int main()
{
char choose;
char filename[50];
scanf("%s",filename);//本轮学习单词所在文件名
spell(filename,character);//拼写函数
reflect();//反馈:最终得分,是否重背
if(options=='y')
fseek(fp,-1000L,1);
if(options=='Y')
spellwrong();
if(options=='n');
return 0;
}
void spell(char *fName,word cor[])
{
int flag;
char try[50];
fp=fopen("fName","r");
if(fp==0)
{
printf("file erro!\n");
exit(1);
}
fscanf(fp,"%s%s",cor[num].English,cor[num].Chinese);
while(!feof(fp))
{
num++;
fscanf(fp,"%s%s",cor[num].English,cor[num].Chinese);
}
fclose(fp);//将本轮学习单词输入数组
for(num=0;num<10;num++)//判断正误
{
printf("%s\n",cor[num].Chinese);
scanf("%s",try);
flag=strcmp(cor[num].English,try);
if(flag==0)
num++;
else
{
strcpy(fail[num].English,cor[num].English);//将错误单词导入临时错题本
strcpy(fail[num].Chinese,cor[num].Chinese);//供再次背诵使用
fp=fopen("D:\\Desktop\\程序设计错题本.txt","a+");
if(fp==0)
{
printf("file erro!\n");
exit(1);
}
fputs(cor[num].English,fp);
fputc('\t',fp);
fputs(cor[num].Chinese,fp);
fputc('\n',fp);
fclose(fp);//将错误单词永久存入错题本文件
do{
printf("错误,请重新输入");
scanf("%s",try);
flag=strcmp(cor[num].English,try);
}while(flag);
}
}
}
void spellwrong()//再次拼写错题
{
int n;
int Flag;
char againtry[50];
for(n=0;n<num;n++)
{
printf("%s\n",fail[n].Chinese);
scanf("%s",againtry);
Flag=strcmp(fail[n].English,againtry);
if(Flag==0)
n++;
else
do{
printf("错误,请重新输入");
scanf("%s",againtry);
Flag=strcmp(fail[num].English,againtry);
}while(Flag);
}
void reflect();//反馈函数:最终得分,是否重背
{
score=num*10;
printf("最终得分为%d\n",score);
if(num<10)
{
printf("是否选择错题重背?(Y/N)\n");
options=getchar();
getchar();
switch(options)
{
case 'Y':break;
case 'N':printf("是否再背一次?(y/n)\n");
options=getchar();
getchar();
switch(options)
{
case 'y':break;
case 'n':;
}
}
}
else
printf("没有错题继续努力");
printf("是否再背一次?(y/n)\n");
}