C Primer Plus 第6版 編程練習——第9章(下)

7.編寫一個函數,從標準輸入中讀取字符,直到遇到文件結尾。程序要報告每個字符是否是字母。如果是,還要報告該字母在字母表中的數值位置。例如,c和C在字母表中的位置都是3。合并一個函數,以一個字符作為參數,如果該字符是一個字母則返回一個數值位置,否則返回-1。

int char_is_letter(char ch)
{int pos = -1;if(ch >= 'a' && ch <= 'z')pos = ch - 'a' + 1;else if(ch >= 'A' && ch <= 'Z')pos = ch - 'A' + 1;return pos;
}
int main()
{system("chcp 65001");char ch;while ((ch = getchar()) != EOF){int pos = char_is_letter(ch);if (char_is_letter(ch) != -1){printf("輸入的字母是:%c, 在字母表中的位置是%d\n", ch, pos);}else{char printChar[4] = { 0 };if(ch == '\n')sprintf_s(printChar, "\\n");else if(ch == '\r')sprintf_s(printChar, "\\r");else if(ch == '\t')sprintf_s(printChar, "\\t");else if(ch < 32)sprintf_s(printChar, "^%c", ch + 'A');elsesprintf_s(printChar, "%c", ch);printf("輸入的%s不是字母!\n", printChar);}}return 0;
}


8.第6章的程序清單6.20中,power()函數返回一個double類型數的正整數次冪。改進該函數,使其能正確計算負冪。另外,函數要處理0的任何次冪都為0,任何數的0次冪都為1(函數應報告0的0次冪未定義,因此把該值處理為1)。要使用一個循環,并在程序中測試該函數。

double power(double x, int n)
{double pow = 1;if (n == 0){if (x == 0)printf("0的0次冪未定義\n");return 1;}else if (n < 0){if (x == 0)return 0;pow = power(1 / x, -n);}elsefor(int i = 0; i < n; i++)pow *= x;return pow;
}
int main()
{system("chcp 65001");printf("%f\n", power(0, 10));printf("%f\n", power(0, 0));printf("%f\n", power(0, -2));printf("%f\n", power(2, 10));printf("%f\n", power(2, -2));
}


9.使用遞歸函數重寫編程練習8。

double power(double x, int n)
{double pow = 1;if (n == 1)return x;if (n == 0){if (x == 0)printf("0的0次冪未定義\n");return 1;}else if (n < 0){if (x == 0)return 0;pow = power(1 / x, -n);}elsepow = x * power(x, n - 1);return pow;
}
int main()
{system("chcp 65001");printf("%f\n", power(0, 10));printf("%f\n", power(0, 0));printf("%f\n", power(0, -2));printf("%f\n", power(2, 10));printf("%f\n", power(2, -2));
}


10.為了讓程序清單9.8中的to_binary()函數更通用,編寫一個to_base_n()函數接受兩個參數,且第二個參數在2~10范圍內,然后以第2個參數中指定的進制打印第1個參數的數值。例如,to_base_n(129,8)顯示的結果為201,也就是129的八進制數。在一個完整的程序中測試該函數。

void to_base_n(int n, int base)
{int r;r = n % base;if (n >= base)to_base_n(n / base, base);printf("%x", r);
}
int main()
{to_base_n(123456789, 2);printf("\n");to_base_n(123456789, 8);printf("\n");to_base_n(123456789, 10);printf("\n");to_base_n(123456789, 16);printf("\n");
}


11.編寫并測試Fibonacci()函數,該函數用循環代替遞歸計算斐波那契數。

int Fibonacci(int n)
{if (n == 0)return 0;if (n == 1)return 1;return Fibonacci(n -1) + Fibonacci(n-2);
}
unsigned int Fibonacci(unsigned int n)
{if (n == 0)return 0;if (n == 1)return 1;unsigned int a = 0, b = 1;for (unsigned int i = 0; i < n; i++){int temp = a;a = b;b = temp + b;}return a;
}
int main()
{for (unsigned int i = 0; i <= 10; i++){printf("Fibonacci(%d) is %d\n", i, Fibonacci(i));}return 0;
}

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

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

相關文章

如何用文思助手改好一篇爛材料

