跳到主文
部落格全站分類:心情日記
這是視窗程式設計的作業一 趁題目還很簡單的時候 來給他瘋一下 以後就沒機會這麼玩了@@話說 寫完整個就超有成就感的說XD
/* 視窗程式設計第1次作業_4098056061_戴均民_v1.cpp DeadLine: 99/10/18 Type: C++/CLI */ #include "stdafx.h" #include <cstdlib> // 為了使用 system() 函式需要使用 cstdlib 的標頭檔 using namespace System; int main()// 在此程式中 main 不須有參數,故刪除 { Random rand; // 宣告亂數物件 array<String^>^ num={"zero","one","two","three","four","five","six","seven","eight","nine"}; // 直接宣告一個對應表 以避免使用 if 或 switch // array<String^> num[10]={...} 無法編譯成功,勿用!! std::system("title 按下 Enter 鍵可以生產亂數喔 ~ 若非只輸入 Enter 則程式會自動結束"); // 利用 cmd 指令來更改程式執行時的視窗標題 // 因為 system() 不屬於 namespace System,故前面須加上 std:: // system() 函式不可給予 L"..." 的字串!! Console::Write(L"按下 Enter 鍵可以生產亂數喔 ~"); // 為了排版美觀,這裡不用 WriteLine() 換行,利用 ReadLine() 產生的換行即可 // 為了讓程式可以一直產生亂數,故使用迴圈 // 同時,這個迴圈也可讓程式不要馬上結束,以便使用者觀看結果 // 為了要讓程式能在若非只按 Enter 的話程式就自動結束了,故加了 =="" 的判斷式 while(Console::ReadLine()=="") { Int32 a=(static_cast<Int32> (rand.NextDouble()*89999))+10000,b=0; // 有關亂數的用法在書的 P220 // 在書上的用法是先宣告指標再 gcnew 一個新變數,我在這裡是直接宣告 // 老師題目只要求超過一萬,故我的程式決定只生成五位數的亂數 // rand.NextDouble() 只會生成一個介於 0~1 之間的亂數 // 乘上 89999 後,亂數範圍介於 0~89999 之間 // 最後 再強制轉型為 Int32 之後,再加上 10000 即可保證亂數一定是五位數 // 換句話說,就是介於 10000~99999 之間的亂數 Console::Write(L"{0} -> ",a); // 輸出這個亂數的阿拉伯數字型態 // 為了想要取出某個位數,又不想多宣告一個陣列 // 故利用 %10 來取出個位數,然後再用 /10 以便下一次迴圈可以讀到十位數 // 但是這種取法,只能從最小位元開始取數字,故先做一次翻轉的動作 // 地下的這個 for 迴圈,會將如 12345 的數字轉成 54321 // 利用剛剛已經預先歸零的變數 b 來將 a 的數字翻轉 for(Int32 i=0;i<5;i++) { b*=10; // 先將 b 乘以十是為了要挪出個位數的空間 b+=a%10; // 將 b 加上 a 的個位數 (即 a%10 的結果) a/=10; // 將 a 除以十是為了下一次迴圈可以讀到在這一次迴圈中的十位數 } // 將原本的亂數 a 翻轉之後,a 的值應該已經為零 (因為作了五次 a/=10;) // 翻轉後的值會存在 b 之中,一樣在使用迴圈取出其個位數 // 然後直接將這個個位數對應到轉換表內 // 並且馬上將轉換表的結果利用 Write 輸出 // 在這裡一樣為了美觀,故不使用 WriteLine 來換行 // 在英文字之間輸出 \t 對齊輸出會比較好看 for(Int32 i=0;i<5;i++) { Console::Write(L"{0}\t",num[b%10]); b/=10; // 將 b 除以十是為了下一次迴圈可以讀到在這一次迴圈中的十位數 } } return 0; } // 加了好多註解,好累 = = // 下次不這麼玩了
亂貼小站
和風信使 發表在 痞客邦 留言(0) 人氣()