牛客網刷題 | BC84 牛牛學數列2

目前主要分為三個專欄,后續還會添加:

? ? ? ? 專欄如下:?? ? ? ? ? ? ? ??C語言刷題解析? ? ? ?C語言系列文章? ? ? ?我的成長經歷

感謝閱讀!

初來乍到,如有錯誤請指出,感謝!


描述

這次牛牛又換了個數列,他想計算:1+1/2+1/3+…+1/N的值。(保留6位小數)

輸入描述:

輸入一個整數,范圍在0到1000

輸出描述:

輸出一個浮點數


思路 :

理解題目要求:題目要求計算數列 ?1+1/2+1/3+…+1/N?的和,其中 N 是一個整數,范圍是 0?到 1000。結果需要保留六位小數。

輸入處理:讀取用戶輸入的整數 𝑁。

循環計算:使用一個循環從 11 到 𝑁(包括 𝑁),累加每一項 1 / i?。

精度控制:由于題目要求保留六位小數,我們需要在累加過程中就注意精度問題,避免因為浮點數的精度問題導致結果不準確。

輸出結果:將計算得到的和轉換為字符串格式,確保小數點后有六位數字,然后輸出。

  • 在C語言中,scanf?用于讀取輸入,printf?用于格式化輸出。
  • 循環中的?1.0 / i?確保了除法操作的結果是一個浮點數,避免了整數除法的問題。
  • printf?中的?%.6f?格式化輸出確保了結果保留六位小數。

代碼 1 :


int main()
{int a = 0;double c = 0;scanf("%d", &a);for (int b = 1; b <= a; b++){c = 1.0 / b + c;}printf("%.6lf", c);return 0;
}

代碼 2:

#include <stdio.h> // 引入標準輸入輸出庫int main() // 主函數的開始
{double i = 1; // 定義一個變量i,表示分子,初始值為1double n = 0; // 定義一個變量n,用于存放用戶輸入的整數,初始值為0double j = 0; // 定義一個變量j,用于for循環的迭代,初始值為0double sum = 0; // 定義一個變量sum,用于累加求和,初始值為0scanf("%lf", &n); // 從標準輸入讀取一個浮點數,存儲在變量n中if (n == 1) // 如果輸入的n等于1{printf("1\n"); // 輸出1,因為1+1/2+...+1/1的和就是1}else if (n > 0 && n <= 1000) // 如果輸入的n大于0且小于等于1000{for (j = 1; j <= n; j++) // 使用for循環,從1迭代到n{sum = (i / j) + sum; // 計算每一項1/j,并加到sum上}printf("%.6lf\n", sum); // 輸出累加和sum,保留六位小數}else // 如果輸入的n不滿足條件(即n為負數或大于1000){printf("輸入錯誤\n"); // 輸出錯誤信息}return 0; // 返回0,表示程序正常結束
}//改進后的:
#include <stdio.h>int main() 
{double n = 0; // 用戶輸入double sum = 0; // 用于累加的變量,初始化為0scanf("%lf", &n); // 讀取用戶輸入的整數if (n == 1) {printf("1\n"); // 如果輸入的n為1,直接輸出1} else if (n > 0 && n <= 1000) {for (double j = 1; j <= n; j++) { // 開始for循環,從1到nsum += 1.0 / j; // 直接使用1.0作為分子,累加到sum上}printf("%.6lf\n", sum); // 輸出累加和sum,保留六位小數} else {printf("輸入錯誤\n"); // 如果輸入的n不滿足條件,輸出錯誤信息}return 0; // 程序正常結束
}/*在這個修改后的版本中,我去掉了 double i = 1; 
這行代碼,因為不需要單獨定義一個變量來表示分子。
在 for 循環中,直接使用 1.0 / j 來進行計算,
其中 1.0 表示分子,j 表示分母。
這樣代碼更為簡潔,并且避免了不必要的變量定義。*/

代碼 3 :

#include <stdio.h>int main() {int N;double sum = 0.0; // 用于累加的變量,初始化為0.0// 讀取輸入scanf("%d", &N);// 循環計算數列和for (int i = 1; i <= N; ++i) {sum += 1.0 / i; // 注意這里1.0是雙精度浮點數,以確保除法結果是浮點數}// 保留小數點后六位,使用printf的格式化輸出來實現printf("%.6f\n", sum);return 0;
}

知識點 :

浮點數精度:在C語言中,涉及到小數的計算時,需要使用浮點數類型,如 floatdouble。由于題目要求保留六位小數,使用 double 類型可以提供足夠的精度。

輸入驗證:在讀取用戶輸入后,應進行驗證以確保輸入值在題目要求的范圍內(0到1000)。如果不在這個范圍內,應提示用戶輸入錯誤。