在日常工作中&#xff0c;我們常常會遇到這樣的問題&#xff1a;因為工作要使用到之前寫的文章再看發現內容雜亂無章、或者收到的一些返稿內容質量差&#xff0c;不修改無法使用。但其實它們可能只是缺少了系統性的梳理與打磨。今天我們就來聊一聊&#xff0c;如何對一些不滿意…

VSCODE常規設置

摘要&#xff1a;用于新下載的vscode設置一些個人化的操作在 "Files: Auto Save" 下拉菜單中&#xff0c;選擇你想要的自動保存模式。常見的選項包括&#xff1a;"off"&#xff1a;禁用自動保存。 "afterDelay"&#xff1a;在你停止編輯一段時間…

2025秋招突圍戰:AI智能監考如何重構遠程筆試公平防線?

2025秋招季即將來臨&#xff0c;企業校招規模預計突破百萬量級&#xff0c;遠程筆試成為主流篩選方式。然而&#xff0c;傳統監考模式暴露出作弊行為難追溯、人力成本過高、數據維度單一等痛點&#xff0c;讓HR陷入“效率與公平”的兩難困境。牛客AI智能監考系統&#xff0c;通…

Python 基礎語法與數據類型(十三) - 實例方法、類方法、靜態方法

文章目錄1. 實例方法 (Instance Methods)1.1 特點與語法1.2 實例方法示例2. 類方法 (Class Methods)2.1 特點與語法2.2 類方法示例3. 靜態方法 (Static Methods)3.1 特點與語法3.2 靜態方法示例4. 三種方法的對比總結總結練習題練習題答案創作不易&#xff0c;請各位看官順手點…

Wireshark的安裝和基本使用

文章目錄一、Wireshark介紹二、Wireshark安裝三、Wireshark講解1.界面介紹&#xff08;1&#xff09;分組列表&#xff08;2&#xff09;分組詳情&#xff08;3&#xff09;分組字節流一、Wireshark介紹 Wireshark 是一款開源的網絡協議分析工具&#xff0c;能夠捕獲、過濾和分…

[yotroy.cool] Git 歷史遷移筆記:將 Git 項目嵌入另一個倉庫子目錄中(保留提交記錄)

個人博客https://www.yotroy.cool/&#xff0c;感謝關注&#xff5e; 圖片資源可能顯示不全&#xff0c;請前往博客查看哦&#xff01; 說來慚愧&#xff0c;這篇是AI幫助我解決實際問題后&#xff0c;又生成的一篇博客&#xff0c;效率特別高。 在開發中&#xff0c;我們常會…

91套商業策劃創業融資計劃書PPT模版

創業融資計劃書PPT模版&#xff0c;商業項目技術書PPT模版&#xff0c;商業創業計劃書&#xff0c;商業融資企業宣傳PPT模版&#xff0c;活動策劃方案書PPT模版&#xff0c;IOS風格商業計劃書PPT模版 91套商業策劃創業融資計劃書PPT模版&#xff1a;https://pan.quark.cn/s/739…

探秘阿里云通義九子:解鎖AI無限可能

通義九子初印象在當今人工智能飛速發展的時代&#xff0c;阿里云通義九子宛如一顆璀璨的明星&#xff0c;閃耀在 AI 的浩瀚天空中。作為阿里云推出的一系列強大的人工智能模型&#xff0c;通義九子在自然語言處理、圖像生成、智能客服等多個領域展現出了卓越的能力&#xff0c;…

Python網絡爬蟲之requests庫

目錄 一.網絡爬蟲的介紹 1.網絡爬蟲庫 2.robot.txt規則 二.requests庫 1.requests庫的安裝 2.get()函數 3.Response對象 Response的屬性 設置編碼 返回網頁內容 text() content() 三.提交信息到網頁 post()函數 四.會話與代理服務器 一.網絡爬蟲的介紹 1.網絡爬蟲…

區塊鏈技術詳解:從原理到應用

引言 區塊鏈作為一項顛覆性技術&#xff0c;已從加密貨幣的基石演變為重塑多個行業的創新引擎。本文旨在深入解析其核心原理、關鍵特性、技術架構、主流應用及未來挑戰。一、 區塊鏈核心概念&#xff1a;超越加密貨幣的分布式賬本 本質定義&#xff1a; 區塊鏈是一個去中心化、…

