“死”循環(查漏補缺)

以下代碼會死循環:

#include<iostream>
using namespace std;
int n,res;
int main(){cin>>n;for(int i=1;i<=n;i++){int x=i;while(i){int t=i%10;i/=10;if(t==2||t==0||t==1||t==9){res+=x;break;}}}cout<<res<<endl;return 0;
}

你的代碼中存在一個邏輯錯誤,導致程序進入了死循環。具體來說,問題出在?while(i)?這個循環中。你在?while?循環中修改了?i?的值(i /= 10),這會導致外層?for?循環的?i?也被修改,從而導致?for?循環無法正常結束。

問題分析:

  • 外層?for?循環的?i?從?1?到?n?遞增。

  • 在?while(i)?循環中,i?被修改為?i / 10,這會導致?i?的值在?for?循環中被錯誤地修改。

  • 當?i?被修改為?0?時,for?循環的?i++?會再次將?i?設置為?1,從而導致死循環。

解決方法:

為了避免修改外層?for?循環的?i,你可以在?while?循環中使用一個臨時變量來代替?i

修改后的代碼:

#include<iostream>
using namespace std;int n, res;int main() {cin >> n;for (int i = 1; i <= n; i++) {int x = i;int temp = i;  // 使用臨時變量 temp 來代替 iwhile (temp) {int t = temp % 10;temp /= 10;if (t == 2 || t == 0 || t == 1 || t == 9) {res += x;break;}}}cout << res << endl;return 0;
}

解釋:

  • 在?while?循環中,我們使用?temp?來代替?i,這樣就不會影響外層?for?循環的?i

  • 這樣,for?循環可以正常地從?1?到?n?遞增,而不會進入死循環。

總結:

在嵌套循環中,尤其是當內層循環修改了外層循環的控制變量時,很容易導致死循環。為了避免這種情況,可以使用臨時變量來代替外層循環的控制變量。

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

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

相關文章

力扣LeetCode: 2506 統計相似字符串對的數目

題目&#xff1a; 給你一個下標從 0 開始的字符串數組 words 。 如果兩個字符串由相同的字符組成&#xff0c;則認為這兩個字符串 相似 。 例如&#xff0c;"abca" 和 "cba" 相似&#xff0c;因為它們都由字符 a、b、c 組成。然而&#xff0c;"aba…

關于Java 反射的簡單易懂的介紹

目錄 #0.總覽 #1. 類的反射 ①介紹 ②獲取 ③作用 獲取構造函數&#xff1a; 創建實例&#xff1a; 字段操作&#xff1a; 方法操作&#xff1a; 獲取修飾符&#xff1a; #2.總結 #0.總覽 反射&#xff0c;官方是這樣介紹它的&#xff1a; Reflection is a …

【精調】LLaMA-Factory 快速開始1: Meta-Llama-3.1-8B-Instruct

llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml llamafactory-cli chat examples/inference/llama3_lora_sft.yaml llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml模型下載 git clone https://www.modelscope.cn/LLM-Research/Meta-Lla…

【07】區塊鏈性能

7-1 基礎性能優化 7-1-1 區塊鏈性能瓶頸 總述 區塊鏈性能指標 區塊鏈的性能指標主要包括&#xff1a; 吞吐量&#xff1a;在固定時間內處理的交易數量 延時&#xff1a;對交易的響應和處理時間 主流區塊鏈與中心化平臺TPS對比 區塊鏈與傳統計算的對比 區塊鏈可信且中立…

安全面試2

文章目錄 簡單描述一下什么是水平越權&#xff0c;什么是垂直越權&#xff0c;我要發現這兩類漏洞&#xff0c;那我代碼審計要注意什么地方水平越權&#xff1a;垂直越權&#xff1a;水平越權漏洞的審計重點垂直越權漏洞的審計重點 解釋一下ssrf漏洞原理攻擊場景修復方法 橫向移…

【Linux 專欄】echo命令實驗

風123456789&#xff5e;-CSDN博客 最近文章閱讀排行榜 【爬蟲基礎】第一部分 網絡通訊 P1/3-CSDN博客 【爬蟲基礎】第一部分 網絡通訊-Socket套接字 P2/3-CSDN博客 【Linux專欄】find命令同步 實驗-CSDN博客 【Linux運維】非root用戶的單向免密登錄_linux 單向免密-CSDN博客…

RTSP協議全解析

RTSP&#xff08;Real Time Streaming Protocol&#xff09;協議全解析 一、協議概述 定位&#xff1a;應用層協議&#xff0c;用于控制流媒體服務器&#xff08;播放、暫停、錄制&#xff09;&#xff0c;媒體傳輸由 RTP/RTCP 實現。 特點&#xff1a; 基于文本&#xff08;…

第15屆 藍橋杯 C++編程青少組中/高級選拔賽 202401 真題答案及解析

第 1 題 【 單選題 】 表達式117 % 16 的結果是( )。 A:0 B:5 C:7 D:10 解析: % 是取模運算符,用于計算兩個數相除后的余數。 計算 117 / 16,結果是 7,余數是 5。因此,117 % 16 = 5。答案: B 第 2 題 【 單選題 】 下列選項中,字符數組定義正確的是( …

qt5實現表盤的旋轉效果,通過提升QLabel類

因為工作需要&#xff0c;需要實現溫度的表盤展示效果 實現思路&#xff1a; 通過提示聲QLabel控價類&#xff0c;實現報盤的旋轉和展示效果 1. 編寫一個QLabel的類MyQLabel,實現兩個方法 1. void paintEvent(QPaintEvent *event); //重繪函數 2. void valueChanged(int va…

通信系統中物理層與網絡層聯系與區別

在通信系統中&#xff0c;物理層和網絡層是OSI&#xff08;開放系統互連&#xff09;模型中的兩個重要層次&#xff0c;分別位于協議棧的最底層和第三層。它們在功能、職責和實現方式上有顯著的區別&#xff0c;但同時也在某些方面存在聯系。以下是物理層與網絡層的聯系與區別的…

【深度學習】Pytorch的深入理解和研究

一、Pytorch核心理解 PyTorch 是一個靈活且強大的深度學習框架&#xff0c;廣泛應用于研究和工業領域。要深入理解和研究 PyTorch&#xff0c;需要從其核心概念、底層機制以及高級功能入手。以下是對 PyTorch 的深入理解與研究的詳細說明。 1. 概念 動態計算圖&#xff08;D…

23種設計模式 - 解釋器模式

模式定義 解釋器模式&#xff08;Interpreter Pattern&#xff09;是一種行為型設計模式&#xff0c;用于為特定語言&#xff08;如數控系統的G代碼&#xff09;定義文法規則&#xff0c;并構建解釋器來解析和執行該語言的語句。它通過將語法規則分解為多個類&#xff0c;實現…

使用 Openpyxl 操作 Excel 文件詳解

文章目錄 安裝安裝Python3安裝 openpyxl 基礎操作1. 引入2. 創建工作簿和工作表3. 寫入數據4. 保存工作簿5. 加載已存在的Excel6. 讀取單元格的值7. 選擇工作表 樣式和格式化1. 引入2. 設置字體3. 設置邊框4. 填充5. 設置數字格式6. 數據驗證7. 公式操作 性能優化1. read_only/…

nigix面試常見問題(2025)

一、Nginx基礎概念 1. 什么是Nginx? Nginx是一款高性能的HTTP/反向代理服務器及IMAP/POP3/SMTP代理服務器,由俄羅斯工程師Igor Sysoev開發。其核心優勢在于事件驅動架構與異步非阻塞處理模型,能夠高效處理高并發請求(如C10K問題),廣泛應用于負載均衡、靜態資源服務、AP…

002 SpringCloudAlibaba整合 - Feign遠程調用、Loadbalancer負載均衡

前文地址&#xff1a; 001 SpringCloudAlibaba整合 - Nacos注冊配置中心、Sentinel流控、Zipkin鏈路追蹤、Admin監控 文章目錄 8.Feign遠程調用、loadbalancer負載均衡整合1.OpenFeign整合1.引入依賴2.啟動類添加EnableFeignClients注解3.yml配置4.日志配置5.遠程調用測試6.服務…

代碼審計入門學習之sql注入

路由規則 入口文件&#xff1a;index.php <?php // ---------------------------------------------------------------------- // | wuzhicms [ 五指互聯網站內容管理系統 ] // | Copyright (c) 2014-2015 http://www.wuzhicms.com All rights reserved. // | Licensed …

React實現自定義圖表(線狀+柱狀)

要使用 React 繪制一個結合線狀圖和柱狀圖的圖表&#xff0c;你可以使用 react-chartjs-2 庫&#xff0c;它是基于 Chart.js 的 React 封裝。以下是一個示例代碼&#xff0c;展示如何實現這個需求&#xff1a; 1. 安裝依賴 首先&#xff0c;你需要安裝 react-chartjs-2 和 ch…

線程與進程的深入解析及 Linux 線程編程

在操作系統中&#xff0c;進程和線程是進行并發執行的兩種基本單位。理解它們的區別和各自的特點&#xff0c;能夠幫助開發者更好地進行多任務編程&#xff0c;提高程序的并發性能。本文將探討進程和線程的基礎概念&#xff0c;及其在 Linux 系統中的實現方式&#xff0c;并介紹…

全面指南:使用JMeter進行性能壓測與性能優化(中間件壓測、數據庫壓測、分布式集群壓測、調優)

目錄 一、性能測試的指標 1、并發量 2、響應時間 3、錯誤率 4、吞吐量 5、資源使用率 二、壓測全流程 三、其他注意點 1、并發和吞吐量的關系 2、并發和線程的關系 四、調優及分布式集群壓測&#xff08;待仔細學習&#xff09; 1.線程數量超過單機承載能力時的解決…

springboot整合mybatis-plus【詳細版】

目錄 一&#xff0c;簡介 1. 什么是mybatis-plus2.mybatis-plus特點 二&#xff0c;搭建基本環境 1. 導入基本依賴&#xff1a;2. 編寫配置文件3. 創建實體類4. 編寫controller層5. 編寫service接口6. 編寫service層7. 編寫mapper層 三&#xff0c;基本知識介紹 1. 基本注解 T…