最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)

 更新時間:2022年06月02日 11:11:32   作者:普通學(xué)長  
這篇文章主要為大家詳細介紹了C語言實現(xiàn)選擇題標(biāo)準(zhǔn)化考試系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、任務(wù)概述(文章僅供參考)

1、用文件保存試題庫。(每個試題包括題干、4個備選答案、標(biāo)準(zhǔn)答案)
2、試題錄入:可隨時增加試題到試題庫中
3、試題抽取:每次從試題庫中可以隨機抽出N道題(N由鍵盤輸入)
4、答題:用戶可實現(xiàn)輸入自己的答案
5、自動判卷:系統(tǒng)可根據(jù)用戶答案與標(biāo)準(zhǔn)答案的對比實現(xiàn)判卷并給出成績。

二、功能展示

三、思維導(dǎo)圖

四、程序源碼

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define TRUE 1
#define ERROR 0
#define MAX ?30
typedef int Status;

typedef struct{
?? ?char option1[30],option2[30],option3[30],option4[30],subject[150];
?? ?char result;
}TestNode;
TestNode Testquestions[MAX];

Status SaveNode(int N) ?? ?//把結(jié)構(gòu)體數(shù)組保存到文件"qinhu"中,如成功保存返回TRUE,否則返回ERROR

{?? ?int i;
?? ?FILE *fp;
?? ?if((fp=fopen("qinhu","wb"))==NULL) return ERROR;
?? ?for(i=0;i<N;i++)
?? ??? ?fwrite(&Testquestions[i],sizeof(TestNode),1,fp);
?? ?fclose(fp);
?? ?return TRUE;
}

Status ReadNode(int N)?? ?//從文件讀出結(jié)構(gòu)體數(shù)組的內(nèi)容,如成功讀取返回TRUE,否則返回ERROR

{?? ?FILE *fp;
?? ?int i=0;
?? ?if((fp=fopen("qinhu","rb"))==NULL) return ERROR;
?? ?while(!feof(fp))// 用feof檢測文件是否結(jié)束,如果結(jié)束,返回正確
?? ?{?? ?fread(&Testquestions[i],sizeof(TestNode),1,fp);
?? ??? ?i++;
?? ?}
? ? N=i-1;
?? ?return TRUE;
}


