12個(gè)C語言必背實(shí)例分享
1.十進(jìn)制數(shù)轉(zhuǎn)換二進(jìn)制數(shù)
實(shí)例代碼
// #include "stdio.h" int main(){ int m, n, k;//定義變量 int a[16] = { 0 }; printf("請輸入一個(gè)0~32767之間的數(shù)字:\n"); scanf("%d", &n); printf("十進(jìn)制數(shù)%d轉(zhuǎn)換為二進(jìn)制數(shù)是:\n", n); for (int i = 0; i < 15; ++i) {//for循環(huán)從0-14,最高位為符號(hào)位,本例始終為0 m = n % 2;//取2的余數(shù) k = n / 2;//取被2整除的結(jié)果 n = k; a[i] = m;//將余數(shù)存入數(shù)組a數(shù)組中 } for (int i = 15; i >=0 ; i--) {//for循環(huán)將數(shù)組中的16個(gè)元素從后往前輸出 printf("%d", a[i]); if (i % 4 == 0) {//每輸出4個(gè)元素,輸出一個(gè)空格 printf(" "); } } }
運(yùn)行結(jié)果:
程序分析
本實(shí)例比較簡單,而且注釋也比較詳細(xì),這里需要注意的是第二個(gè)for循環(huán)是從后往前輸出15~0
,因?yàn)榈谝粋€(gè)for循環(huán)對2取余的結(jié)果存入數(shù)組時(shí)是從a[0]
開始存儲(chǔ)的。
2.判斷某一年是否為閏年
實(shí)例代碼
// // Created by 沖哥 on 2020/9/7. // #include "stdio.h" int main(){ int year;//定義整形變量year printf("請輸入要查詢的年份:\n"); scanf("%d", &year);//從鍵盤輸入要查詢的年份 if ((year % 4 == 0 && year % 100 !=0) || year % 400 == 0) {//判斷是否為閏年的條件 printf("%d年這一年是閏年\n", year); } else { printf("%d年這一年不是閏年\n", year); } }
運(yùn)行結(jié)果:
程序分析
今天分享的也是一個(gè)入門級(jí)實(shí)例,從鍵盤輸入一個(gè)表示年份的整數(shù),判斷該年份是否為閏年。該實(shí)例的要點(diǎn)就是判斷閏年的算法:(year % 4 == 0 && year % 100 !=0) || year % 400 == 0
3.使用*打印平行四邊形
實(shí)例代碼
// #include "stdio.h" int main(){ char arr[5] = {'*','*','*','*','*'}; for (int i = 0; i < 5; i++) {//輸出5行 for (int j = 1; j <= i; j++) { printf(" ");//輸出空格的數(shù)量隨著行數(shù)的變化而變化 } for (int k = 0; k < 5; k++) { printf("%c", arr[k]);//輸出數(shù)組中的元素 } printf("\n");//輸出一行后換行 } }
運(yùn)行結(jié)果:
程序分析
本實(shí)例的要點(diǎn)就是理解三個(gè)for循環(huán)
第一個(gè)for循環(huán)控制整個(gè)圖形的行數(shù),本實(shí)例中的圖形共5行,所以i的范圍為0~4。
第二個(gè)for循環(huán)用來控制空格的數(shù)量。
第三個(gè)for循環(huán)用將數(shù)組a中的元素逐個(gè)輸出。
4.在控制臺(tái)打印出著名的楊輝三角
實(shí)例代碼
// #include "stdio.h" int main(){ int a[8][8]={0};//初始化數(shù)組(本實(shí)例打印8行) for (int i = 0; i < 8; i++) {//for循環(huán)定義每行的第一個(gè)數(shù)和對角線上的數(shù),數(shù)值為1 a[i][i] = 1; a[i][0] = 1; } for (int k = 2; k < 8; k++) { for (int j = 1; j < k; j++) {//用兩個(gè)for循環(huán)實(shí)現(xiàn)除對角線和每行第一個(gè)元素外其他元素的賦值 a[k][j] = a[k-1][j-1] + a[k-1][j]; } } for (int i = 0; i < 8; i++) { for (int j = 0; j <= i; j++) {//兩個(gè)for循環(huán)將數(shù)組a中的所有元素輸出 printf("%d\t", a[i][j]); } printf("\n"); } }
程序分析
首先要分析楊輝三角的特點(diǎn),找出規(guī)律:
處理每行第一個(gè)數(shù)和對角線上的數(shù)都是1意外,其它的數(shù)就是前一行相鄰的兩數(shù)之和。找到這個(gè)規(guī)律,就可以很輕松的用for循環(huán)實(shí)現(xiàn)了。
5.實(shí)現(xiàn)投票統(tǒng)計(jì)功能
實(shí)例代碼
//實(shí)現(xiàn)功能:某次選舉,共有3個(gè)候選人, //輸入?yún)⒓舆x舉的人數(shù)及每個(gè)人選舉的內(nèi)容,輸出3個(gè)候選人最終的得票數(shù)及無效選票數(shù) // #include "stdio.h" int main(){ int NO1 = 0; int NO2 = 0; int NO3 = 0; int b = 0; int n, a[50]; printf("請輸入?yún)⒓舆x舉的人數(shù):\n");//最大50 scanf("%d", &n); printf("請給候選人投票,1或2或3\n"); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } for (int i = 0; i < n; i++) { if (a[i] == 1) { NO1++; } else if (a[i] == 2) { NO2++; } else if (a[i] == 3) { NO3++; } else { b++; } } printf("投票結(jié)果如下:\n"); printf("一號(hào)選手:%d票\n二號(hào)選手:%d票\n三號(hào)選手:%d票\n無效票數(shù):%d\n", NO1, NO2, NO3, b); }
運(yùn)行結(jié)果:
程序分析
輸入?yún)⒓舆x舉的人數(shù),再輸入每個(gè)人的選舉內(nèi)容并將其存入數(shù)組中。對存入數(shù)組中的元素進(jìn)行判斷,統(tǒng)計(jì)出各個(gè)候選人的票數(shù)和無效的票數(shù)。
6.交換數(shù)組中最大數(shù)和最小數(shù)的位置
實(shí)例代碼
// //實(shí)現(xiàn)功能:交換數(shù)組中最大數(shù)和最小數(shù)的位置 // #include "stdio.h" int main(){ int a[10]; int max, min; int m, n; printf("請輸入10個(gè)數(shù)字:\n"); for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } printf("輸入的10個(gè)數(shù)是:\n"); for (int i = 0; i < 10; i++) { printf("%4d", a[i]); } printf("\n"); max = a[0]; for (int i = 0; i < 10; i++) { if (a[i] > max) { max = a[i]; m = i; } } min = a[0]; for (int i = 0; i < 10; i++) { if (a[i] < min) { min = a[i]; n = i; } } a[m] = min; a[n] = max; printf("交換最大數(shù)和最小數(shù)的位置后:\n"); for (int i = 0; i < 10; i++) { printf("%4d", a[i]); } } // // Created by 沖哥 on 2020/9/13. //實(shí)現(xiàn)功能:交換數(shù)組中最大數(shù)和最小數(shù)的位置 // #include "stdio.h" int main(){ int a[10];//定義數(shù)組 int max, min;//定義最大值和最小值 int m, n;//定義最大值和最小值的位置 printf("請輸入10個(gè)數(shù)字:\n"); for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } printf("輸入的10個(gè)數(shù)是:\n"); for (int i = 0; i < 10; i++) { printf("%4d", a[i]); } printf("\n"); max = a[0]; for (int i = 0; i < 10; i++) { if (a[i] > max) { max = a[i];//找最大值 m = i; } } min = a[0]; for (int i = 0; i < 10; i++) { if (a[i] < min) { min = a[i];//找最小值 n = i; } } a[m] = min; a[n] = max; printf("交換最大數(shù)和最小數(shù)的位置后:\n"); for (int i = 0; i < 10; i++) { printf("%4d", a[i]); } }// // Created by 沖哥 on 2020/9/13. //實(shí)現(xiàn)功能:交換數(shù)組中最大數(shù)和最小數(shù)的位置 // #include "stdio.h" int main(){ int a[10];//定義數(shù)組 int max, min;//定義最大值和最小值 int m, n;//定義最大值和最小值的位置 printf("請輸入10個(gè)數(shù)字:\n"); for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } printf("輸入的10個(gè)數(shù)是:\n"); for (int i = 0; i < 10; i++) { printf("%4d", a[i]); } printf("\n"); max = a[0]; for (int i = 0; i < 10; i++) { if (a[i] > max) { max = a[i];//找最大值 m = i; } } min = a[0]; for (int i = 0; i < 10; i++) { if (a[i] < min) { min = a[i];//找最小值 n = i; } } a[m] = min; a[n] = max; printf("交換最大數(shù)和最小數(shù)的位置后:\n"); for (int i = 0; i < 10; i++) { printf("%4d", a[i]); } }
運(yùn)行結(jié)果:
程序分析
首先找到數(shù)組中的最大值和最小值,記錄它們的位置,然后交換位置,最后將交換后的數(shù)組輸出。
7.反轉(zhuǎn)字符串
實(shí)例代碼
// //實(shí)現(xiàn)功能:輸入一個(gè)字符串,然后將該字符串反向輸出 // #include "stdio.h" #include "string.h" #define N 50 void convert_str(char str[N]); void convert_str(char str[N]){ int j; char temp; for (int i = 0; i < strlen(str)/2; i++) { j = strlen(str) - 1; temp = str[i]; str[i] = str[j - i]; str[j - i] = temp; } printf("反向輸出:%s", str); } int main(){ char str[N]; printf("請輸入字符串:\n"); gets_s(str, N); printf("輸入的字符串為:%s\n", str); convert_str(str); }
運(yùn)行結(jié)果:
程序分析
注意:實(shí)例中有這樣一個(gè)語句j = strlen(str) - 1;
這里j為什么是j = strlen(str) - 1;
而不是strlen(str)
呢?原因如下:如果數(shù)組s中含有10個(gè)元素,那么它的長度為10,而s的數(shù)組下標(biāo)從0開始那么下標(biāo)的最大值為9,j這里是代表數(shù)組下標(biāo),所以開始時(shí)的最大值應(yīng)是strlen(str)-1
也就是9。
8.使用goto語句從循環(huán)中跳出
實(shí)例代碼
// // Created by 沖哥 on 2020/9/15. //實(shí)現(xiàn)功能:使用goto語句從循環(huán)中跳出 // #include "stdio.h" #define EXIT 0 void show_Menu(){ printf("菜單選項(xiàng):\t"); printf("1:顯示\t"); printf("2:添加\t"); printf("3:查詢\t"); printf("4:刪除\t"); printf("0:退出\n"); } int main(){ int num; show_Menu(); for (int i = 1; i < 10; i++) { printf("第%d此循環(huán)\n", i); do { printf("請輸入菜單選項(xiàng):\n"); scanf("%d", &num); if (num == EXIT){ goto exit; } printf("****************菜單功能部分****************\n"); } while (num < 4); } exit: printf("程序退出!\n"); return 0; }
運(yùn)行結(jié)果:
程序分析
goto語句后面會(huì)有一個(gè)標(biāo)識(shí)符goto exit;
當(dāng)程序滿足goto條件時(shí),程序就會(huì)直接跳轉(zhuǎn)到標(biāo)識(shí)符位置。
9.計(jì)算字符串中單詞的個(gè)數(shù)
實(shí)例代碼
// //實(shí)現(xiàn)功能:計(jì)算字符串中單詞的個(gè)數(shù) // #include "stdio.h" #define LEN 100 int main(){ char str[LEN]; int index; char blank; int words = 1; printf("請輸入字符串:\n"); gets_s(str, LEN); if (str[0] == '\0') { printf("輸入的字符串為空\n"); } else if (str[0] == ' ') { printf("輸入的字符串的第一個(gè)字符是空格\n"); } else { for (int i = 0; str[i] != '\0'; ++i) { blank = str[i]; if (blank == ' ') { words++; } } printf("輸入的字符串中有%d個(gè)單詞\n", words); } }
運(yùn)行結(jié)果:
程序分析
用for循環(huán)遍歷字符數(shù)組,然后判斷是不是結(jié)尾\0
,如果不是,就判斷是不是空格,是空格的話,單詞數(shù)加1.
10.控制臺(tái)打印系統(tǒng)的日期和時(shí)間
實(shí)例代碼
// //實(shí)現(xiàn)功能:控制臺(tái)打印系統(tǒng)的日期和時(shí)間 // #include "stdio.h" #include "time.h" int main(){ struct tm *sysTime;//定義結(jié)構(gòu)體,用于存放日期和時(shí)間 time_t sysDay; time(&sysDay);//獲取系統(tǒng)日期 sysTime = localtime(&sysDay);//轉(zhuǎn)換為系統(tǒng)日期 printf("系統(tǒng)日期:%d-%d-%d\n", 1900 + sysTime->tm_year, sysTime->tm_mon + 1, sysTime->tm_mday); printf("系統(tǒng)時(shí)間:%d:%d:%d\n", sysTime->tm_hour, sysTime->tm_min, sysTime->tm_sec); return 0; }
運(yùn)行結(jié)果:
程序分析
本實(shí)例主要掌握系統(tǒng)日期和時(shí)間的獲取方法。
11.將3個(gè)數(shù)由大到小的順序輸出
實(shí)例代碼
// //實(shí)現(xiàn)功能:輸入三個(gè)整數(shù),然后按由大到小的順序輸出 // #include "stdio.h" void swap(int *pa, int *pb){ int temp; temp = *pa; *pa = *pb; *pb = temp; } void compare(int *pa, int *pb, int *pc){ if (*pa < *pb) { swap(pa, pb); } if (*pa < *pc) { swap(pa, pc); } if (*pb, *pc) { swap(pb, pc); } } int main(){ int a, b, c, *pa, *pb, *pc; printf("請輸入三個(gè)數(shù):\n"); scanf("%d%d%d", &a, &b, &c); pa = &a; pb = &b; pc = &c; compare(pa, pb, pc); printf("%d\t%d\t%d\n", a, b, c); return 0; }
運(yùn)行結(jié)果
程序分析
還記不記得之前講過的傳址和傳值,這里就用到了傳址。
12.模擬用戶名登陸
實(shí)例代碼
// //實(shí)現(xiàn)功能:模擬用戶名登陸 #include "stdio.h" #include "string.h" int main(){ char user_name[20] = {"zhangsan"}; char password[7]={"123456"}; char name[20], pwd[20]; int i = 0; while (i < 3) { printf("請輸入用戶名:\n"); gets_s(name, 20); printf("請輸入密碼:\n"); gets_s(pwd, 7); if (strcmp(user_name, name) != 0) { printf("您好,您輸入的用戶名有誤!請重新輸入:\n"); } else { if (strcmp(password, pwd) != 0) { printf("您好,您輸入的密碼有誤!請重新輸入:\n"); } else { printf("歡迎使用!\n"); break; } } i++; } if (i == 3) { printf("輸入錯(cuò)誤已達(dá)3次,賬號(hào)被鎖定!\n"); } }
運(yùn)行結(jié)果
正常系
D:\Users\source\C\Test0823\cmake-build-debug\Test0823.exe
請輸入用戶名:
zhangsan
請輸入密碼:
123456
歡迎使用!
Process finished with exit code 0
異常系
D:\Users\source\C\Test0823\cmake-build-debug\Test0823.exe
請輸入用戶名:
zhang
請輸入密碼:
123456
您好,您輸入的用戶名有誤!請重新輸入:
請輸入用戶名:
zhangsan
請輸入密碼:
1234
您好,您輸入的密碼有誤!請重新輸入:
請輸入用戶名:
zhangs
請輸入密碼:
123
您好,您輸入的用戶名有誤!請重新輸入:
輸入錯(cuò)誤已達(dá)3次,賬號(hào)被鎖定!
Process finished with exit code 0
程序分析
本實(shí)例中使用到了字符串的比較函數(shù)strcmp(str1, str2);
,這個(gè)函數(shù)的功能是按照ASCII碼順序比較兩個(gè)字符串,并由返回值返回比較結(jié)果。
str1 = str2 返回值為0
str1 > str2 返回值大于0
str1 < str2 返回值小于0
到此這篇關(guān)于12個(gè)C語言必背實(shí)例分享的文章就介紹到這了,更多相關(guān)C語言實(shí)例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++語法詳解之封裝、構(gòu)造函數(shù)、析構(gòu)函數(shù)
這篇文章主要介紹了C++語法詳解之封裝、構(gòu)造函數(shù)、析構(gòu)函數(shù)的相關(guān)知識(shí),通過實(shí)例代碼給大家詳細(xì)介紹,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03C++ 實(shí)現(xiàn)靜態(tài)鏈表的簡單實(shí)例
這篇文章主要介紹了C++ 實(shí)現(xiàn)靜態(tài)鏈表的簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06C語言詳解實(shí)現(xiàn)猜數(shù)字游戲步驟
猜數(shù)字是興起于英國的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來實(shí)現(xiàn)這個(gè)游戲案例2022-07-07