分析:問題庫(QAS)用外部的配置文件保存,每次運(yùn)行前先載入庫中已經(jīng)建立的問題。然后再進(jìn)入操作選擇。完整代碼如下:/*1.暫時不考慮漢字;2.可以用鏈表優(yōu)化;3.將每一種操作封裝成一個函數(shù);*/#include#include#include#include////////////////////////////////////////////////////////////////////////////字符串最大長度#defineMAX_STR_LEN2048//題庫上限#defineMAX_QAS_LEN1024//配置文件路徑#defineQAS_FILE_PATH"d:\\qasconfig.txt"http:////////////////////////////////////////////////////////////////////////////問題結(jié)點typedefstructtagQASNode{charQuestion[MAX_STR_LEN];charAnswer[MAX_STR_LEN];doubleScore;boolIsAnswered;}QASNode;//問題庫QASNode*g_QASLib[MAX_QAS_LEN];intg_QASIndex=0;////////////////////////////////////////////////////////////////////////////添加boolInsertToLib(char*pQuestion,char*pAnswer,doublescore){if(pQuestion==NULL||strcmp(pQuestion,"")==0||pAnswer==NULL)returnfalse;QASNode*pNewNode=(QASNode*)malloc(sizeof(QASNode));memset(pNewNode,0L,sizeof(QASNode));strcpy_s(pNewNode-Question,pQuestion);strcpy_s(pNewNode-Answer,pAnswer);pNewNode-Score=score;g_QASLib[g_QASIndex++]=pNewNode;returntrue;}//隨機(jī)一個不重復(fù)的序號intGetQuestionIndex(){intretVal=-1;inttryCnt=0;while(tryCnt++IsAnswered){retVal=randVal;break;}}returnretVal;}//////////////////////////////////////////////////////////////////////////intmain(){//打開配置文件FILE*pStream=NULL;if(fopen_s(pStream,QAS_FILE_PATH,"a+")!=0){printf_s("Opentheconfigfilefailed.\n");return-1;}//加載已有的QASfseek(pStream,0L,SEEK_END);intfileSize=ftell(pStream);fseek(pStream,0L,SEEK_SET);while(!feof(pStream)fileSize){if(g_QASIndexQuestion);printf_s("Inputanswer:");chartempA[MAX_STR_LEN]={0};fflush(stdin);gets_s(tempA,MAX_STR_LEN);if(strcmp(tempA,g_QASLib[currentIndex]-Answer)==0){printf("Right!\n");totalSocore+=g_QASLib[currentIndex]-Score;g_QASLib[currentIndex]-IsAnswered=true;}else{printf("Wrong!\n");}}else{printf("你已經(jīng)答對了所有的問題!\n");}}break;case2:{if(currentIndex!=-1){printf("Quest:%s\nScore=%.2f\n",g_QASLib[currentIndex]-Question,g_QASLib[currentIndex]-Score);}else{printf("請先選擇\"回答問題\"!\n");}}break;case3:{//一次只添加一個問題if(g_QASIndexQuestion,g_QASLib[i]-Answer,g_QASLib[i]-Score);}}break;default:break;}}printf("\n");return0;}運(yùn)行起來后先建立問題庫!
成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,網(wǎng)站制作、成都做網(wǎng)站,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
主函數(shù):
一般而言,編寫一個能運(yùn)行在操作系統(tǒng)上的程序,都需要一個主函數(shù)。主函數(shù)意味著建立一個獨立進(jìn)程,且該進(jìn)程成為了程序的入口,對其它各函數(shù)(在某些OOP語言里稱作方法,比如Java)進(jìn)行調(diào)用,當(dāng)然其它被調(diào)用函數(shù)也可以再去調(diào)用更多函數(shù).......這樣整個程序的運(yùn)行軌跡就像一種棧,有時我們稱之為調(diào)用棧。主函數(shù)既是程序的入口,又是程序的出口,通常我們還可以指定一個exit code再退出,以表明程序最后的結(jié)果是什么樣的。
C語言
按照C99標(biāo)準(zhǔn)的規(guī)定,C語言的main函數(shù)如下:
int main(
void){/*百度百科示例代碼*/}//整數(shù)類型主函數(shù)(無類型)
或者
int main(intargc,
char*argv[]){/*百度百科示例代碼*/}//整數(shù)類型主函數(shù)(整數(shù)類型統(tǒng)計參數(shù)個數(shù),字符類型*
數(shù)組指針至字符[])
C++語言
按照C++98標(biāo)準(zhǔn)和C++11標(biāo)準(zhǔn)的規(guī)定,C++語言的主函數(shù)如下:
int main(){/*百度百科示例代碼*/}//整數(shù)類型主函數(shù)
或者
int main(intargc,
char*argv[]){/*百度百科示例代碼*/}//整數(shù)類型主函數(shù)(整數(shù)類型統(tǒng)計參數(shù)個數(shù),字符類型*
數(shù)組指針至字符[])
c語言的源程序語法結(jié)構(gòu)如下:
#includestdio.h//預(yù)處理語句
/* 自定義函數(shù)1*/
/* 自定義函數(shù)2*/
int main()
{
//main()主函數(shù)執(zhí)行調(diào)用以上定義的函數(shù)的順序
return 0;//執(zhí)行完畢 退出
}
示例如下:
#include stdio.h
int main()
{
printf("welcome to c language!!!\n");
return 0;
}