日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小学生测验

發布時間:2025/3/12 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小学生测验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于這段代碼:

  • 數據存放在一個叫data的文件中
  • 增加了結構體排序,對小學生們的成績排名
  • 其他要求如同題干

?大一時寫的版本,沒文件讀寫,大三時寫的在下面。

項目一 小學生測驗?????????16學時

問題描述:面向小學1~2年級學生,隨機選擇兩個整數的加減法形成算式要求學生解答。

1.基本要求

(1)電腦隨機出10道題,每題10分,程序結束時顯示學生得分;

(2)確保算式沒有超出1~2年級的水平,只允許進行50以內的加減法,不允許兩數之和或差超出0~50的范圍,負數更是不允許的;

(3)每道題學生有三次機會輸入答案,當學生輸入錯誤答案時,提醒學生重新輸入,如果三次機會結束則輸出正確答案;

(4)對于每道題,學生第一次輸入正確答案得10分,第二次輸入正確答案得7分,第三次輸入正確答案得5分,否則不得分;

?(5)總成績90以上顯示“SMART”,80-90顯示“GOOD”,70-80顯示“OK”,60-70顯示“PASS”,60以下“TRY AGAIN”

?

#include<iostream> #include<stdlib.h> #include<math.h> #include<stdio.h> #include<time.h> using namespace std;typedef struct node {int jiajian;int num1;int num2;int trytimes; }specific; specific informat[10];void changesi(int p){if(p==0)cout<<"+";if(p==1)cout<<"-";}int getgrade(int m)//把做錯的次數轉換成應得的分數return {if(m==0)return 10;if(m==1)return 7;if(m==2)return 5;if(m==3)return 0; }int suijishu(int &a,int &b,int &c,int t) { int a1,b1; do { a1=rand()%50; b1=rand()%50; }while(!(a1+b1>=0&&a1+b1<=50&&a1-b1>=0&&a1-b1<=50)); informat[t].num1=a=a1; informat[t].num2=b=b1; informat[t].jiajian=c=rand()%2; return 0; } void show_rank(int sum) {cout<<endl<<endl;cout<<"總分:"<<sum<<endl;if(sum>=90)cout<<"Rank:SMART"<<endl; else if(sum<90&&sum>=80)cout<<"Rank:GOOD"<<endl; else if(sum<80&&sum>=70)cout<<"Rank:OK"<<endl; else if(sum<70&&sum>=60)cout<<"Rank:PASS"<<endl; else cout<<"please TRE AGAIN"<<endl; }int main() { srand(time(NULL));cout<<"----------------------------pupil exercise system---------------------------- " <<endl; int t=1,cnt=0,sum=0,a,b,c,ans; while(t<=10) { cout<<"this is the "<<t<<" question"<<endl; suijishu(a,b,c,t); while(cnt<=3) { if(c==0)//add { printf("%d+%d=",a,b); scanf("%d",&ans); if(a+b==ans) { cout<<"Right"<<endl; break; } else { cnt++; cout<<"Wrong!!"<<endl; if(cnt==3) { //cnt++; cout<<"anwser:"<<a+b<<endl; break; } } } else if(c==1) { printf("%d-%d=",a,b); scanf("%d",&ans); if(a-b==ans) { cout<<"Right"<<endl; break; } else { cnt++; cout<<"Wrong!!"<<endl; if(cnt==3) { cout<<"anwser is:"<<a-b<<endl; break; } } } } informat[t].trytimes=cnt;if(cnt==0)sum+=10; if(cnt==1)sum+=7; if(cnt==2)sum+=5; t++; cnt=0; cout<<endl<<endl; cout<<"--------------------------------------------------------------------- " <<endl; } show_rank(sum);cout<<endl<<endl;for(int i=1;i<=10;i++){cout<<"第"<<i<<"題:"<<informat[i].num1;changesi(informat[i].jiajian);cout<<informat[i].num2<<"=";if(informat[i].jiajian==0)cout<<informat[i].num1+informat[i].num2<<endl;else if(informat[i].jiajian==1)cout<<informat[i].num1-informat[i].num2<<endl;cout<<"你錯了"<<informat[i].trytimes<<"次,得了"<<getgrade(informat[i].trytimes); cout<<"分"<<endl; } //getchar();getchar(); }

