小弟最近在弄一个背单词的程序,程序现在有了,有些想改动的地方,想把测试单词的部分改成以ABCD4个选项出现的形式,然后选择正确的答案,请问怎么改动,原来是出现中文然后输入英文.希望大

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 14:56:48
小弟最近在弄一个背单词的程序,程序现在有了,有些想改动的地方,想把测试单词的部分改成以ABCD4个选项出现的形式,然后选择正确的答案,请问怎么改动,原来是出现中文然后输入英文.希望大

小弟最近在弄一个背单词的程序,程序现在有了,有些想改动的地方,想把测试单词的部分改成以ABCD4个选项出现的形式,然后选择正确的答案,请问怎么改动,原来是出现中文然后输入英文.希望大
小弟最近在弄一个背单词的程序,程序现在有了,有些想改动的地方,想把测试单词的部分改成以ABCD4个选项出现的形式,然后选择正确的答案,请问怎么改动,原来是出现中文然后输入英文.希望大神能附上代码,感激不尽

小弟最近在弄一个背单词的程序,程序现在有了,有些想改动的地方,想把测试单词的部分改成以ABCD4个选项出现的形式,然后选择正确的答案,请问怎么改动,原来是出现中文然后输入英文.希望大

我大概能理解你的意思,但是不太清楚具体的要求,是不是像下面这个样子?

1.请问hello的意思是?

A.喂,用于打招呼

B.错误答案B

C.错误答案C

D.错误答案D


如果是这样的话,你可以定义一个结构体,存储题目的相关信息:

typedef struct
{

   char answer;                // 正确答案

   const char *answerA;    // 答案A  

   const char *answerB;    // 答案B  

   const char *answerC;    // 答案C  

   const char *answerD;    // 答案D  
}QuestionInfor;


这么定义我觉得不是很好的,因为你不能把信息存储到文件当中,如果要不信息存储到文件中,你可以自己写一个解析器:


【我简单的写了下面的代码,你看看对你有没有帮助吧,我测试过,可以使用】



#include  <stdio.h>

#include <ctype.h>


// 返回值

#define ERR_END_OF_FILE     -1    // 文件到达尾部
#define ERR_FILE_OP             -2    // 文件相关操作出错
#define ERR_INVALID_ARG     -3    // 非法参数

/*! \brief  从文件中读出一行,行号为'\n'

   \param  fp 文件描述符

   \param  buffer 缓存

   \param  len 缓存长度

   \return  假如读取成功,返回值大于0,否则,返回 ERR_END_OF_FILE/ERR_FILE_OP/ERR_INVALID_ARG

*/
static int myGetLine(FILE *fp,char *buffer,int len)
{

   int i,offset;

   size_t mBytes;


   if (len <= 0) {

       printf("非法参数!\n");

       return ERR_INVALID_ARG;

   }


   if (feof(fp)) {

       return ERR_END_OF_FILE;

   }


   mBytes = fread(buffer,1,len,fp);

   if (mBytes < 0) {

       printf("读取文件错误!\n");

       return -ERR_FILE_OP;

   } else if ( mBytes == 0) {

       return ERR_END_OF_FILE;

   }


   offset = 0 ;

   for (i = 0;i < mBytes;i++) {

       if (buffer[i] == '\n') {

           buffer[i] = 0 ;

           offset = mBytes - i - 1;

           break ;

       }

   }


   buffer[len - 1] = 0 ;


   if (fseek(fp,-offset,SEEK_CUR) != 0 ) {

       printf("文件操作错误!\n");

       return ERR_FILE_OP;

   }


   return i + 1;

}

// 从文件中读取一个问题
static char getOneQuestion(FILE * fp)
{

   // 缓存大小

   char cpBuffer[1024];

   // 答案

   char cAnswer;

   int i,ret;


   cAnswer = ERR_END_OF_FILE;

   

   // 提取一个问题相关信息

   while ( 1 ) {

       ret = myGetLine(fp,cpBuffer,1024);

       if (ret < 0 ) {

           return ret;

       }


       if (strcmp(cpBuffer,"<Question>") != 0) {

           continue ;

       }


       break ;

   }


   // 获取单词

   if ((ret = myGetLine(fp,cpBuffer,1024)) < 0) {

       return ret;

   }


   printf("%s 是什么意思?\n",cpBuffer);


   // 获得答案

   if ((ret = myGetLine(fp,cpBuffer,1024)) < 0) {

       return ret;

   }


   for (i = 0;i < 1024;i++) {

       if (isalpha(cpBuffer[i])) {

           cAnswer = cpBuffer[i] ;

           break ;

       }

   }

   

   // 获取选项

   while ((ret = myGetLine(fp,cpBuffer,1024)) > 0) {

       if (strcmp(cpBuffer,"</Question>") == 0) {

           break ;

       }


       printf("%s \n",cpBuffer);

   }


   return cAnswer;

}


