實驗一10.16
阿新 • • 發佈:2020-10-18
任務一
/*Trial1-A simple C program*/ #include<stdio.h> #include<stdlib.h> int main() { printf_s("my stuno is:202083450087\n2020,i will be better!\n"); system("pause"); return 0; }
任務二
//迴圈列印字元 #include <stdio.h> int main() { while (1) printf("0 1"); return0; }
while (1);改為while (0);後閃退
//迴圈列印字元 #include <stdio.h> int main() { while (1) printf("S10冠軍Tes"); return 0; }
任務三 math1
//用C語言實現的一個簡單算數運算程式 #include <stdio.h> #include <stdlib.h> int main() { int x, y; int r1, r2, r3, r4; x = 1; y = 2; r1= x + y; r2 = x - y; r3 = x * y; r4 = x / y; printf("r1 = %d\n", r1); printf("r2 = %d\n", r2); printf("r3 = %d\n", r3); printf("r4 = %d\n", r4); system("pause"); return 0; }
任務三 math2
//用C語言實現的一個簡單算數運算程式 #include <stdio.h> #include <stdlib.h> int main() {float x, y; float r1, r2, r3, r4; x = 1; y = 2; r1 = x + y; r2 = x - y; r3 = x * y; r4 = x / y; printf("r1 = %f\n", r1); printf("r2 = %f\n", r2); printf("r3 = %f\n", r3); printf("r4 = %f\n", r4); system("pause"); return 0; }
任務四
//測試你是哪一類學習者 #include <stdio.h> #include <stdlib.h> int main() { int answer; char words[5000]; printf("在家上學讓一些人歡喜一些人憂.\n"); printf("1. 作為一個宅,社恐,覺得這樣很好. 有網路,自主學習,很ok.\n"); printf("2. 不喜,不喜,很不喜. 眼睛快瞎了. 腦殼有點卡...\n"); printf("3. 中間派. 不知道. 說不清.\n"); printf("4. 其它...\n"); printf("你的選擇: "); scanf_s("%d", &answer); if (answer == 4) { printf("請補充說明你的想法: \n"); getchar(); gets_s(words); } printf("\n"); printf("當遇到問題時, 你會選擇:\n"); printf("1. 遇到問題, 就解決問題。不懂的,搜尋式學習,逐個攻破.\n"); printf("2. 遇到問題, 不高興。然後,...,沒有了.\n"); printf("3. 其它...\n"); printf("你的選擇: "); scanf_s("%d", &answer); if (answer == 1) printf(":)\n"); else if (answer == 2) printf("這樣不能解決問題啊...我們選擇1好不好:)\n"); else if (answer == 3) { printf("請補充說明你的想法: \n"); getchar(); gets_s(words); } system("pause"); return 0; }
實驗筆記:
1.在任務4中,“scanf()”與“gets()”會被報錯,改為“scanf_s()”與“gets_s()”編譯成功。
原因:①scanf()不會檢查輸入邊界,可能造成資料溢位。scanf_s()會進行邊界檢查。
②gets()可以無限讀取,易發生溢位。如果溢位,多出來的字元將被寫入到堆疊中,這就覆蓋了堆疊原先的內容,破壞一個或多個不相關變數的值,由於可以無限讀取,所以在2011年12月,ANSI 採納了 ISO/IEC 9899:2011 標準,標準中刪除了 gets()函式,使用一個新的更安全的函式gets_s()替代
2.在任務4中,問題2選擇2後會閃退,不會顯示“選1好不好...”,加入的system("pause");不能放在函式else if下
實驗總結:
在熟練掌握C語言中各種函式意義、資料型別的同時不斷練習程式設計,出錯、試錯才能更好的學習、運用C語言。