大三時重寫的版本,有文件讀寫,有排序

小學生測驗系統
面向小學1~2年級學生,隨機選擇兩個整數和加減法形成算式要求學生解答。
功能要求:
(1)電腦隨機出10道題,每題10分,程序結束時顯示學生得分并記錄該學生的名稱;
(2)確保算式沒有超出1~2年級的水平,只允許進行50以內的加減法,不允許兩數之和或之差超出0~50的范圍,負數更是不允許的;
(3)每道題學生有三次機會輸入答案,當學生輸入錯誤答案時,提醒學生重新輸入,如果三次機會結束則輸出正確答案;
(4)對于每道題,學生第一次輸入正確答案得10分,第二次輸入正確答案得7分,第三次輸入正確答案得5分,否則不得分;
(5)總成績90以上顯示“SMART”,80-90顯示“GOOD”,70-80顯示“OK”,60-70顯示“PASS”,60以下“TRY?AGAIN”
(6)?根據得分高低排序顯示所有用戶的成績;
(7)用戶輸入名稱,獲得其得分信息。
?????????(二)其它要求:
(1)只能使用C/C++語言,源程序要有適當的注釋,使程序容易閱讀
(2)至少采用文本菜單界面(如果能采用圖形菜單界面更好)
(3)學生可自動增加新功能模塊(視情況可另外加分)
(4)寫出課程設計報告,具體要求見相關說明文檔

部分運行截圖,因為沒有積分了,所以設置的積分下載,沒有的話可以私信我。