// main 函数

int main()
{

   FILE *fp;

   char cAnswer,cInput;

   fp = fopen("words.inf","r");


   if (fp == NULL) {

       printf("Open file error\n");

       // 错误处理代码

       return -1;

   }


   while (1) {


       putchar(10);


       cAnswer = getOneQuestion(fp);

       if (cAnswer == -1) {

           printf("测试结束\n");

           break ;

       } else if (cAnswer < 0) {

           printf("读取题目错误\n");

           break;

       }


       printf("\n请输入答案 : \n");


       cInput = getchar();

       if (cInput == 'q' || cInput == 'Q') {

           break;

       }


       if ( toupper( cInput ) == toupper(cAnswer)) {

           printf("回答正确\n");

       } else {

           printf("回答错误,正确答案是 %c \n",cAnswer);

       }


       getchar();

       getchar();

   }


   fclose(fp);


   return 0;
}

小弟最近在弄一个背单词的程序,程序现在有了,有些想改动的地方,想把测试单词的部分改成以ABCD4个选项出现的形式,然后选择正确的答案,请问怎么改动,原来是出现中文然后输入英文.希望大 有没有和卡西欧电子词典一样里面有背单词程序的专门背单词的机器?谢谢 用C语言编写一个程序,统计一个字符串中 各种 小写字母(26个小写字母)出现次数,就如同题目中所说的,当然有程序和思路解析的更好,小弟在此谢过了! 新东方背单词5安装到哪去了我在迅雷里下了一个新东方背单词5免安装型的,但是解压后什么都没发生,程序里面也没有,这是怎么回事, 英语翻译:我想每天编写一个程序,背会5个单词和一段英文 求用MATLAB编写空间梁的单元刚度矩阵和整体刚度矩阵的程序最近有一个作业是用MATLAB编写程序计算空间梁,单我不知道如何写求刚度矩阵的程序, 我用C语言编了一个程序,从键盘输入一个表达式,经过运算,会在屏幕上输出结果 怎么给这个程序做一个最简我现在就要做一个这样的程序, c语言:编写一个程序找出一组单词中的“最小“和“最大“的单词(单词在字典中的先后顺序,字典中先出现的小).当输入四个字母单词时,程序停止读入.我这里已经写好了,有一个小问题,就 LED点阵汉字显示移动程序小弟有段LED点阵汉字显示程序,主程序基本没什么问题,但是汉字移动程序不知道怎么在主程序上修改编写,希望有朋友能够帮忙编写!下面的回答是我的程序,添加移动 有一次我误删冰点的主关程序和别的和冰点有关各种程序而现在冰点的还原效果还在怎么办 发那科加工中心2个问题,一是在程序列表那,程序号后面加注释,如何操作?一是如何在程序中输入小括号()第一个问题的补充,程序列表那每个程序号后面都有括号,是加程序注释的,请指点下 对程序模块进行编程测试我已经在eclipse中建好了一个工程,工程中有若干个程序,现在我想检测某一个程序模块是不是正确,(通过编写测试程序实现),测试程序应该如何下手写呀,以前只知道 在一个具体的程序中,程序的复杂度是如何计算的? 高中数学必修三里面有一个输入程序框图语言的程序叫什么名字? 怎么改应用程序的名字我晕啊想找一个软件 可以改任何EXE程序的名字的那种 有谁知道吗?小弟一顶以身相许 80c51单片机急需一个80C1单片机的一个实验,要有程序,以及该程序能实现一个什么功能,在实际中有什么价值 用JAVA编写一个程序,判断一个字符串中有几个单词,例:I am tom.输出三个单词.单词之间的空格数不定! 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.