C語言中的迴圈語句練習

来源:https://www.cnblogs.com/OctoptusLian/archive/2018/01/27/8367151.html
-Advertisement-
Play Games

註:練習題目均出自《明解C語言 入門篇》 一、do語句 1,求多個整數的和及平均值 二、whie語句 1,遞增顯示從0到輸入的正整數為止的各個整數 2,編寫一段程式,按照升序顯示出小於輸入值的所有正偶數 3,編寫一段程式,使之交替顯示+和-,總個數等於所輸入的整數值 4,逆向顯示正整數 三、for語 ...


註:練習題目均出自《明解C語言 入門篇》

一、do語句

1,求多個整數的和及平均值

#include<stdio.h>
int main(void)
{
    int sum = 0;  //
    int cnt = 0;  //整數個數 
    int retry;  //判斷是否繼續
    do{
        int t;
        printf("請輸入一個整數:");
        scanf("%d",&t);
        sum = sum + t;
        cnt = cnt + 1;
        printf("是否繼續?<Yes...0/No...9:");
        scanf("%d",&retry);
    } while(retry == 0);
    
    printf("和為%d,平均值為%.2f。\n",sum,(double)sum / cnt);
    return 0;
}

 

二、whie語句

1,遞增顯示從0到輸入的正整數為止的各個整數

#include<stdio.h>
int main(void)
{
    int i,n;
    printf("請輸入一個正整數:");
    scanf("%d",&n);
    i = 0;
    while(i <= n)
        printf("%d ",i++);  //i的值在顯示之後遞增
    printf("\n");
    
    return 0; 
 } 

 

2,編寫一段程式,按照升序顯示出小於輸入值的所有正偶數

#include<stdio.h>
int main(void)
{
    int i,n;
    printf("請輸入一個正整數:");
    scanf("%d",&n);
    i = 0;
    while(i <= n){
        i = i + 2;
        if(i < n)  //應先對遞增後的值進行判斷,看是否越界 
        printf("%d ",i);         
    }

    printf("\n");
    
    return 0; 
 } 

 

3,編寫一段程式,使之交替顯示+和-,總個數等於所輸入的整數值

#include<stdio.h>
int main(void)
{
    int num;
    int i=0;
    printf("正整數:");
    scanf("%d",&num);
    while (i<num) {
        if (++i%2)
            putchar('+');
        else
            putchar('-');
    }
    return 0;
}

 

4,逆向顯示正整數

#include<stdio.h>
int main(void)
{
    int n;
    do{
        printf("請輸入一個正整數:");
        scanf("%d",&n);
        if(n <= 0)
            puts("請不要輸入非正整數。");
    }while(n <= 0);
    
    printf("該整數逆向顯示的結果是 ");
    while(n > 0){
        printf("%d", n % 10);
        n /= 10;
    }
    puts("");
    
    return 0;    
}

 

三、for語句

1,編寫一段程式,根據輸入的整數,迴圈顯示1234567890,顯示的位數和輸入的整數值相同

#include <stdio.h>
int main(void)
{
        int i,j,n;
        j=1;
        printf("請輸入一個整數:");
        scanf("%d",&n);
        for(i=0;i<n;i++) {
                printf("%d",j);
                j++;
                if(j>9)
                        j-=10;
        }
        printf("\n");
        return 0;
}

 

2,編寫一段程式,顯示出身高和標準體重的對照表。註:顯示的身高範圍和間隔由輸入的整數值進行控制,標準體重精確到小數點後兩位。

#include <stdio.h>
int main() {
     int beginHigh = 0, endHigh = 0;
     float weight = 0;
     int margin = 0;
     printf("開始數值(cm):");
     scanf("%d", &beginHigh);
     printf("結束數值(cm):");
     scanf("%d", &endHigh);
     printf("間隔值(cm):");
     scanf("%d", &margin);
     for (int i = beginHigh;i <= endHigh; i+=margin) {
             weight = (i - 100)*0.9;  //這是一個計算標準體重的公式 
            printf("%d cm\t\t%.2f\n", i, weight);  // \t代表製表符,相當於按下一次Tab鍵 
     }
     return 0;
}

 

3,顯示輸入的整數值的所有約數

