作業二:個人程式設計項目——四則運算
本周的作業題目要求:
編寫一個自動生成國小四則運算題目的程式
程式設計環境:
程式設計語言選擇了C#,程式設計軟體選擇了Visual Studio 2015
程式設計思路:
在看到題目首先想到了使用Random()這個随機方法進行随機産生數字,同時加減乘除四個運算符用0、1、2、3這個四個數字表示,也通過随機方法生成,在列印輸出時再進行判斷輸出成相應的數學符号。我将題目分成了幾個階段進行編寫,分别為整數階段、分數階段、混合階段和優化階段。
階段一:
需要注意的部分是在C#語言中Random()在使用時随機生成的數字是小于你所輸入的數字的。為了友善使用同時加入了設定了出題數目與最大值範圍的語句,通過使用者的輸入進行設定,在接收時C#語句預設接收的為String
源代碼
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
void DealFenshu(int m, int a[][2])
{
for(int p=0;p<m;p++)
{
int i=(int)rand()%10;
int j=(int)rand()%10;
while(j==0||i>=j)
{
i=(int)rand()%10;
j=(int)rand()%10;
}
int x=(int)rand()%10;
int y=(int)rand()%10;
while(y==0||x>=y)
{
x=(int)rand()%10;
y=(int)rand()%10;
}
int k=(int)rand()%100/25;
switch(k)
{
case 0:
cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
a[p][0]=i*y+x*j;
a[p][1]=j*y;
break;
case 1:
cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
a[p][0]=i*y-x*j;
a[p][1]=j*y;
break;
case 2:
cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
a[p][0]=i*x;
a[p][1]=j*y;
break;
case 3:
a[p][0]=i*y;
a[p][1]=j*x;
cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
}
if(p%5==4)
{
cout<<endl;
}
else
{
cout<<'\t';
}
}
}
void DisplayFenshu(int a[][2],int w,int m)
{
if(w==1)
{
for(int q=0;q<m;q++)
{
if(a[q][0]==0)
cout<<"0"<<'\t';
else
cout<<a[q][0]<<"/"<<a[q][1]<<'\t';
if(q%5==4)
{
cout<<endl;
}
}
}
}
void DealInt(int m,int a[])
{
for(int p=0;p<m;p++)
{
int i=(int)rand()%10;
int j=(int)rand()%10;
int k=(int)rand()%100/25;
switch(k)
{
case 0:
cout<<i<<"+"<<j<<"=";
a[p]=i+j;
break;
case 1:
cout<<i<<"-"<<j<<"=";
a[p]=i-j;
break;
case 2:
cout<<i<<"*"<<j<<"=";
a[p]=i*j;
break;
case 3:
try
{
a[p]=i/j;
cout<<i<<"/"<<j<<"=";
}
catch(...)
{
p--;
}
}
if(p%5==4)
{
cout<<endl;
}
else
{
cout<<'\t';
}
}
}
void DisplayInt(int a[],int w,int m)
{
if(w==1)
{
for(int q=0;q<m;q++)
{
cout<<a[q]<<'\t';
if(q%5==4)
{
cout<<endl;
}
}
}
else
{};
}
int main()
{
int p;
do
{
system("cls");
int a[1000],b[1000][2];
int m,n,w;
cout<<"請輸入生成的四則運算題個數:";
cin>>m;
cout<<endl;
cout<<"請輸入要生成的四則運算種類(輸入1為整數,否則為真分數):";
cin>>n;
cout<<endl;
if(n==1)
{
DealInt(m,a);
cout<<endl;
}
else
{
DealFenshu(m,b);
cout<<endl;
}
cout<<"是否輸出答案(輸入1則輸出答案否則不輸出答案)"<<endl;
cin>>w;
if(n==1)
{
DisplayInt(a,w,m);
}
else
{
DisplayFenshu(b,w,m);
}
cout<<endl;
cout<<"是否繼續生成運算題(輸入1則生成否則不生成)"<<endl;
cin>>p;
cout<<endl;
}while(1==p);
}
程式運作截圖

總結
通過本次課程設計,使我對這門課程有了更深入的了解。這是一門實踐性較強的課程,為了學好這門課程,必須在掌握理論知識的同時,加強上機實踐。一個人的力量是有限的,要想把課程設計做的更好,就要學會參考一定的資料,吸取别人的經驗,讓自己和别人的思想有機的結合起來,得出屬于你自己的靈感。
程式的編寫需要有耐心,有些事情看起來很複雜,但問題需要一點一點去解決,分析問題,把問題一個一個劃分,劃分成小塊以後就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。
在這個過程中,我也曾經因為實踐經驗的缺乏失落過,也曾經仿真成功而熱情高漲。生活就是這樣,汗水預示着結果也見證着收獲。勞動是人類生存生活永恒不變的話題。雖然這隻是一次的極簡單的課程制作,可是平心而論,也耗費了我不少的心血,這就讓我不得不佩服開發技術的前輩,才意識到老一輩對我們社會的付出,為了人們的生活更美好,他們為我們社會所付出多少心血對我而言,知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學無止境的道理。我們每一個人永遠不能滿足于現有的成就,人生就像在爬山,一座山峰的後面還有更高的山峰在等着你。挫折是一份财富,經曆是一份擁有。這次課程設計必将成為我人生旅途上一個非常美好的回憶!
通過這次的課程設計我對于專業課的學習有了更加深刻的認識,以為現在學的知識用不上就加以怠慢,等到想用的時候卻發現自己的學習原來是那麼的不紮實。以後努力學好每門專業課,讓自己擁有更多的知識,才能解決更多的問題!