C語言for循環結構經典練習

文章目錄

  • 一、for循環基本知識
  • 二、經典例題及解析
    • 1.水仙花數
    • 2.求規定范圍內的完數
    • 3.求規定范圍內質數
    • 4.計算階乘之和
    • 5.計算5+55+555+555+55555(類型)
    • 6.計算1+12+123+1234+12345(類型)
    • 7.判斷用戶輸入正整數的位數
    • 8.判斷某正整數是否為回文數
    • 9.九九乘法表
    • 10.統計用戶輸入的字符中,英文字母,空格,數字以及其他字符的個數
      • for循環,并利用ASCII判定范圍
      • while方法,利用字符判定范圍
    • 11.連續輸入計算平均值(保留兩位小數)

一、for循環基本知識

基本結構:

for (式子1;式子2;式子3) 語句;  //語句也可以是復合語句

執行過程:

首先執行式子1(式子1只執行第一次),然后用式子1的結果去和式子2去判斷,式子2為真則執行循環語句(為假就不執行),循環語句執行完去執行式子3,再用式子3執行完后的值去判斷式子2的真假,如此重復,直到執行完式子3后的結果不符合式子2,循環結束。

注意事項:

  • 一般式子1代表初值,式子2代表條件,式子3代表增量
  • 三個式子之間用兩個分號進行分隔,且兩個分號不可省略
  • 三個式子都可以進行省略,若不寫式子2,缺省為條件永真

二、經典例題及解析

1.水仙花數

水仙花數:水仙花數是一個三位數,特點是各個位數的立方和等于該數本身。

//水仙花數是一個三位數,特點是各個位數的立方和等于該數本身。
//例:153=1*1*1+5*5*5+3*3*3
#include <stdio.h>int main()
{int i,a,b,c;for(i=100;i<=999;i++)    //保證范圍為三位數{a = i%10;    //取變量的個位數b = i/10%10;    //取變量的十位數c = i/100;    //取變量的百位數if ((a*a*a+b*b*b+c*c*c) == i) printf("%d\n",i);  }return 0;
}

運行結果:
在這里插入圖片描述

2.求規定范圍內的完數

完數:一個正整數的所有真因子(除了自身以外的約數)的和恰好等于它本身