void InputTitle(int N)// 輸入N道試題數(shù)據(jù)
{
?? ?int i;?
?? ?for(i=0;i<N;i++)
?? ?{ ? printf("請輸入第%d道題題目、題干和選項:\n",i+1);//輸入結(jié)構(gòu)體元素內(nèi)容
?? ??? ?printf("請輸入題目:");
?? ? ? ?gets(Testquestions[i].subject);
?? ??? ?printf("請輸入選項A:");
?? ??? ?gets(Testquestions[i].option1);
?? ??? ?printf("請輸入選項B:");
?? ??? ?gets(Testquestions[i].option2);
?? ??? ?printf("請輸入選項C:");
?? ??? ?gets(Testquestions[i].option3);
?? ??? ?printf("請輸入選項D:");
?? ??? ?gets(Testquestions[i].option4);
?? ??? ?printf("請輸入答案:");
?? ??? ?scanf("%c",&Testquestions[i].result);getchar();
?? ??? ?system("cls"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//清屏
?? ?}
}

Status InsertNodeA(int N) //輸入試題內(nèi)容
{?? ?
?? ?if(N>MAX) return ERROR;
?? ? ? ?printf("請輸入所要輸入題題目、題干和選項:\n");
?? ??? ?printf("請輸入題目:");
?? ??? ?gets(Testquestions[N].subject);
?? ??? ?printf("請輸入選項A:");
?? ??? ?gets(Testquestions[N].option1);
?? ??? ?printf("請輸入選項B:");
?? ??? ?gets(Testquestions[N].option2);
?? ??? ?printf("請輸入選項C:");
?? ??? ?gets(Testquestions[N].option3);
?? ??? ?printf("請輸入選項D:");
?? ??? ?gets(Testquestions[N].option4);
?? ??? ?printf("請輸入答案:");
?? ??? ?scanf("%c",&Testquestions[N].result);getchar();
?? ??? ?N++; ? ? ? ? ? ? ?//N表示結(jié)構(gòu)體數(shù)組長度,通過加&號使其值能返回
?? ??? ?return TRUE;
}


Status InsertNodeB(int N) //插入試題內(nèi)容
{?? ?
?? ?if(N>MAX) return ERROR;
?? ? ? ?printf("請輸入所要插入題題目、題干和選項:\n");
?? ??? ?printf("請輸入題目:");
?? ??? ?gets(Testquestions[N].subject);
?? ??? ?printf("請輸入選項A:");
?? ??? ?gets(Testquestions[N].option1);
?? ??? ?printf("請輸入選項B:");
?? ??? ?gets(Testquestions[N].option2);
?? ??? ?printf("請輸入選項C:");
?? ??? ?gets(Testquestions[N].option3);
?? ??? ?printf("請輸入選項D:");
?? ??? ?gets(Testquestions[N].option4);
?? ??? ?printf("請輸入答案:");
?? ??? ?scanf("%c",&Testquestions[N].result);getchar();
?? ??? ?N++; ? ? ? ? ? ? ?//N表示結(jié)構(gòu)體數(shù)組長度,通過加&號使其值能返回
?? ??? ?return TRUE;
}

Status DeleteNode(int n)//刪除數(shù)組中的第n個元素?
{?? ?
?? ?return TRUE;
}
? ??
void printNode(TestNode p,int n)//輸出第n道題題目
{?? ?
?? ?printf("(%d) ",n);
?? ?printf("%s\n",p.subject);
?? ?printf(" ?A %s ?",p.option1);
?? ?printf(" ?B %s ?\n",p.option2);
?? ?printf(" ?C %s ?",p.option3);
?? ?printf(" ?D %s ?",p.option4);
}


Status ?Match(TestNode p,char m)//判斷m是否為p題目的答案,若是返回TRUE,否則返回ERROR
{?? ?
?? ?if(m==p.result) return TRUE;
?? ?else return ERROR;
}

void answer(int sum)//進行答題
{
??
?int i,score=0,Num;
?char r;
?? ??
?? ?for(i=1;i<=sum;i++)
?? ?{?? ?Num= rand()%sum; ? ? ? ? ? ? ? ?//隨機函數(shù),以隨機選定何題進行解答
? ? ? ? printNode(Testquestions[Num],Num+1);
?? ? ? ?printf("\n請輸入答案:");
?? ? ? ?scanf("%c",&r);getchar();
?? ??? ?if( Match(Testquestions[Num],r)) //調(diào)用函數(shù)IsMatch判斷所輸入的答案與標(biāo)準(zhǔn)答案是否相同
?? ??? ?{?? ?printf("\n答案正確!\n");
?? ??? ??? ?score++;
?? ??? ?}
?? ? ? ?else printf("\n答案錯誤!\n");
?? ?}
?? ?printf("\n你的總成績?yōu)?%d\n",score);
}

void main()
{?? ?char ?flag='N';
?? ?int N=0,i, sum,score=0,chose;
?
?? ?printf("輸入想建立的題目文件題目數(shù):");
?? ?scanf("%d",&N);getchar();
?? ?InputTitle(N);
?? ?ReadNode(N);
?? ?while(flag=='N'||flag=='n')
?? ?{ printf("\t\t\t單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)\n ");
? ? ? printf("\n");
?? ? ?printf(" ?\t\t\t1 進行答題并判卷\n");
?? ? ?printf(" ?\t\t\t2 顯示整張試卷內(nèi)容\n");
?? ? ?printf(" ?\t\t\t3 插入試題\n");
?? ? ?printf(" ?\t\t\t4 保存到文件\n");
?? ? ?printf(" ?\t\t\t5 退出系統(tǒng)\n");
?? ? ?printf(" ?\t\t\t ?請選擇:");
?? ? ?scanf("%d",&chose);getchar();
?? ? ?switch(chose)?
?? ? ?{?? ? ?case 1:system("cls");
?? ??? ?printf("請輸入你想要的答題數(shù)目:");
?? ??? ? ? scanf("%d",&sum);getchar();
?? ? ? ? ? answer(sum);
?? ??? ? ? break;
?? ? ? case 2:system("cls");
?? ??? ?for(i=1;i<=N;i++)?
?? ??? ?{ ? ? ?printNode(Testquestions[i-1],i);
?? ??? ??? ? ? printf("\n");
?? ??? ?} ??
?? ??? ?break;
?? ? ? case 3:system("cls");InsertNodeB(N);break;
?? ? ? case 4:system("cls");
?? ??? ?if(SaveNode(N)) printf("保存成功!\n");
?? ??? ? ?else printf("保存失敗!\n");break;
?? ? ? case 5:printf("你將退出系統(tǒng)(Y or N)?");
?? ??? ? ? scanf("%c",&flag);getchar();
?? ??? ? ? if(flag=='Y'||flag=='y') exit(0);
?? ??? ? ? system("cls");break;
?? ? ?default:printf("請輸入正確選擇!\n");
?? ? ?}
?? ?}
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Qt?5.9使用VTK顯示點云的詳解詳解

    Qt?5.9使用VTK顯示點云的詳解詳解

    這篇文章主要介紹了Qt?5.9使用VTK顯示點云,主要包括PCL安裝及在VS2013中使用PCL的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 詳談c++11 final與override說明符

    詳談c++11 final與override說明符

    下面小編就為大家?guī)硪黄斦刢++11 final與override說明符。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • Visual Studio Code上添加小程序自動補全插件的操作方法

    Visual Studio Code上添加小程序自動補全插件的操作方法

    這篇文章主要介紹了Visual Studio Code上添加小程序自動補全插件的操作方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 淺析char 指針變量char *=p 這個語句的輸出問題

    淺析char 指針變量char *=p 這個語句的輸出問題

    下面小編就為大家?guī)硪黄獪\析char 指針變量char *=p 這個語句的輸出問題。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • C++寫注冊表項實例

    C++寫注冊表項實例

    這篇文章主要介紹了C++寫注冊表項實例,可實現(xiàn)開機啟動的功能,是進行Windows桌面應(yīng)用程序開發(fā)中非常重要的技巧,需要的朋友可以參考下
    2014-10-10
  • C語言代碼中調(diào)用C++代碼的方法示例

    C語言代碼中調(diào)用C++代碼的方法示例

    這篇文章主要介紹了C語言代碼中調(diào)用C++代碼的方法示例,文中也介紹了C++代碼調(diào)用C代碼的方法,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • C語言實現(xiàn)學(xué)生成績等級劃分的方法實例

    C語言實現(xiàn)學(xué)生成績等級劃分的方法實例

    這篇文章主要給大家介紹了關(guān)于C語言實現(xiàn)學(xué)生成績等級劃分的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++數(shù)組模擬之單鏈表與雙鏈表和棧和隊列的實現(xiàn)過程

    C++數(shù)組模擬之單鏈表與雙鏈表和棧和隊列的實現(xiàn)過程

    這篇文章主要介紹了C++數(shù)組模擬之單鏈表與雙鏈表和棧和隊列的實現(xiàn)過程,了解內(nèi)部原理是為了幫助我們做擴展,同時也是驗證了一個人的學(xué)習(xí)能力,如果你想讓自己的職業(yè)道路更上一層樓,這些底層的東西你是必須要會的,跟隨下文來具體了解吧
    2023-02-02
  • C++快速冪與大數(shù)取模算法示例

    C++快速冪與大數(shù)取模算法示例

    這篇文章主要介紹了C++快速冪算法和大數(shù)取模算法的示例,對C++程序員來說有一定的幫助,有需要的朋友可以參考借鑒,下面來一起看看。
    2016-08-08
  • C++使用new和delete進行動態(tài)內(nèi)存分配與數(shù)組封裝

    C++使用new和delete進行動態(tài)內(nèi)存分配與數(shù)組封裝

    這篇文章主要介紹了C++使用new和delete進行動態(tài)內(nèi)存分配與數(shù)組封裝,運行期間才能確定所需內(nèi)存大小,此時應(yīng)該使用new申請內(nèi)存,下面我們就進入文章學(xué)習(xí)具體的操作方法,需要的小伙伴可以參考一下
    2022-03-03

最新評論

古浪县| 万年县| 舟山市| 柏乡县| 安康市| 舟山市| 宜章县| 临清市| 临湘市| 三门县| 客服| 沙河市| 电白县| 调兵山市| 德州市| 江华| 佛坪县| 克东县| 公安县| 弥勒县| 嘉义市| 神池县| 台安县| 贵阳市| 聂拉木县| 康定县| 彭州市| 旌德县| 虹口区| 清水县| 丹江口市| 犍为县| 大宁县| 日照市| 永清县| 孙吴县| 八宿县| 宽甸| 抚松县| 武穴市| 永寿县|