#include<iostream> #include<stdlib.h> #include<math.h> #include<stdio.h> #include<time.h> #include<fstream> using namespace std;int UserNumber=0;//所有用戶數 typedef struct node {int jiajian;//1代表加法,0代表減法 int num1;int num2;int ans;int trytimes;//錯誤次數,0是直接做對,十分。1為錯誤一次,七分。2為錯誤兩次,五分。錯了三次,不得分。 int sum; }question; question que[11];//問題結構體,用來保存生成的測試的問題 typedef struct node1 {string name;int grade; }StudentItem; StudentItem temp;//當前學生的情況 StudentItem StudentList[300];//打開文件之后用這個來維護考過試的學生的信息 string changeaddsub(int op)// 把代表加法減法的1或0轉成字符串 {string str1="+";string str0="-";if(op==1)return str1;else return str0;}void ShowRank(int mark)//顯示成績的等級 {if(mark>90)cout<<"SMART"<<endl;else if(mark>80)cout<<"GOOD"<<endl;else if(mark>60)cout<<"Pass"<<endl;else cout<<"TRY AGAIN"<<endl; getchar();getchar(); }int suiji(question &quee) //隨機生成數字,初始化一個題目的結構體 { int a1,b1; do { a1=rand()%50; b1=rand()%50; }while(!(a1+b1>=0&&a1+b1<=50&&a1-b1>=0&&a1-b1<=50)); quee.num1=a1; quee.num2=b1; quee.jiajian=rand()%2;if(quee.jiajian==1) quee.ans=a1+b1;else quee.ans=a1-b1;quee.trytimes=0; quee.sum=0;return 0; } void InitQuestion()//初始化問題 {srand(time(NULL));for(int i=0;i<=10;i++){suiji(que[i]);} }//對每一題測試過程 void EachQsestionText(question &quee,int t) {int tempinput;int cnt=0;system("cls");cout<<"當前是第"<<t<<"個題目:"<<endl;cout<<quee.num1<<changeaddsub(quee.jiajian)<<quee.num2<<"=___"<<endl<<"請輸入你的答案:";cin>>tempinput;if(tempinput==quee.ans){quee.sum+=10;return;}else quee.trytimes++;system("cls");cout<<"你輸錯了一次,請重新嘗試"<<endl;cout<<quee.num1<<changeaddsub(quee.jiajian)<<quee.num2<<"=___"<<endl<<"請輸入你的答案:";cin>>tempinput;if(tempinput==quee.ans){quee.sum+=7;return;}else quee.trytimes++;system("cls");cout<<"你輸錯了兩次,請重新嘗試"<<endl;cout<<quee.num1<<changeaddsub(quee.jiajian)<<quee.num2<<"=___"<<endl<<"請輸入你的答案:";cin>>tempinput;if(tempinput==quee.ans){quee.sum+=5;return;}else quee.trytimes++;system("cls");cout<<"你輸錯了三次,答案是"<<quee.ans<<endl<<"輸入任意鍵進入下一題";getchar();getchar();return; }void SortUser()//在這個里面對所有用戶進行排序 {StudentItem t;for(int i=0;i<UserNumber-1;i++){for(int j=0;j<UserNumber-1-i;j++){if(StudentList[j].grade < StudentList[j+1].grade){t.name=StudentList[j].name;t.grade=StudentList[j].grade;StudentList[j].name=StudentList[j+1].name;StudentList[j].grade=StudentList[j+1].grade;StudentList[j+1].name=t.name;StudentList[j+1].grade=t.grade;}}}} void SaveFile()//保存用戶信息到文件 { ofstream fout("data",ios::out);if(!fout){ printf("errror!\n"); exit(-1); } SortUser();fout<<UserNumber<<endl;for(int i=0;i<UserNumber;i++){fout<<StudentList[i].name<<" "<<StudentList[i].grade<<" ";}fout.close(); } //一個人的測驗過程 ,做十題 int EachPersonTest() {InitQuestion();//初始化問題//測試過程控制,for(int i=1;i<=10;i++){EachQsestionText(que[i],i);temp.grade+=que[i].sum;}//對 StudentItem temp維護 string studentname;system("cls");cout<<"請輸入你的姓名"<<endl; cin>>temp.name;StudentList[UserNumber].name=temp.name;StudentList[UserNumber].grade=temp.grade;UserNumber++;SortUser();SaveFile();ShowRank(temp.grade);} //顯示所有的成績 ,先讀出文件里的信息, int ShowAllGrades() {system("cls");cout<<"共"<<UserNumber<<"個用戶"<<endl; for(int i=0;i<UserNumber;i++){cout<<StudentList[i].name<<"的成績 "<<StudentList[i].grade<<endl;}getchar();getchar();} //主要的交互界面 int Menu() {system("cls");cout<<"請選擇功能:"<<endl;cout<<"1.進入測試"<<endl;cout<<"2.顯示其所有人的的成績"<<endl;cout<<"3.成績查詢"<<endl;cout<<"4.退出"<<endl;int mode;do{cin>>mode;}while(mode>4|mode<1);return mode;} //輸入人名,從文件里查詢成績信息,從上至下,找到匹配的利用id輸出成績 void QueryGrade() {system("cls");string name;cout<<"請輸入要查詢的姓名"<<endl;cin>>name;for(int i=1;i<UserNumber;i++){if(name==StudentList[i].name){system("cls");cout<<name<<"的成績"<<StudentList[i].grade<<endl;getchar();getchar();return; }}system("cls");cout<<name<<" "<<"查無此人"<<endl; getchar();getchar(); }void ReadFile()//讀文件到結構體 {ifstream fin("data",ios::in);if(!fin){cout<<"error"<<endl;exit(-1);}fin>>UserNumber;for(int i=0;i<UserNumber;i++){fin>>StudentList[i].name>>StudentList[i].grade;}fin.close();}void Welcome()//歡迎界面 {cout<<"-------------------------歡迎使用小學生測驗系統----------------------------"<<endl; cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" Created By @@@@@ "<<endl; cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<"##########################回車鍵進入使用###################################"<<endl;getchar(); }int main(){ReadFile();Welcome();while(1)//選擇功能 {int mode=Menu();switch(mode){case 1:EachPersonTest();break;case 2:ShowAllGrades();break;case 3:QueryGrade();break;case 4:exit(1);}}}

用devc++來編譯

要在.exe文件夾下有一個名為data的文件

格式為

第一個是數字(總人數),之后姓名和分數用空格隔開

總結

以上是生活随笔為你收集整理的小学生测验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。