循環控制:使用 for 循環來遍歷從1到N(包括N)的整數,并計算每一項的和。

累加求和:在循環中,需要將每一項 1.0 / j 加到累加器 sum 上。注意這里使用 1.0 而不是 1,因為 1.0 是一個 double 類型的值,這樣可以確保除法操作的結果是一個浮點數。

格式化輸出:使用 printf 函數的格式化輸出 %.6lf 來控制輸出的精度,保留小數點后六位。

條件語句:使用 ifelse if 語句來處理不同的輸入情況,如輸入為1時的特殊情況,或者輸入不符合要求時的錯誤提示。

變量初始化:在開始計算之前,應確保所有變量(如累加器 sum)已經被初始化,以避免使用未初始化的變量。

整數與浮點數的除法:在C語言中,當兩個操作數都是整數時,除法結果也是整數。因此,至少有一個操作數必須是浮點數,以進行浮點除法。

代碼風格:保持代碼的可讀性,使用適當的變量命名,添加注釋來解釋代碼的功能。

資源限制:注意題目中提到的時間限制和空間限制,確保算法的效率。

四舍五入:題目要求結果保留六位小數,這意味著需要進行四舍五入處理,C語言標準庫中 printf 函數可以直接完成這個任務。

??

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

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

相關文章

sql中的exists和in的區別

在SQL中&#xff0c;EXISTS 和 IN 都用于子查詢&#xff0c;但它們的用法和目的有所不同。 ### EXISTS EXISTS 是一個邏輯運算符&#xff0c;用于檢查子查詢是否返回任何行。如果子查詢返回至少一行&#xff0c;那么 EXISTS 子句的結果為 TRUE&#xff1b;否則&#xff0c;結果…

一個用Kotlin編寫簡易的串行任務調度器

引言 由于項目中有處理大量后臺任務并且串行執行的需求&#xff0c;特意寫了一個簡易的任務調度器&#xff0c;方便監控每個任務執行和異常情況&#xff0c;任務之間互不影響。正如上所述&#xff0c;Kotlin中的TaskScheduler類提供了一個強大的解決方案&#xff0c;用于使用S…

「AIGC」Python實現tokens算法

本文主要介紹通過python實現tokens統計,避免重復調用openai等官方api,開源節流。 一、設計思路 初始化tokenizer使用tokenizer將文本轉換為tokens計算token的數量二、業務場景 2.1 首次加載依賴 2.2 執行業務邏輯 三、核心代碼 from transformers import AutoTokenizer imp…

React: memo

React.memo 允許你的組件在 props 沒有改變的情況下跳過重新渲染。 const MemoizedComponent memo(SomeComponent, arePropsEqual?)React 通常在其父組件重新渲染時重新渲染一個組件。你可以使用 memo 創建一個組件&#xff0c;當它的父組件重新渲染時&#xff0c;只要它的新…

centos7服務器采用局域網內筆記本代理上網

一、背景 某臺服務器操作系統是centos 7&#xff0c;不能上網。我想在上面裝個ftp軟件&#xff1a;vsftpd。 二、思路 要安裝這個軟件&#xff0c;有2種方案 1&#xff09;設置該臺centos7可以上網 2&#xff09;離線安裝vsftpd 鑒于各種依賴&#xff0c;萬一因為依賴不全或…

《海峽科技與產業》是什么級別的期刊?是正規期刊嗎?能評職稱嗎?

問題解答 問&#xff1a;《海峽科技與產業》期刊是什么級別&#xff1f; 答&#xff1a;國家級 主管單位&#xff1a;中華人民共和國科學技術部 主辦單位&#xff1a;科技部海峽兩岸科學技術交流中心 問&#xff1a;《海峽科技與產業》影響因子&#xff1f; 答&#xff1a;…

相位;傅里葉變換和傅里葉級數是什么;歐拉公式是什么,和傅里葉關系;

目錄 相位 傅里葉變換公式使用舉例 實際案例 傅里葉變換和傅里葉級數是什么

隨筆:棋友們

我是在小學二年級學會中國象棋的&#xff0c;準確說&#xff0c;是學會象棋的下棋規則的&#xff0c;師傅是二舅。我最早的對手就是同學波仔。波仔比我略早學會象棋&#xff0c;總用連珠炮欺負我&#xff0c;開局幾步棋就把我將死。我不知道怎么破解。輪到我先走時&#xff0c;…

扭虧為盈的賽力斯,真正進入穩態了嗎?

“72小時內大定破1萬臺”。5月15日&#xff0c;問界新M5開啟全國大規模交付&#xff0c;從當前取得的成績來看&#xff0c;賽力斯的“富貴”似乎還將延續。 其實&#xff0c;此前基于問界新M7等車型的爆火&#xff0c;賽力斯已經找到了創收軌道。財報顯示&#xff0c;2024年一…

