2-stm32 gpio位帶
任務1:
// ex1.cpp #include <stdio.h> #include <stdlib.h> int main(){ int a = 5, b = 7, c = 100, d, e, f; d = a/b*c; e = a*c/b; f = c/b*a; printf("d = %d, e = %d, f = %d, ", d, e, f); system("pause"); return 0; }
因為定義的a,b,c,d,e,f均為整型,所以當C語言從左往右進行運算時,所得的商將小數部分捨棄掉,就會出現現在的結果;
任務2:
// ex2.cpp #include <stdio.h> #include <stdlib.h> int main(){ int x = 1234; float f = 123.456; double m = 123.456; char ch = 'a'; char a[] = "Hello, world!"; int y = 3, z = 4; printf("%d %d\n", y, z); printf("y = %d, z = %d\n", y, z); printf("%8d,%2d\n", x, x); printf("%f, %8f, %8.1f, %0.2f, %.2e\n", f, f, f, f, f); printf("%lf\n", m); printf("%3c\n", ch); printf("%s\n%15s\n%10.5s\n%2.5s\n%.3s\n", a, a, a, a, a); system("pause"); return 0; }
%d :用來輸出十進位制整型資料的實際長度輸出;
\n :換行;
%8d :按照有符號十進位制整數格式輸出,輸出資料位寬為8,如果不足8位預設右對齊;
%2d :按照有符號十進位制整數格式輸出,輸出資料位寬為2,如果大於2位,按照原來資料的位寬輸出;
%f :以float型格式輸入或輸出變數的值預設保留6位小數;
%8f :按照float格式輸出,輸出資料位寬為8,保留6位小數,如果不足8位預設右對齊,如果大於8位,按照原來資料的位寬輸出;
%8.1f :按照float格式輸出,輸出資料位寬為8,保留1位小數,如果不足8位預設右對齊,如果大於8位,按照原來資料的位寬輸出;
%0.2f :按照float格式輸出,保留2位小數;
%.2e :以科學計數法形式輸出,保留兩位小數;
%lf :以double型格式輸入或輸出變數的值,保留6位小數;
%3c :按照字元型格式輸出,輸出資料位寬為3,如果不足3位預設右對齊,如果大於3位,按照原來資料的位寬輸出;
%s :按照字串型格式輸出;
%15s :按照字串型格式輸出,輸出資料位寬為15,如果不足15位預設右對齊,如果大於15位,按照原來資料的位寬輸出;
%10.5s :按照字串型格式輸出,輸出資料位寬為10,且只輸出字串的前5個字元,如果不足10位預設右對齊,如果大於10位,按照原來資料的位寬輸出;
%2.5s :按照字串型格式輸出,輸出資料位寬為2,且只輸出字串的前5個字元,如果不足2位預設右對齊,如果大於2位,按照原來資料的位寬輸出;
%.3s :按照字串型格式輸出,且只輸出字串的前3個字元
任務3:
// ex3.cpp #include <stdio.h> #include <stdlib.h> int main() { double x,y; char c1,c2,c3; int a1,a2,a3; scanf("%d%d%d",&a1, &a2, &a3); printf("%d,%d,%d\n",a1,a2,a3); scanf("%c%c%c", &c1, &c2, &c3); printf("\'%c\'\'%c\'\'%c\'\n",c1,c2,c3); scanf("%lf, %lf", &x, &y); printf("%.1lf, %.1lf\n", x, y); system("pause"); return 0; }
任務4:
// ex4.cpp // #include <stdio.h> #include <stdlib.h> int main() { char x; x = getchar(); if(x >= 48 && x<= 57) printf("%c是數字字元\n", x); else if(x >= 65 &&x <= 90 || x >= 97 && x <= 122) printf("%c是字母字元\n", x); else printf("%c是其他字元\n", x); system("pause"); return 0; }
任務5:
// ex5.cpp #include <stdio.h> #include <stdlib.h> int main() { char ans1, ans2; printf("複習了沒? (輸入y或Y表示複習了,輸入n或N表示沒複習) : "); ans1 = getchar(); // 從鍵盤輸入一個字元,賦值給ans1 getchar(); // 思考這裡為什麼要加這一行。試著去掉這一行,看看對執行有沒有影響。 printf("\n動手敲程式碼了沒? (輸入y或Y表示敲了,輸入n或N表示木有敲) : "); ans2 = getchar(); if((ans1 == 'y' || ans1 == 'Y') && (ans2 == 'y' || ans2 == 'Y')) // 待補足,判斷使用者回答ans1和ans2都是小寫y或大寫Y printf("\n羅馬不是一天建成的:)\n"); else printf("\n羅馬不是一天毀滅的。。。\n"); system("pause"); return 0; }
如果沒有getchar()這個函式,就無法執行第二個問題,應該是getchar()這個函式只能輸入一個字元,不知道說的對不對。
任務6:
// ex6.cpp #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ int a1 = 1, q = 2, n; double sum; scanf("%d", &n); sum = (a1*(1-pow(q,n)))/(1-q); printf("n = %d 時, sum = %.0lf", n, sum); system("pause"); return 0; }
實驗結論:通過這次實驗,我瞭解了多種函式的用法,收穫頗豐;但還是要多上機練習才可。