有大神能看下哪里出问题了?每次都是这样,已经打击到我的自信了。
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<time.h>
#define CODE 0x3b
#define MAXLEN 100
typedef struct
{
char *english;
char *chinese;
}Word;
Word word[MAXLEN];
int testType=0;
int init()
{
FILE *fp;
char fname[50];
char line[MAXLEN];
char *p;
char *word1;
char *word2;
int i=0;
int j=0;
int len;
printf("\t welcome to the words test stuition\n");
printf("============================================\n");
printf("please input the fname:");
scanf("%s",fname);
if((fp=fopen(fname,"r"))==NULL)
{
printf("opened error");
exit(0);
}
fflush(stdin);
while(fgets(line,MAXLEN,fp))
{
for(j=0;j<strlen(line);j++)
{
if(line[j]!='\n')
{
line[j]=line[j]^CODE;
}
}
p=strchr(line,'\n');
if(p!=NULL)
{
*p='\0';
}
p=strchr(line,'=');
word1=line;
word2=p;
*p='\0';
++word2;
len=strlen(word1);
word[i].english=(char*)malloc(len+1);
strcpy(word[i].english,word1);
len=strlen(word2);
word[i].chinese=(char*)malloc(len+1);
strcpy(word[i].chinese,word2);
i++;
}
fclose(fp);
return i;
}
void endtest(int size)
{
int i;
for(i=0;i<size;i++)
{
free(word[i].english);
word[i].english=NULL;
free(word[i].chinese);
word[i].chinese=NULL;
}
}
void test(int size)
{
int i,j,t;
int flag;
char choice;
int xm[4];
int count=0;
int score=0;
printf("please choice;1---chinese to eng0-----eng to chin");
scanf("%d",&testType);
fflush(stdin);
for(i=0;i<size;i++)
{
if(!testType)
{
printf("%d.english--%s--means:\n",i+1,word[i].english);
}
else
{printf("%d.chin--%s--means:\n",i+1,word[i].chinese);
}
srand(time(NULL));
count=0;
while(count<=4)
{
t=rand()%size;
if(t==i)
{
continue;
}
flag=0;
for(j=0;j<count;j++)
{
if(xm[j]==t)
{
flag=1;
}
}
if(!flag)
{
xm[count]=t;
count++;
}
}
t=rand()%4;
xm[t]=i;
if(!testType)
{
printf("\nA.%s\n",word[xm[0]].chinese);
printf("\nB.%s\n",word[xm[1]].chinese);
printf("\nC.%s\n",word[xm[2]].chinese);
printf("\nD.%s\n",word[xm[3]].chinese);
}
else
{
printf("\tA.%s\n",word[xm[0]].english);
printf("\tB.%s\n",word[xm[1]].english);
printf("\tC.%s\n",word[xm[2]].english);
printf("\tD.%s\n",word[xm[3]].english);
}
printf("please input your choice:");
choice=getchar();
fflush(stdin);
if(choice>='a'&&choice<='z')
{
choice=choice-'a'+'A';
}
if(choice-'A'==t)
{
printf("sorry,you are wromg");
score++;
}
else
{
printf("sorry,you are worng");
printf("the correct answer is:%c.\n",'A'+t);
}
getchar();
}
printf("the game is over. amoutis %d. correct is %d\n\nwelcome next time\n",size,score);
}
int main(void)
{
int size=init();
test(size);
getchar();
return 0;
}

相关推荐
培养自信与力量的创意活动
本文介绍了一系列创意活动,旨在帮助女孩们通过身体和心理的实践来培养自信和力量。这些活动包括创建雕塑、象征性绘画、生物能量打击等,旨在让女孩们通过积极的身体动作和自我肯定来发掘内在的力量。文章强调通过身体活动和正面肯定,女孩们可以学会欣赏自己的优点,并在日常生活中展现出积极的自我形象。...
【工业自动化】欧姆龙PLC产品线与编程软件应用:从选型架构到调试排错的全流程技术指南
内容概要:本文《欧姆龙PLC与编程软件完全手册》系统介绍了欧姆龙PLC的产品架构、软件体系、通信协议、选型策略及编程调试技巧。重点区分了两大技术平台:基于CX-Programmer的传统C系列(CP/CJ/CS)与基于Sysmac Studio的新一代Sysmac平台(NJ/NX/NY),强调二者在软件生态、寻址方式和通信架构上的根本差异。手册详细对比了各系列PLC的性能参数,并提供与西门子产品的功能对标,帮助用户快速定位。深入讲解了编程操作中的关键问题,如任务结构设计、间接寻址、FB封装陷阱、在线调试五件套等,特别指出“FB使能关闭时状态不初始化”等易出错点。最后汇总了选型路径与现场避坑清单,极具实战指导价值。; 适合人群:具备一定工业自动化基础,从事PLC编程、设备调试、系统集成的研发工程师和技术人员,尤其是从西门子平台转向欧姆龙或参与新项目选型的1-5年经验从业者。; 使用场景及目标:① 新项目选型时判断应选用C系列还是Sysmac平台;② 编程调试过程中掌握高效操作技巧与常见问题排查方法;③ 实现跨平台迁移、系统升级或接手他人项目时规避架构与逻辑陷阱;④ 提升对欧姆龙PLC任务机制、间接寻址、FB设计等高级功能的理解与应用能力。; 阅读建议:本手册理论结合实践,建议按“先架构后操作”的顺序阅读,重点章节需结合实际工程反复演练。特别是FB设计规范、任务切换处理、强制操作收尾流程等内容,应在仿真环境中验证后再应用于现场。注意版本匹配问题,操作前确认所用软件与控制器固件版本兼容。
CISP-CSE注册云安全工程师备考资源包
CISP-CSE注册云安全工程师备考资源包
科技中介服务机构如何通过AI技术降低技术评估与匹配服务的操作门槛?.docx
科技中介服务机构如何通过AI技术降低技术评估与匹配服务的操作门槛?
国央企创新负责人如何借助平台实现创新资源的高效配置与项目落地?.docx
国央企创新负责人如何借助平台实现创新资源的高效配置与项目落地?


UNIX文化