#include<stdio.h>
int main(void)
{
    int i,n;
    printf("整數值:");
    scanf("%d",&n);
    for(i = 1;i <= n;i++)
        if(n % i == 0)
            printf("%d ",i);
    putchar('\n');
    
    return 0; 
 } 

 

4,編寫一段程式,輸入一個整數值,顯示該整數值個' * '。每顯示5個就進行換行。

#include<stdio.h>
int main()
{
    printf("請輸入整數:");
    int a;
    scanf("%d",&a);
    int b=0;
    for(int i=0;i<a;i++)
    {
        if(b==5)
        {
            printf("\n");
            b=0;
        }
    printf("*");
    b=b+1;
    }    
 } 

 

 

四、多重迴圈

1,顯示九九乘法表

#include<stdio.h>
int main(void)
{
    int i,j;
    for(i = 1;i <= 9;i++){
        for(j = 1;j <= 9;j++)
            printf("%3d",i * j);
        putchar('\n');
    }
    
    return 0;
 } 

 

2,編寫一段程式,為九九乘法表增加橫縱標題

#include <stdio.h>
int main()
{
    int i, j ;
    //列印第一行
    printf("   |") ;
    for(i = 1; i <= 9; i++)
    {
        printf("  %d", i) ;
    }
    printf("\n") ;
    //列印第二行
    for(i = 1; i <= 32; i++)
        printf("-") ;
    printf("\n") ;
    //開始列印99乘法表,每行開頭要有行號
    for(i = 1; i <= 9; i++)//
    {
        printf(" %d |", i) ;
        for(j = 1; j <= 9; j++)//
        {
            printf(" %2d", i*j) ;
        }
    printf("\n") ;
    }
    return 0 ;
}

 

3,畫一個長方形

#include<stdio.h>
int main(void)
{
    int i,j;
    int height,width;
    
    puts("讓我們來畫一個長方形。");
    printf("高:");   scanf("%d",&height);
    printf("寬:");   scanf("%d",&width);
    
    for(i = 1;i <= height;i++) { //長方形有height行 
        for(j = 1;j <= width;j++)  //每行顯示width個 
            putchar('*');
        putchar('\n');  //換行
    }
    return 0;    
 } 

 

4,(1)顯示直角在左下方的等腰直角三角形

#include<stdio.h>
int main(void)
{
    int i,j,len;
    puts("直角在左下方的等腰直角三角形。");
    printf("邊長:");
    scanf("%d",&len);
    
    for(i = 1;i <= len;i++){
        for(j = 1;j <= i;j++)
            putchar('*');
        putchar('\n');
    }
    
    return 0;
 } 

 

 

(2)顯示直角在右下方的等腰直角三角形

#include<stdio.h>
int main(void)
{
    int i,j,len;
    puts("直角在左下方的等腰直角三角形。");
    printf("邊長:");
    scanf("%d",&len);
    
    for(i = 1;i <= len;i++){
        for(j = 1;j <= len-i;j++)
            putchar(' ');
        for(j = 1;j <= i;j++)
            putchar('*');
        putchar('\n');
    }
    
    return 0;
 } 

 

 

(3)顯示直角在左上方的等腰直角三角形

#include <stdio.h>
int main()
 {
    int i,j,len;
    puts("直角在左下方的等腰直角三角形。");
    printf("邊長:");
    scanf("%d",&len);
    
     for (int i = 1; i<=len; i++) {
        for (int j = 1; j <=len-i+1; j++) {
            putchar('*');
        }
          putchar('\n');

    }
    return 0;
 }

 

 

(4)顯示直角在右上方的等腰直角三角形

#include <stdio.h>
int main()
 {
    int i,j,len;
    puts("直角在左下方的等腰直角三角形。");
    printf("邊長:");
    scanf("%d",&len);
   
    for (int i = 1; i<=len; i++) {
         for (int j = 1; j <=i; j++) {
            putchar(' ');
        }
        for (int j=1; j<=len-i+1; j++) {
             putchar('*');
        }
        putchar('\n');
     }
    return 0;
}

 

 

5,編寫一段程式,輸入一個整數,顯示出輸入整數層的金字塔形狀

提示:第 i 行顯示 (i - 1)* 2 + 1 個 ' * '