alist網盤自動同步

alist網盤自動同步 alist可以設置目錄定時轉存到各個網盤&#xff0c;做到夸網盤&#xff0c;多備份的效果可以將自己掛載的alist 下的各個目錄相互間進行同步&#xff0c;原理是采用alist原始api調用執行同步原理1.匹配文件名稱是否相同,2.文件大小是否相同&#xff0c;相同會…

一文詳細解析Google編碼規范工具cpplint的下載安裝與使用

目錄 一、什么是cpplint 二、cpplint能實現的功能 三、cpplint的下載與使用 1、配置python環境 2、安裝cpplint 四、cpplint常用命令講解 1、常用命令查看 2、常用命令詳解 3、命令使用方式 五、 cpplint的實用技巧 1、集成cpplint 1.1、修改調用接口. 1.2、直接把…

數據結構(C):樹的概念和二叉樹初見

目錄 &#x1f37a;0.前言 1.樹概念及結構 2.認識一棵樹 3.樹的表示 3.1樹在實際中的運用&#xff08;表示文件系統的目錄樹結構&#xff09; 4.二叉樹 4.1特殊的二叉樹 4.2二叉樹的性質 &#x1f48e;5.結束語 &#x1f37a;0.前言 言C之言&#xff0c;聊C之識&…

卷積模型的剪枝、蒸餾---蒸餾篇--NST特征蒸餾(以deeplabv3+為例)

本文使用NST特征蒸餾實現deeplabv3+模型對剪枝后模型的蒸餾過程; 一、NST特征蒸餾簡介 下面是兩張疊加了熱力圖(heat map)的圖片,從圖中很容易看出這兩個神經元具有很強的選擇性:左圖的神經元對猴子的臉部非常敏感,右側的神經元對字符非常敏感。這種激活實際上意味著神經…

程序員績效管理-序言

開辟一個新專欄專門討論程序員績效管理。作為軟件開發企業&#xff0c;公司的命脈掌握在程序員手中。程序員的績效管理是個超級難題。小張和老王專欄介紹了兩個典型的人員。但是這是兩個虛擬的極端人員&#xff0c;大部分開發人員沒有那么容易分辨。1個任務&#xff0c;應該1天…

LabVIEW軟件開發工程師需要具備哪些能力與素質?

成為一名優秀的LabVIEW軟件開發工程師&#xff0c;需要具備以下能力與素質&#xff1a; 技術能力 LabVIEW編程技能&#xff1a; 精通LabVIEW編程&#xff0c;能夠熟練使用其圖形化編程界面。熟悉LabVIEW中的各種功能模塊和工具包&#xff0c;如數據采集&#xff08;DAQ&#x…

如何配置Nacos的健康檢查參數?

在微服務架構中&#xff0c;服務注冊與發現以及健康檢查是至關重要的組件。Nacos&#xff0c;作為阿里巴巴開源的一個更易于構建云原生應用的動態服務發現、配置和服務管理平臺&#xff0c;廣泛應用于微服務架構中。在Nacos中&#xff0c;服務的健康檢查是一個核心功能&#xf…

【Python】使用MySQL綜合案例

數據說明: 一月份各省銷售數據&#xff1a;csv格式 二月份各省銷售數據&#xff1a;json格式 實現要求&#xff1a;將兩個文件中的數據存儲到數據庫中&#xff0c;并反向從數據庫中讀取數據存儲為json格式文件 本文提供數據 完成案例所需基礎 【Python】基礎知識(函數與數…

C++ 日志庫 log4cpp 編譯、壓測及其范例代碼 [全流程手工實踐]

文章目錄 一、 log4cpp官網二、下載三、編譯1.目錄結構如下2.configure 編譯3.cmake 編譯 四、測試五、壓測源碼及結果1.運行環境信息2.壓測源碼3.壓測結果 文章內容&#xff1a;包含了對其linux上的完整使用流程&#xff0c;下載、編譯、安裝、測試用例嘗試、以及一份自己寫好…

Qt | QTimer 類(計時器)

01、相關知識回顧 Qt C++ | QTimer經驗總結Qt | QDateTimeEdit、QDateEdit類和QTimeEdit類02、QTimer 類 1、QTimer 類是 QObejct 的直接子類,該類用于實現計時器,QTimer 類未繼承自 QW

IT革新狂潮:引領未來的技術趨勢

方向一&#xff1a;技術革新與行業應用 當前現狀&#xff1a; 量子計算&#xff1a;量子計算的研究正在加速&#xff0c;盡管目前仍處于初級階段&#xff0c;但其在藥物研發、加密技術和材料科學等領域的應用潛力已被廣泛認可。 虛擬現實&#xff08;VR&#xff09;與增強現實…