C 語言經典編程題實戰:從基礎算法到趣味問題全解析

????????在 C 語言學習過程中,通過實戰編程題鞏固知識點是非常有效的方式。本文整理了一系列經典 C 語言編程題,涵蓋基礎計算、邏輯判斷、圖形打印等多個維度,并附上完整代碼與解析,適合初學者參考學習

上機題

1.

計算n以內所有正奇數的和 ? n值通過鍵盤輸入

代碼:

/*************************************************************************> File Name:    demo04.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 15時19分09秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int num = 0;int i = 1;int n;printf("請輸入數字:");scanf("%d",&n);while(i < n){if(i % 2 != 0 )num += i;          i++;}printf(" %d 以內所有正奇數和為: %d\n",n,num);return 0;
}

運行結果:

2.

計算 1 + 1/(2 * 3) + 1/(3 * 4) + …+ 1/(n * (n + 1)) = ?直到最后一相值小于0.00001為 止

代碼:

/*************************************************************************> File Name:    demo05.c> Author:       qianxi> Description:  > Created Time: 2025年07月16日 星期三 18時15分43秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{float i = 2;float sum=0;float n=0;for(;1 / (i * (i + 1)) > 0.00001; i++){n = 1 / (i * (i + 1));sum += n;}printf("這個式子的答案是:%f\n",sum+1);return 0;
}

運行結果:

3.

計算1+1/2 - 1/3 + 1/4 - 1/5 …+1/n= ? n通過鍵盤輸入(int k = -1)

代碼:

/*************************************************************************> File Name:    demo06.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 19時02分32秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i = 1;float sum1,sum2;int x;float sum = 0;printf("請輸入正整數:");/*if(scanf("%d",&x) != 1 || x <= 0){printf("請輸入一個正整數。\n");return 1;}
*/scanf("%d",&x);while(i <= x){if(i % 2 == 0){sum1 +=1.0 / i;}else {sum2 += 1.0 / i;}i++;}sum = sum1-sum2+2;printf("這個式子的值為:%.6f\n",sum);return 0;
}

運行結果:

4.

計算n的階乘 ? n! = 123…*n n值通過鍵盤輸入

代碼:

/*************************************************************************> File Name:    demo07.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 21時40分18秒************************************************************************/#include <stdio.h>
#include <math.h>int main(int argc,char *argv[])
{unsigned long n;size_t r = 1;printf("請輸入一個整數:");scanf("%lu",&n);for(int i = 1; i <= fabs(n); i++) r *=i;printf("1~%lu的階乘為%lu\n",(size_t)fabs(n),r);return 0;
}

運行結果:

5.

輸出半徑為1~10的圓面積,面積大于100時停止

代碼:

/*************************************************************************> File Name:    demo10.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 23時53分40秒************************************************************************/#include <stdio.h>
#define PI 3.1415926int main(int argc,char *argv[])
{double area;for (int r = 1; r <= 10;r++){area = PI * r * r;if (area > 100){break;}printf("半徑為%d的圓的面積為:%lf\n",r,area);}return 0;
}

運行結果:

6

求輸入的十個整數中正數的個數及其平均值

代碼:

/*************************************************************************> File Name:    demo08.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 22時34分46秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int a;int b = 0;double sum = 0;printf("請輸入十個數字:");for(int i = 1; i <= 10;i++){scanf("%d",&a);if(a > 0){b++;sum +=a;}}printf("10個數中的正整數個數為%d個,平均值為%.2lf\n",b,sum/b);return 0;
}

運行結果:

7

打印出100以內能整除7之外的的自然數

代碼:

/*************************************************************************> File Name:    demo09.c> Author:      千夕> Description:  > Created Time: 2025年07月16日 星期三 23時19分29秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("100以內不能整除7的數為:");for(int i = 1; i <= 100; i++){if(i % 7 != 0){printf("%d ",i);}}printf("\n");return 0;
}

運行結果:

8

打印乘法表

代碼:

/*************************************************************************> File Name:    demo11.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 23時59分57秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("=======九九乘法表=======\n");for(int i = 1;i <=9 ;i++){for( int j = 1; j <= i;j++){printf("%d×%d=%d\t",j,i,j*i);}printf("\n");}printf("\n");return 0;
}

運行結果:

9

我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值 錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?

代碼:

/*************************************************************************> File Name:    test5.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 19時46分44秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("百錢買百雞問題\n");printf("-----------------\n");for(int x = 0;x <= 100; x++){for(int y = 0; y <= 100 - x;y++){for(int z = 0;z <= 100 - x - y;z++){if(x + y + z == 100 && 5 * x + 3 * y + z / 3 == 100)printf("%d\t%d\t%d\n",x,y,z);}}}return 0;
}

運行結果:

10

從鍵盤上輸入多個無符號整型數據,直到 0 結束 ,輸出所輸入數據中的最大值。

代碼:

/*************************************************************************> File Name:    test2.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 09時59分09秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{unsigned num,max = 0;while(1){scanf("%u",&num);if(num == 0){break;}else if(num > max){max = num;}}printf("最大值是:%u\n",max);return 0;
}

運行結果:

思考題

1

判斷一個數是不是回文數。(回文數是指正序(從左向右)和倒序(從右向左)讀都是 一樣的整數。如:12321

代碼:

/*************************************************************************> File Name:    test6.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 20時02分53秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int num,originalNum,n = 0,x;printf("請輸入數字:");scanf("%d",&num);originalNum = num;for (;num != 0;){x = num % 10;n = n * 10 + x;num /= 10;}num = originalNum;if(originalNum == n)printf("這串數字是回文數\n");else printf("這串數字不是回文數\n");return 0;
}

運行結果:

2

通過鍵盤錄入一個整數,判斷這個整數是否是水仙花數。

代碼:

/*************************************************************************> File Name:    test4.c> Author:      千夕> Description:  > Created Time: 2025年07月17日 星期四 19時22分30秒************************************************************************/#include <stdio.h>
#include <math.h>
int main(int argc,char *argv[])
{int num, originalNum,n=0,sum=0;printf("請輸入整數:");scanf("%d",&num);originalNum = num;while(num != 0){num /= 10;n++;}num = originalNum;while(num != 0){int digit = num % 10;sum += pow(digit,n);num /= 10;}if (sum == originalNum)printf("%d是水仙花數\n",originalNum);elseprintf("%d不是水仙花數\n",originalNum);return 0;
}

運行結果:

擴展題

使用 * 在控制臺分別打印上直角三角形、下直角三角形,上等腰三角形、下等腰三角 形、菱形、平行四邊形。

①上直角三角形代碼:

/*************************************************************************> File Name:    demo7.c> Author:      千夕> Description:  > Created Time: 2025年07月17日 星期四 20時55分11秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j;for(i = 0;i <=5;i++){for(j = 0;j <= i;j++){printf("*");}printf("\n");}return 0;
}

運行結果:

②下直角三角形代碼:

/*************************************************************************> File Name:    demo8.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 21時17分35秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int x,y;for (x=5;x >= 0;x--){for (y = 0; y <= x ;y++)printf("*");printf("\n");}return 0;
}

運行結果:

③上等腰三角形代碼:

/*************************************************************************> File Name:    demo09.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 22時06分10秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j,space;for(i = 1;i<=5;i++){for(space = 1;space <= 5 - i; space++){printf(" ");}for(j = 1;j<=2*i -1;j++){printf("*");}printf("\n");}return 0;
}

運行結果:

④下等腰三角形代碼:

/*************************************************************************> File Name:    demo10.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 22時31分07秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j,space;for(i = 5;i >=1 ; i--){for(space = 1;space <= 5-i;space++){printf(" ");}for(j = 1;j <= 2*i-1;j++){printf("*");}printf("\n");}return 0;
}

運行結果:

⑤菱形代碼:

/*************************************************************************> File Name:    demo11.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 22時52分29秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{   int i,j,space;for(i = 1;i<= 5;i++){for(space = 1;space<=5-i;space++){printf(" ");}for(j = 1;j<=2*i-1;j++){printf("*");}printf("\n");}for(i = 4 ;i>=1;i--){for(space = 1;space<=5-i;space++){printf(" ");}for(j = 1;j<=2*i-1;j++){printf("*");}printf("\n");}return 0;
}

運行結果:

⑥平行四邊形代碼:

/*************************************************************************> File Name:    demo12.c> Author:      千夕> Description:  > Created Time: 2025年07月17日 星期四 23時05分45秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j,space;for(i=1;i<=5;i++){for(space = 1;space<=5-i;space++)printf(" ");for(j=1; j<=5;j++){printf("*");}printf("\n");}return 0;
}

運行結果:

總結

????????本文涵蓋的編程題涉及 C 語言基礎語法(循環、條件判斷、數組等)和算法邏輯,通過這些實例可以加深對 C 語言的理解與應用。實際編程中,需注意變量初始化、邊界條件處理及數據類型選擇,避免出現邏輯錯誤或溢出問題。初學者可在此基礎上嘗試優化代碼,如增加輸入校驗、擴展功能等,提升編程能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89864.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89864.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89864.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Chapter 3 Design of Switching Power Regulators

Chapter 3 Design of Switching Power Regulators Power Management Techniques for Integrated Circuit Design by Ke-Horng Chen 這本書比較深, 簡單介紹基本概念后, 就直接拋出大段公式和結論, 一章講其他書幾章內容, 適合有一定基礎, 想進一步做電源系統的人查閱. 優點是不…

算法題(176):three states

審題&#xff1a; 本題需要我們找到最佳鋪設道路&#xff0c;將三個國家聯通起來&#xff0c;然后輸出最佳鋪設道路的鋪設數量&#xff0c;若沒有聯通方法則輸出-1 思路&#xff1a; 首先我們正面思考&#xff1a;只需從某個點出發然后搜索到三個國家即可&#xff0c;最后對比所…

BIOS+MBR微內核加載loader程序實現過程

上一篇講到的微內核程序是由BIOS例程自動加載到內存中運行的,而且大小有限,能做的事情有限。我們知道內核程序大小是可以擴展的不能只有512字節,同時在加載運行內核前還需要完成一些必要的實模式下才能做的準備工作。所以單純在實模式下只使用微內核程序是不太夠的,就有了加…

使用Proxy設計模式來增強類的功能:ToastProxy和DesktopToast的設計關系

使用代理模式來增強類的功能&#xff1a;ToastProxy和DesktopToast Documentation: v1.0.0 Specified for Version v1.12.0&#xff0c;First Release in 2025/7/12 Documenation belongs to Projects: Charliechen114514/CCIMXDesktop: This is a Simple Desktop with Common …

瑞芯微2025開發者大會之見聞

序言本人參加了2025年的瑞芯微開發者大會&#xff0c;在展覽區看到了很多有意思的音視頻產品&#xff0c;下面按照產品類型分類給大家做一下展示。期間并沒有將所有展出物進行拍攝&#xff0c;但是基本已經覆蓋大部分內容。1、RK3566該芯片內置DSP音頻處理器&#xff0c;藍牙5.…

【最新】Java的幾種設計模式詳解及適用業務場景

? 1. 單例模式&#xff08;Singleton&#xff09; 定義&#xff1a;確保類只有一個實例&#xff0c;并提供全局訪問點。優點&#xff1a;節省資源、控制訪問。場景&#xff1a;數據庫連接池、日志管理器、配置中心。代碼要點&#xff1a; 構造方法私有靜態變量保存唯一實例公共…

單鏈表的手動實現+相關OJ題

目錄 鏈表的介紹 單鏈表的手動實現 單鏈表的基本框架 打印鏈表&#xff1a; 獲取表長&#xff1a; 頭插法新增節點&#xff1a; 尾插法新增節點&#xff1a; 在指定下標插入&#xff1a; 鏈表的查找 刪除鏈表中第一個出現的key&#xff1a; 刪除鏈表中所有key值 鏈表…

梯度提升之原理

簡介 梯度提升主要是基于數學最值問題 數學描述 目標函數為 obj(θ)∑i1nl(yi,y^i(t))∑k1tw(fk)obj(\theta) \sum_{i1}^n l(y_i, \hat y_i^{(t)}) \sum_{k1}^t w(f_k)obj(θ)i1∑n?l(yi?,y^?i(t)?)k1∑t?w(fk?) 其中ttt表示集成的樹的個數&#xff0c;y^i(t)y^i(t?1)…

[學習] Hilbert變換:從數學原理到物理意義的深度解析與仿真實驗(完整實驗代碼)

Hilbert變換&#xff1a;從數學原理到物理意義的深度解析與仿真實驗 文章目錄Hilbert變換&#xff1a;從數學原理到物理意義的深度解析與仿真實驗一、數學原理二、作用與物理意義1.構造解析信號2.相位移動特性3.應用場景三、仿真實驗實驗1&#xff1a;正弦信號的Hilbert變換實驗…

對話弋途科技:當AI重構汽車大腦,一場車載操作系統的“覺醒年代“開始了

&#xff08;圖片來源&#xff1a;Pixels&#xff09;站在未來看歷史&#xff0c;AI汽車剛剛開始。數科星球原創作者丨苑晶編輯丨大兔當特斯拉的自動駕駛仍在全球引發爭議時&#xff0c;中國智能汽車戰場已悄然開啟第二幕。從"四個輪子的大手機"到"移動智能空間…

?機器學習量化交易模型全面剖析報告基于因子庫的機器學習交易模型構建指南

目錄 第一章&#xff1a;機器學習在加密貨幣量化交易中的應用概述 范式轉變&#xff1a;從傳統因子到機器學習驅動的策略 為什么選擇機器學習&#xff1f;機遇、挑戰與核心概念 機遇 挑戰 核心概念 第二章&#xff1a;為機器學習準備您的因子庫 理解量化因子作為機器學…

內容創作智能體:多模態內容生成的完整解決方案

內容創作智能體&#xff1a;多模態內容生成的完整解決方案 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用代碼丈量世界&…

測試學習之——Pytest Day4

Pytest作為Python中功能強大且易于使用的測試框架&#xff0c;深受開發者喜愛。它不僅提供了簡潔的測試編寫方式&#xff0c;還通過豐富的配置選項、靈活的標記機制和強大的數據驅動能力&#xff0c;極大地提升了測試效率和可維護性。本文將深入探討Pytest的配置意義與層級、常…

【軟件系統架構】系列七:系統性能——路由器性能深入解析

目錄 一、路由器的核心功能 二、路由器性能核心指標 1. 吞吐量&#xff08;Throughput&#xff09; 2. 并發連接數&#xff08;Session Capacity&#xff09; 3. 每秒連接數&#xff08;CPS&#xff0c;Connections Per Second&#xff09; 4. 轉發延遲&#xff08;Laten…

【數據結構】第一講 —— 概論

【數據結構】第一講 —— 概論 文章目錄【數據結構】第一講 —— 概論1.1 基本概念和常用術語1.2 了解數據結構1. 數據結構2. 數據的邏輯結構3. 數據的物理結構&#xff08;存儲結構&#xff09;4. 數據的運算1.3 算法的描述和分析1.3.1 算法的描述1.3.21.1 基本概念和常用術語…

全面解析MySQL(2)——CRUD基礎

1.CreateCreate(創建)&#xff1a;添加新數據到數據庫中#基礎語法 insert into table_name (column1,column2,column3, ...) values (value1,value2,value3, ...);1.1 單行全列插入value中值的數量和順序必須和column?致describe demo1; -----------------------------------…

某外企筆試總結——純C語言

這里寫自定義目錄標題一、sizeof 計算&#xff08;32位環境&#xff09;二、簡答題三、數據存儲區域與可修改性四、字符串比較輸出及原因五、數組指針運算輸出六、字符串倒序代碼錯誤排查七、下面程序可以把1維數組轉為2維數組&#xff0c;然后調用 printArr2D 打印出數組內容&…

Qt Graphs 模塊擬取代 charts 和 data visualization還有很長的路要走

近期關注 Qt 6.10 的分支進展&#xff0c; 發現了 Qt 6.10 的 charts 和 data visualization &#xff08;以下簡稱 DV&#xff09;已經被deprecated, 功能將會合并到 graphs 模塊。如果后面 charts\ DV 被棄用&#xff0c;那算是很大的API變化了。從Qt 6.5 以后開始引入的 gra…

2025牛客暑期多校訓練營2(部分補題)

題目鏈接&#xff1a;牛客競賽_ACM/NOI/CSP/CCPC/ICPC算法編程高難度練習賽_牛客競賽OJ B Bitwise Perfect 思路 考慮到由&#xff0c;那么只有變小的時候對答案的貢獻才能夠減少&#xff0c;從二進制的角度考慮什么時候變小&#xff0c;只有min(x,y)中的最高位1異或之后變…

Nginx的location匹配規則

Nginx的location匹配規則 為什么你的Nginx配置總是不生效&#xff1f; 改了Nginx配置無數次&#xff0c;reload命令執行了幾十遍&#xff0c;瀏覽器訪問時卻依然返回404&#xff1f;運維工程師小張上周就遇到了這個問題&#xff1a;明明配置了location /static/ { root /var/ww…