#include "stdio.h"
int main(int argc, char const *argv[])
{
    int n;
    puts("讓我們來描繪一個金字塔。");
    printf("金字塔有幾層:"); scanf("%d",&n);
    for (int i = 1;i<=n; i++) {
        for (int j = 1; j<=n-i; j++) {
            putchar(' ');
        }
        for (int j=1;j<=i ; j++) {
            putchar('*');
        }
        for (int j=1; j<i; j++) {
            putchar('*');
        }
    putchar('\n'); 
     }
    return 0;
}

 

金字塔變形(1)

#include<stdio.h>
int main()
{
    int i,j,n;
    puts("讓我們來描繪一個金字塔。");
    printf("金字塔有幾層:"); scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=0;j<n-i;j++)
            printf(" ");
        for(j=1;j<2*i;j++)
            printf("%d",i);
        printf("\n");
    }
    return 0;
}

 

金字塔變形(2)

#include<stdio.h>
int main()
{
    int i,j,n;
    puts("讓我們來描繪一個金字塔。");
    printf("金字塔有幾層:"); scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=0;j<n-i;j++)
            printf(" ");
        for(j=1;j<=i;j++)
            printf("%d",j);
        for(j=i-1;j>0;j--)
            printf("%d",j);
        printf("\n");
    }
}

 

總結

迴圈是C語言的基礎,所以要扎實練習,孰能生巧。在此列舉一些註意事項:

  • 註意區分while語句和do-while語句,前者是先判斷後執行,後者是先執行後判斷。
  • do語句的迴圈體至少會執行一次,而while語句的迴圈體則有可能一次也不會執行。
  • 註意不要在for語句和while語句的()後放置空語句。
  • do語句的迴圈體,即使是單一語句,也可以用{ }括起來使之成為複合語句(程式塊),這樣程式會易讀。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、字元串 主要print的時候‘ ’和“ ”的 結果都是樣的,要註意的就是如果句子中含有’或”是要交叉使用,例如I'am a man.裡面就有’,那麼print的時候就要用雙引號“I'am a man.”,如果是“Apple”is an fruit.就要用單引號‘“Apple” is an fru ...
  • 1、文件上傳原理 將客戶端的文件上傳到伺服器,再將伺服器的臨時文件上傳到指定目錄 2、客戶端配置 提交表單 表單的發送方式為post 添加enctype="multipart/form-data" 3、伺服器端配置 file_uploads = On,支持HTTP上傳 uoload_tmp_dir ...
  • 本文是筆者創建項目 一系列java示常式序的總結。項目位置在 "SimplestJavaDemos" ,歡迎訪問. 以下為正文:   作為一個偽完美主義+拖延癌患者,每次要學習新技術的時候,總是要把它們看的很重很大很難,總是要挑一個最完美的時刻,擁有最完美的心情的時候才開始一個新 ...
  • Redis官方給出兩種思路 第一種:SET key value [EX seconds] [PX milliseconds] NX 第二種:SETNX+GETSET 首先,分別看一下這幾個命令 SET命令 SETNX命令 GETSET命令 接著,看第一種方式 官方給出的思路是這樣的 還有一處,也是類 ...
  • Struts2------Result處理&獲取頁面請求參數&API ...
  • cas是我們常用的一種解決併發問題的手段,小到CPU指令集,大到分散式存儲,都能看到cas的影子。本文假定你已經充分理解一般的cas方案,如果你還不知道cas是什麼,請自行百度 我們在進行關係型資料庫的更新操作時,基於cas的更新常常是保證數據業務邏輯語義下的一致性的終極手段,一般用來解決“寫偏序” ...
  • 當我們使用properties文件作為Spring Boot的配置文件而不是yaml文件時,怎樣實現多環境使用不同的配置信息呢? 在Spring Boot中,多環境配置的文件名需要滿足application-{profile}.properties的格式,其中{profile}對應你的環境標識,如下 ...
  • 最近打算將之前學習過的小練習分享出來,算是鞏固知識。雖然是小練習,但是越看越覺得有趣,溫故而知新。 練習:功能跳水比賽,8個評委評分。運動員成績去掉最高和最低之後的平均分 代碼實例: 1.導包 2.測試類 3.Judge類(封裝方法,很好的面向對象編程) 另外,最近覺得泛型真的是一個很神奇的存在。設 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...