//完數定義:一個正整數的所有真因子(除了自身以外的約數)的和恰好等于它本身
//例:6為完數,6的真因子為1,2,3  6=1+2+3
#include <stdio.h>
int main(){int n,i,j,sum;printf("請輸入計算完數終止數:\n");scanf("%d",&n);for (i=1;i<=n;i++){sum=0;  //一定要保證每次sum的值都要進行刷新(在循環體內)for (j=1;j<i;j++)  //保證小于i,不可等于(完數定義){if (i%j==0) sum+=j;}if (sum==i) printf("%d\n",i);}return 0;
}

運行結果:
在這里插入圖片描述

3.求規定范圍內質數

質數:一個大于1的整數只能被1和自己整除

//質數:一個大于1的整數只能被1和自己整除
#include <stdio.h>
int main()
{int i,j,k,n;printf("請輸入終止范圍:");scanf("%d",&n);for (i=2;i<=n;i++){k=1;         //借助k的值對是否為質數進行判斷,需保證每次k都能刷新for (j=2;j<i;j++)   //最小質數是2{if (i%j==0){  k=0;       //在這期間只要有一個其他數可對該數進行整除,就代表該數不是質數break;     }}if (k==1) printf("%d\n",i);}
}

運行結果:
在這里插入圖片描述

4.計算階乘之和

正整數的階乘:是所有小于及等于該數的正整數的積,并且0的階乘為1。
自然數n的階乘寫作n! 例:5!=5 * 4 * 3 * 2 * 1

//正整數的階乘:是所有小于及等于該數的正整數的積,并且0的階乘為1。
//自然數n的階乘寫作n!。
//5!=5*4*3*2*1
#include <stdio.h>
int main()
{int i,n,sum=0,p=1;printf("請輸入階乘終止值:\n");scanf("%d",&n);for (i=1;i<=n;i++){p*=i;   //根據找規律得出sum+=p;  //累加求和}printf("階乘結果為:%d",sum);}

運行結果:
在這里插入圖片描述

5.計算5+55+555+555+55555(類型)

大同小異,其他數值也可以這樣計算

#include <stdio.h>
int main()
{int i,sum=0,p=0;for (i=1;i<=5;i++)     //循環次數(幾個5){p=p*10+5;   //找規律,注意這次p為0!!!sum+=p;     //每循環一次就進行疊加}printf("結果為:%d",sum);
}

運行結果:
在這里插入圖片描述

6.計算1+12+123+1234+12345(類型)

此類題大部分都是先找規律,如需累加則在循環體內累加

#include <stdio.h>
int main()
{printf("%d",1+12+123+1234+12345);int i,sum=0,p=0;for (i=1;i<=5;i++){p=p*10+i;    //同樣找規律,然后疊加sum+=p;}printf("結果為:%d",sum);
}

運行結果:
在這里插入圖片描述

7.判斷用戶輸入正整數的位數

#include <stdio.h>
int main()
{int n,k=0;printf("請輸入正整數:\n");scanf("%d",&n);for (;n!=0;)   //while也可以{k++;n/=10;   //很粗名,每次除10,減少一位數直到為0停止}printf("該正整數的位數為:%d",k);
}

運行結果:
在這里插入圖片描述
編寫程序計算x的y次方

#include <stdio.h>
int main()
{int x,y,i,p=1;printf("請輸入x和y\n");scanf("%d%d",&x,&y);for (i=1;i<=y;i++)   //循環y次{p*=x;     //p的值為初始值必須為1}printf("x的y次方為%d",p);return 0;
}

運行結果:
在這里插入圖片描述

8.判斷某正整數是否為回文數

回文數:從左向右看和從右向左看都一樣
例:1234321是回文數

#include <stdio.h>
int main()
{int n,y,p=0;printf("請輸入測試正整數\n");scanf("%d",&n);y=n;while (n!=0){p=p*10+n%10;   //取這個正整數的最后一位,并且與前面相加就不成第一位啦嘛 //經典,有空就回顧一下n/=10;   //每次執行去掉正整數一位數}if (p==y) printf("%d是回文數",y);else printf("該數不是回文數");return 0;}

運行結果:
在這里插入圖片描述

9.九九乘法表

#include <stdio.h>int main()
{int i,j;for (i=1;i<=9;i++){      //外循環,循環9次for (j=1;j<i+1;j++){      //內循環,以外循環的變量為范圍printf("%d*%d=%d  ",j,i,i*j);    //注意i和j的先后順序,看題}printf("\n");    //不可在內循環體內}return 0;
}

在這里插入圖片描述

10.統計用戶輸入的字符中,英文字母,空格,數字以及其他字符的個數

for循環,并利用ASCII判定范圍

//for循環,并利用ASCII判定范圍
#include <stdio.h>
int main()
{int z=0,s=0,k=0,o=0;char ch;printf("請輸入字符串\n");for (;1;){ch=getchar();if (ch == '\n') break;else if (ch>=65&&ch<=90 || ch>=97&&ch<=122) z+=1;else if (ch == 32) k+=1;else if (ch>=48&&ch<=57) s+=1;else o+=1;}printf("該字符串中英文字母占:%d個\n該字符串中空格占:%d個\n該字符串中數字占:%d個\n該字符串中其他字符占:%d個\n",z,k,s,o);}

while方法,利用字符判定范圍

//while方法,利用字符判定范圍(其實也還是ASCII,只不過這個不容易出錯)
#include <stdio.h>
int main()
{int z=0,s=0,k=0,o=0;char ch;printf("請輸入字符串\n");while ((ch=getchar())!='\n'){if (ch>='A'&&ch<='Z' || ch>='a'&&ch<='z') z+=1;   //也可以用字符表示范圍,ASCII有可能會記錯else if (ch == ' ') k+=1;else if (ch>='0'&&ch<='9') s+=1;else o+=1;}printf("該字符串中英文字母占:%d個\n該字符串中空格占:%d個\n該字符串中數字占:%d個\n該字符串中其他字符占:%d個\n",z,k,s,o);}

運行結果:
在這里插入圖片描述

11.連續輸入計算平均值(保留兩位小數)

#include <stdio.h>
int main()
{int i;float n,sum=0.0;  //注意數據類型for (i=1;i!=0;i++){printf("請輸入需要累加的數值%d\n(注:輸入0時結束)\n",i);scanf("%f",&n);sum+=n;if (n==0) {printf("平均值為%.2f",sum/i); break;  //保留兩位小數}}
}

運行結果:
在這里插入圖片描述

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

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

相關文章

PTA 公路村村通

現有村落間道路的統計數據表中&#xff0c;列出了有可能建設成標準公路的若干條道路的成本&#xff0c;求使每個村落都有公路連通所需要的最低成本。 輸入格式: 輸入數據包括城鎮數目正整數N&#xff08;≤1000&#xff09;和候選道路數目M&#xff08;≤3N&#xff09;&…

JVM 之 javac、java、javap 命令詳解

目錄 一. 前言 二. javac 命令 三. java 命令 四. javap 命令 一. 前言 在日常工作中&#xff0c;我們新建 Java工程&#xff0c;寫好代碼后&#xff0c;編譯和運行幾乎都是通過 IDE&#xff08;如idea、eclipse&#xff09;工具完成。但作為 Java開發者還是要了解下 Java虛…

Modbus RTU協議及modbus庫函數使用

一、與Modbus TCP的區別 在一般工業場景使用modbus RTU的場景還是更多一些&#xff0c;modbus RTU基于串行協議進行收發數據&#xff0c;包括RS232/485等工業總線協議。 與modbus TCP不同的是RTU沒有報文頭MBAP字段&#xff0c;但是在尾部增加了兩個CRC檢驗字節&#xff08;CRC…

Android之在RecyclerView列表中實現單選

一、實現效果 單選、可取消選中、列表數據可更新&#xff08;選擇狀態清空&#xff0c;可重新選擇&#xff09; RecyclerView列表單選 二、實現步驟 僅展示部分核心代碼&#xff0c;請主要參考適配器的定義 1、Item布局 selected_tip_list_item.xml文件 包含一個TextView和…

Spring Boot集成MyBatis實現多數據源訪問的“秘密”

文章目錄 為什么需要多數據源&#xff1f;Spring Boot集成MyBatis的基礎配置使用多數據源小結 &#x1f389;Spring Boot集成MyBatis實現多數據源訪問的“秘密” ☆* o(≧▽≦)o *☆嗨~我是IT陳寒&#x1f379;?博客主頁&#xff1a;IT陳寒的博客&#x1f388;該系列文章專欄&…

力扣:178. 分數排名(Python3)

題目&#xff1a; 表: Scores ---------------------- | Column Name | Type | ---------------------- | id | int | | score | decimal | ---------------------- 在 SQL 中&#xff0c;id 是該表的主鍵。 該表的每一行都包含了一場比賽的分數。Score …

TCP /UDP協議的 socket 調用的過程

在傳輸層有兩個主流的協議 TCP 和 UDP&#xff0c;socket 程序設計也是主要操作這兩個協議。這兩個協議的區別是什么呢&#xff1f;通常的答案是下面這樣的。 TCP 是面向連接的&#xff0c;UDP 是面向無連接的。TCP 提供可靠交付&#xff0c;無差錯、不丟失、不重復、并且按序…

Selenium介紹及基本使用方法

Selenium是一個開源、免費、簡單、靈活&#xff0c;對Web瀏覽器支持良好的自動化測試工具&#xff0c;在UI自動化、爬蟲等場景下是十分實用的&#xff0c;能夠熟練掌握并使用Selenium工具可以大大的提高效率。 Selenium簡介 Selenium支持多平臺、多瀏覽器、多語言去實現自動化…

深入理解強化學習——馬爾可夫決策過程:動作價值函數

分類目錄&#xff1a;《深入理解強化學習》總目錄 不同于馬爾可夫獎勵過程&#xff0c;在馬爾可夫決策過程中&#xff0c;由于動作的存在&#xff0c;我們額外定義一個動作價值函數&#xff08;Action-value Function&#xff09;。我們用 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)…

線程提交線程到線程池,有幾種方式,哪一種方式是工作中不能使用的,無法捕捉異常,線程池的拒絕策略,線程池的提交方式

線程池的工作原理 JDK中提交線程到線程池&#xff0c;有幾種方式&#xff0c;哪一種方式是工作中不能使用的&#xff0c;無法捕捉異常 兩種提交任務的方法 ExecutorService 提供了兩種提交任務的方法&#xff1a; execute()&#xff1a;提交不需要返回值的任務 submit()&a…

【C語言】多組輸入

C系列文章目錄 目錄 C系列文章目錄 一、什么是多組輸入&#xff1f; 二、如何使用多組輸入 2.1&#xff0c;試題舉例講解 2.2&#xff0c;錯誤解法 2.3&#xff0c;我們實現多組輸入的思路 2.4&#xff0c;第一種正確的解法 2.5&#xff0c;第二種正確的解法 2.6&…

Python入門教程 | Python3 字典(dict)

Python3 字典 字典是另一種可變容器模型&#xff0c;且可存儲任意類型對象。 Python3中的字典是一種無序、可變、可迭代的數據結構&#xff0c;它由鍵&#xff08;key&#xff09;和對應的值&#xff08;value&#xff09;組成。字典在Python中被視為可變對象&#xff0c;這意…

ES ElasticSearch安裝、可視化工具kibana安裝

1、安裝ES docker run -d --name es9200 -e "discovery.typesingle-node" -p 9200:9200 elasticsearch:7.12.1訪問測試&#xff1a; http://域名:9200/ 2、安裝kibana對es進行可視化操作 執行命令 docker run -d --name kibana5601 -p 5601:5601 kibana:7.1.12.修…

如何實現在公網下使用navicat圖形化工具遠程連接本地內網的MariaDB數據庫

公網遠程連接MariaDB數據庫【cpolar內網穿透】 文章目錄 公網遠程連接MariaDB數據庫【cpolar內網穿透】1. 配置MariaDB數據庫1.1 安裝MariaDB數據庫1.2 測試局域網內遠程連接 2. 內網穿透2.1 創建隧道映射2.2 測試隨機地址公網遠程訪問3. 配置固定TCP端口地址3.1 保留一個固定的…

Redis深入理解-Socket連接建立流程以及文件事件處理機制

Redis Server 運行原理圖 Redis 服務器中 Socket 網絡建立以及文件事件模型 一個 redis 單機&#xff0c;可以抗幾百上千的并發&#xff0c;這里的并發指的就是同時可以有幾百個 client 對這個 redis server 發起請求&#xff0c;都需要去建立網絡連接&#xff0c;同時間可能會…

利用 docker 實現JMeter分布式壓測

為什么需要分布式&#xff1f; 在工作中經常需要對一些關鍵接口做高QPS的壓測&#xff0c;JMeter是由Java 語言開發&#xff0c;沒創建一個線程&#xff08;虛擬用戶&#xff09;&#xff0c;JVM默認會為每個線程分配1M的堆棧內存空間。受限于單臺試壓機的配置很難實現太高的并…

YAML 深入解析:從語法到最佳實踐

什么是YAML YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一種人類可讀的數據序列化語言。它的設計目標是使數據在不同編程語言之間交換和共享變得簡單。YAML采用了一種簡潔、直觀的語法&#xff0c;以易于閱讀和編寫的方式表示數據結構。 YAML廣泛應用于配置文…

【OpenCV實現圖像:制作酷炫的動畫效果】

文章目錄 概要生成背景圖添加點動畫添加文本顯示小結 概要 首先&#xff0c;通過導入必要的庫&#xff0c;包括NumPy用于數學運算和Matplotlib庫用于數據可視化。隨后&#xff0c;創建圖形和軸&#xff0c;初始化點的位置&#xff0c;以及編寫初始化函數和更新函數。 初始化函…

C語言歸并排序

以夢為馬&#xff0c;不負韶華 文章目錄 引入&#xff1a;實現原理問題引出&#xff1a;遞歸實現&#xff1a;迭代實現穩定性分析&#xff1a;總結&#xff1a; 引入&#xff1a; 如何將兩個有序數組&#xff08;假設為升序&#xff09;合并為一個有序數組&#xff1f; 雙指針…

yolov5/v7修改標簽和檢測框顯示【最全】

《記錄自己在使用yolov5遇到的一些問題》同時也供大家參考&#xff0c;如果對你們有幫助&#xff0c;希望大家可以給個點贊、收藏鼓勵下&#xff0c;非常感謝&#xff01; 以自帶的一張圖片作為示例,yolov5(6.1版本)的初始檢測框應該是如下圖所示 修改線條粗細、隱藏標簽、隱…