Part 1html
1、格式化輸出函數printf()算法
/*《C語言程序設計教程學習指導》p118 實驗內容(1) 這是一個經常使用格式控制符使用示例 運行程序,結合運行結果,對照每一行printf()中的格式控制符,理解其功能和用法*/ #include <stdio.h> int main() { int x = 1234; float f = 123.456; double m = 123.456; char ch = 'a'; char a[] = "Hello, world!";// 定義一個數組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); return 0; }
簡單分析:編程
①轉換說明及其打印的輸出效果數組
②修飾符函數
2、格式化輸入函數scanf() 學習
/*C語言程序設計教程學習指導》p119 實驗內容(2) 這是一個格式化輸入輸出函數及格式符使用練習 找出兩處錯誤,修改並運行程序 爲a1,a2,a3,c1,c2,c3,x,y輸入數據,使得: a1=1,a2=2,a3=3,c1='a',c2='b',c3='c', x=1.5, y=2.5*/ #include <stdio.h> int main() { double x, y; char c1, c2, c3; int a1, a2, a3; scanf_s("%d%d%d", &a1, &a2, &a3); printf("%d,%d,%d\n", a1, a2, a3); scanf_s("%c%c%c", &c1, &c2, &c3); printf("%c%c%c\n", c1, c2, c3); scanf_s("%lf,%lf", &x, &y); printf("%f,%lf\n", x, y); return 0; }
簡單分析:本程序中加了下劃線並加粗的即是修改的的地方,涉及到了scanf()中的利用&讀取地址 和 精度問題。測試
其中&有點牽扯到了之後要學的 指針 問題,但就目前所學來講,記住如下兩點便可:spa
2. 若是用scanf()把字符串讀入字符數組中,不要使用&設計
! ! ! ! ! ! ! !3d
對於printf(),%f通殺單精度和雙精度
對於scanf(),%f和%lf纔有區別:
scanf,它接受指針,經過指針向float存儲和向double存儲大不同
double對應%lf
float對應%f
Part 2
3、單個字符輸出函數putchar()
/*putchar()能夠用於在屏幕上輸出單個字符 括號中要給出想要輸出的字符參數,參數能夠是字符型常量/變量/表達式 若是使用這個函數,須要在程序前面加上#include <stdio.h> */ #include <stdio.h> int main() { char ch; ch = 'A'; putchar(ch); // 參數ch是字符型變量 putchar(ch+32); // 參數ch+32是字符型表達式 putchar('\x41'); // 參數是字符型常量,是用十六進制表示的轉義字符 putchar('\n'); // 參數\n是字符型常量,是轉義字符,表示換行 return 0; }
簡單分析:前三個putchar()便是經過運行程序來輸出三個字符,而且咱們能夠看到輸出A,a的不一樣表示形式。
4、單個字符輸入函數getchar()
/*getchar()能夠用於從鍵盤上輸入單個字符 括號中不須要參數 若是輸入成功,函數會返回用戶從鍵盤輸入的字符 若是使用這個函數,須要在程序前面加上#include <stdio.h> */ #include <stdio.h> int main() { char ch; ch = getchar(); // 用戶從鍵盤輸入字符,若是輸入成功,輸入的字符被賦值給ch putchar(ch); // 使用putchar()輸出字符變量ch中存放的字符 printf("%c", ch); // 使用printf()和格式符%c輸出單個字符 return 0; }
簡單分析:本程序利用兩種方式來輸出字符,這是一種比較,咱們能夠從中體會到一種算法優越性。
即——因爲getchar()和putchar()只處理字符,因此他們比更通用的scanf()和printf()函數更快,更簡潔!
注意getchar()和putchar()不須要轉化說明,由於他們只處理字符。且這兩個函數一般定義在stdio.h頭文件中。
Part 3
5、if語句
①單分支if語句
/* 單分支if語句使用示例 從鍵盤上輸入兩個整數分別給a和b 若是a>b,就交換,使得a裏面存放小的數,b裏面存放大的數 */ #include <stdio.h> int main() { int a, b; int t; // 用於交換a和b時,做爲中間變量 printf("輸入兩個整數給a和b:\n"); scanf_s("%d%d", &a, &b); if (a > b) { t = a; a = b; b = t; } printf("a=%d, b=%d\n", a, b); return 0; }
②雙分支if語句
/*二分支if語句使用示例 從鍵盤上輸入一個整數給n,判斷n是奇數仍是偶數*/ #include <stdio.h> int main() { int n; printf("輸入一個整數給n:\n"); scanf_s("%d", &n); if (n % 2) printf("n是奇數.\n"); else printf("n是偶數.\n"); return 0; }
③多分支if語句
/*多分支if語句示例 輸入1,2,3...的不一樣整數,顯示不一樣提示信息*/ #include <stdio.h> int main() { int level; printf("輸入如今狀態等級(1-5): "); scanf_s("%d", &level); if (level == 1) printf("high翻了:)\n"); else if (level == 2) printf("low爆了:(\n"); else printf("一言難盡,沒法歸納。。。\n"); return 0; }
Part 4
6、switch語句
/*switch語句使用示例 輸入1,2,3...的不一樣整數,顯示不一樣提示信息*/ #include <stdio.h> int main() { int level; printf("輸入如今狀態等級(1-5): "); scanf_s("%d", &level); switch (level) { case 1: printf("high翻了:)\n"); break; case 2: printf("low爆了:(\n"); break; default: printf("一言難盡,沒法歸納。。。\n"); } return 0; }
PS:以上是正常程序,下面分別是對break語句做用進行摸索:
①只去掉第一個break語句
②只去掉第二個break語句
③同時去掉兩個break語句
Part 5
7、簡單編程小練習
要求:用戶從鍵盤輸入一個答案選項(A,B,C,D之一),若是用戶答案是'A',則輸出提示信息"Binggo, you are right~",不然輸出提示信息"try again~"。
①利用if語句
#include <stdio.h> int main() { char ch; printf("請輸入你的答案(A,B,C or D):"); scanf_s("%c", &ch); if (ch == 'A') printf("binggo,you are right~"); else printf("try again~"); return 0; }
②利用switch語句
#include <stdio.h> int main() { char ch; printf("請輸入你的答案(A,B,C or D):"); scanf_s("%c", &ch); switch (ch) { case 'A': printf("binggo,you are right~"); break; default: printf("try again~"); break; } return 0; }
Part 6
8、實驗總結與體會
①對於printf()和scanf(),最重要的是要記清楚他們的轉換說明和修飾符!!!具體的詳見Part 1
②對於if語句:
使用測試條件控制程序是否執行條件後面的一條簡單語句或複合句。若是測試表達式的值是非零值,則執行語句;若值是零,則不執行語句。
③對於switch語句:
能夠在一系列以整數做爲標籤的語句中進行選擇。若是緊跟在switch關鍵字後的測試條件的整數值與某標籤匹配,程序就轉至執行匹配的標籤語句,而後在遇到break以前,繼續執行標籤語句後的語句。
④一處疑惑:
這裏是直接利用老師給的源代碼運行的,機房能夠正常運行,可是在VS2017發現有錯誤,通過網上查閱,大多數建議定義入口點爲WinMainCRTStartup,但實際操做無效果
以後發現新建文件時,沒有給出擴展文件名.cpp。以後重命名,居然成功運行??!!
望各位大佬幫忙分析分析_|~|○
orz→小膜拜 OTZ→大膜拜 囧rz→ 囧膜拜 STO→反膜拜
以上即是個人本次做業,感謝閱讀~
PS:給別人的評論
https://www.cnblogs.com/weiyuyang/p/10623037.html
https://www.cnblogs.com/super123-/p/10622606.html
https://www.cnblogs.com/zxy-345/p/10639762.html