用Finalshell連接服務器后出現文件目錄不顯示,且刷新報錯空指針問題記錄

修改SSH配置?編輯sshd_config?使用管理員權限編輯/etc/ssh/sshd_config文件&#xff0c;找到Subsystem相關配置。原配置為Subsystem sftp /usr/libexec/openssh/sftp-server使用“i”編輯文件將修改為Subsystem sftp internal-sftp修改完成后使用Esc命令&#xff0c;退出編輯…

C語言:游戲代碼分享

小游戲分享 目錄 小游戲分享 1.井字棋游戲 2.簡單計算器游戲 3.猜單詞 4.石頭剪刀布游戲 5.猜數字游戲 1.井字棋游戲 「33 棋盤上的思維博弈&#xff01;與好友輪流落子&#xff0c;搶占先機&#xff0c;連成一線即可獲勝。簡單規則蘊含無限策略&#xff0c;展現你的戰術…

深度學習入門-卷積神經網絡(CNN)(下)

1-4、 深度學習入門-卷積神經網絡&#xff08;CNN&#xff09;&#xff08;上&#xff09;-CSDN博客 5、 卷積神經網絡&#xff08;CNN&#xff09;的實現 簡單網絡的構成是“Convolution - ReLU - Pooling - Affine - ReLU - Affine - Softmax”&#xff1a; 相關代碼&#…

Java 大視界 -- Java 大數據在智能交通智能公交站臺乘客流量預測與服務優化中的應用(349)

Java 大視界 -- Java 大數據在智能交通智能公交站臺乘客流量預測與服務優化中的應用&#xff08;349&#xff09;引言&#xff1a;正文&#xff1a;一、Java 全場景韌性調度系統&#xff08;新增極端天氣 車型適配&#xff09;1.1 極端天氣&#xff1a;暴雪 / 臺風的分鐘級響應…

數論內容主要包括哪些

數論&#xff08;Number Theory&#xff09;是數學中研究整數的性質及其相互關系的一個分支&#xff0c;被譽為“數學中的皇后”。它歷史悠久&#xff0c;內容豐富&#xff0c;既包含許多初等、直觀的問題&#xff0c;也涉及高深、抽象的理論。數論的主要內容包括以下幾個方面&…

springboot打包二次壓縮Excel導致損壞

springboot打包二次壓縮Excel導致損壞開發時&#xff0c;將Excel文件放到resources下&#xff0c;通過類加載器流讀取&#xff0c;返回api用于下載該Excel文件。我發現這樣下載的Excel被損壞了&#xff0c;無法打開&#xff0c;推測是springboot打包插件默認對resources下的所有…

huggingface筆記

1. huggingface的下載目錄 ~/.cache/huggingface 2. 如何修改hugging face的模型默認下載地址 huggingface的默認下載路徑在~/.cache/huggingface/hub/&#xff0c;但模型數據占用空間往往很大&#xff0c;可以用以下方法修改默認下載路徑。 方法一&#xff1a;在linux中指定環…

Redis3:Redis數據結構與命令全解析

目錄 1、redis數據結構介紹 1.1命令學習方式 1.1.1命令行查詢 2、redis的通用命令 2.1查找常見的通用命令 2.2常見的通用命令&#xff1a; 3、String類型 3.1String類型的常見命令 3.2Key的層級格式 3.2.1Key的結構 4、Hash類型 4.1Hash類型 4.2Hash類型常見命令 …

WebSocket 重連與心跳機制:打造堅如磐石的實時連接

在現代 Web 應用中&#xff0c;WebSocket 是實現實時通信的核心技術。但網絡環境復雜多變&#xff0c;如何確保連接穩定成為關鍵挑戰。本文將深入剖析 WebSocket 的重連與心跳機制&#xff0c;提供一套經過生產環境驗證的解決方案。 一、WebSocket 基礎封裝 首先我們實現一個具…

【代碼】Matlab鳥瞰圖函數

用matlab把圖像轉化為鳥瞰圖 代碼 clc clear close all I imread(road.png); figure(1) imshow(I) bevSensor load(birdsEyeConfig); birdsEyeImage transformImage(bevSensor.birdsEyeConfig,I); figure(2) imshow(birdsEyeImage)效果