欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

二、功能展示

三、思維導(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檢測(cè)文件是否結(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("請(qǐng)輸入第%d道題題目、題干和選項(xiàng):\n",i+1);//輸入結(jié)構(gòu)體元素內(nèi)容
?? ??? ?printf("請(qǐng)輸入題目:");
?? ? ? ?gets(Testquestions[i].subject);
?? ??? ?printf("請(qǐng)輸入選項(xiàng)A:");
?? ??? ?gets(Testquestions[i].option1);
?? ??? ?printf("請(qǐng)輸入選項(xiàng)B:");
?? ??? ?gets(Testquestions[i].option2);
?? ??? ?printf("請(qǐng)輸入選項(xiàng)C:");
?? ??? ?gets(Testquestions[i].option3);
?? ??? ?printf("請(qǐng)輸入選項(xiàng)D:");
?? ??? ?gets(Testquestions[i].option4);
?? ??? ?printf("請(qǐng)輸入答案:");
?? ??? ?scanf("%c",&Testquestions[i].result);getchar();
?? ??? ?system("cls"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//清屏
?? ?}
}

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


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

Status DeleteNode(int n)//刪除數(shù)組中的第n個(gè)元素?
{?? ?
?? ?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)//進(jìn)行答題
{
??
?int i,score=0,Num;
?char r;
?? ??
?? ?for(i=1;i<=sum;i++)
?? ?{?? ?Num= rand()%sum; ? ? ? ? ? ? ? ?//隨機(jī)函數(shù),以隨機(jī)選定何題進(jìn)行解答
? ? ? ? printNode(Testquestions[Num],Num+1);
?? ? ? ?printf("\n請(qǐng)輸入答案:");
?? ? ? ?scanf("%c",&r);getchar();
?? ??? ?if( Match(Testquestions[Num],r)) //調(diào)用函數(shù)IsMatch判斷所輸入的答案與標(biāo)準(zhǔn)答案是否相同
?? ??? ?{?? ?printf("\n答案正確!\n");
?? ??? ??? ?score++;
?? ??? ?}
?? ? ? ?else printf("\n答案錯(cuò)誤!\n");
?? ?}
?? ?printf("\n你的總成績(jī)?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單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)\n ");
? ? ? printf("\n");
?? ? ?printf(" ?\t\t\t1 進(jìn)行答題并判卷\n");
?? ? ?printf(" ?\t\t\t2 顯示整張?jiān)嚲韮?nèi)容\n");
?? ? ?printf(" ?\t\t\t3 插入試題\n");
?? ? ?printf(" ?\t\t\t4 保存到文件\n");
?? ? ?printf(" ?\t\t\t5 退出系統(tǒng)\n");
?? ? ?printf(" ?\t\t\t ?請(qǐng)選擇:");
?? ? ?scanf("%d",&chose);getchar();
?? ? ?switch(chose)?
?? ? ?{?? ? ?case 1:system("cls");
?? ??? ?printf("請(qǐng)輸入你想要的答題數(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("請(qǐng)輸入正確選擇!\n");
?? ? ?}
?? ?}
}

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

相關(guān)文章

  • 手把手教你如何優(yōu)化C語言程序

    手把手教你如何優(yōu)化C語言程序

    程序進(jìn)行優(yōu)化,通常是指優(yōu)化程序代碼或程序執(zhí)行速度。優(yōu)化代碼和優(yōu)化速度實(shí)際上是一個(gè)予盾的統(tǒng)一,一般是優(yōu)化了代碼的尺寸,就會(huì)帶來執(zhí)行時(shí)間的增加,如果優(yōu)化了程序的執(zhí)行速度,通常會(huì)帶來代碼增加的副作用,很難魚與熊掌兼得,只能在設(shè)計(jì)時(shí)掌握一個(gè)平衡點(diǎn)
    2013-07-07
  • uboot添加自定義命令的實(shí)現(xiàn)步驟

    uboot添加自定義命令的實(shí)現(xiàn)步驟

    uboot 屬于bootloader的一種,是用來引導(dǎo)啟動(dòng)內(nèi)核的,它的最終目的就是從flash中讀出內(nèi)核,放到內(nèi)存中,啟動(dòng)內(nèi)核,這篇文章主要介紹了uboot添加自定義命令的實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2022-11-11
  • Cocos2d-x學(xué)習(xí)筆記之Hello World源碼分析

    Cocos2d-x學(xué)習(xí)筆記之Hello World源碼分析

    這篇文章主要介紹了Cocos2d-x學(xué)習(xí)筆記之Hello World源碼分析,接上一篇內(nèi)容,本文著重分析源碼文件,需要的朋友可以參考下
    2014-09-09
  • C++ Qt開發(fā)之ComboBox下拉組合框組件用法詳解

    C++ Qt開發(fā)之ComboBox下拉組合框組件用法詳解

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中,ComboBox(組合框)是一種常用的用戶界面控件,它提供了一個(gè)下拉列表,允許用戶從預(yù)定義的選項(xiàng)中選擇一個(gè),本文給大家介紹QComboBox類的一些常用方法,需要的朋友可以參考下
    2023-12-12
  • C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解

    C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解

    本文主要介紹了適合當(dāng)圖像的直方圖具有明顯單峰特征時(shí)使用,結(jié)合了三角法的原理而設(shè)計(jì)的圖像分割方法,感興趣的小伙伴可以了解一下
    2021-12-12
  • C語言菜鳥基礎(chǔ)教程之?dāng)?shù)據(jù)類型

    C語言菜鳥基礎(chǔ)教程之?dāng)?shù)據(jù)類型

    在 C 語言中,數(shù)據(jù)類型指的是用于聲明不同類型的變量或函數(shù)的一個(gè)廣泛的系統(tǒng)。變量的類型決定了變量存儲(chǔ)占用的空間,以及如何解釋存儲(chǔ)的位模式。
    2017-10-10
  • C語言中sscanf()函數(shù)的字符串格式化用法

    C語言中sscanf()函數(shù)的字符串格式化用法

    這篇文章介紹的是C語言中sscanf()函數(shù),本文介紹了sscanf()函數(shù)的含義與用法,對(duì)大家日常使用C語言的sscanf()函數(shù)很有幫助,有需要的可以參考借鑒。
    2016-08-08
  • OpenCV霍夫變換(Hough Transform)直線檢測(cè)詳解

    OpenCV霍夫變換(Hough Transform)直線檢測(cè)詳解

    這篇文章主要為大家詳細(xì)介紹了OpenCV霍夫變換直線檢測(cè)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 簡(jiǎn)單實(shí)現(xiàn)C語言2048游戲

    簡(jiǎn)單實(shí)現(xiàn)C語言2048游戲

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單實(shí)現(xiàn)C語言2048游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C++實(shí)現(xiàn)LeetCode(144.二叉樹的先序遍歷)

    C++實(shí)現(xiàn)LeetCode(144.二叉樹的先序遍歷)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(144.二叉樹的先序遍歷),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論