C語言學習【C控制語句:循環】

C語言學習【C控制語句:循環】

while循環

/* 根據用戶鍵入的整數求和 */#include "stdio.h"int main(void)
{long num;long sum = 0L;            /* 把sum初始化為0 */int status;printf("Please enter an integer to be summed");printf("(q to quit):");status = scanf("%ld", &num);while (status == 1)           /* == 的意思是 “等于” */{sum = sum + num;printf("please enter next integer (q to quit):");status = scanf("%ld", &num);}printf("Those integers sum to %ld.\n", sum);}

程序運行結果

Please enter an integer to be summed(q to quit):21
please enter next integer (q to quit):22
please enter next integer (q to quit):23 
please enter next integer (q to quit):w
Those integers sum to 66.

==運算符是C的相等運算符(equality operator).

while語句

while循環的通用形式如下:

while (expression)statement

statement部分可以是以分號結尾的簡單語句,也可以是用花括號括起來的復合語句。
如果expression為真(或者更一般地說,非零),執行statement部分一次,然后再判斷expression。

終止循環

/* 何時退出循環 */#include "stdio.h"int main(void)
{int n = 5;while (n < 7){printf("n = %d\n", n);n++;printf("Now n = %d\n", n);}printf("The loop has finished.\n");return 0;
}

程序運行結果

n = 5
Now n = 6
n = 6
Now n = 7
The loop has finished.

使用while時,要牢記一點:只有在測試條件后面的單獨語句(簡單語句或復合語句)才是循環部分。

/* 注意分號地位置 */#include "stdio.h"int main(void)
{int n = 0;while (n++ < 3); printf("n is %d\n", n);printf("That's all this program does.\n");return 0;
}

程序運行結果

n is 4
That's all this program does.

在該例中,測試條件后面地單獨分號是空語句(null statement)

關系運算符和表達式比較大小

關系表達式relational expression
關系運算符relational operator

/* 浮點數比較 */#include "math.h"
#include "stdio.h"int main(void)
{const double ANSWER = 3.14159;double response;printf("What is the value of pi?\n");scanf("%lf", &response);while(fabs(response - ANSWER) > 0.0001){printf("Try again!\n");scanf("%lf", &response);}printf("Close enough!\n");return 0;
}

程序運行結果

What is the value of pi?
3.14
Try again!
3.1415926
Close enough!

上述程序一直會提示用戶繼續輸入,除非用戶輸入的值與正確值之間相差小于0.0001.

什么是真

/* C語言中的真和假的值 */
#include "stdio.h"int main(void)
{int true_val, false_val;true_val = (10 > 2);           /* 關系為真 */false_val = (10 == 2);         /* 關系為假 */printf("true = %d, false = %d\n", true_val, false_val);
}

程序運行結果

true = 1, false = 0

對C語言,表達式為真的值是1,表達式為假的值是0

其他真值

/* 那些值為真 */#include "stdio.h"int main(void)
{int n = 3;while (n){printf("%2d is true\n", n--);}printf("%2d is false\n", n);n = -3;while (n){printf("%2d is true\n", n++);  }printf("%2d is false\n", n);return 0;
}

程序運行結果

 3 is true2 is true1 is true0 is false
-3 is true
-2 is true
-1 is true0 is false

也可以說,只要測試條件為非零,就會執行while循環。

新的_Bool類型

在C語言中,一直用int類型的變量表示真/假值C99專門針對這種類型的變量新增了_Bool類型,在編程中,表示真或假的變量被稱為布爾變量(Boolean variable),所以_Bool是C語言中布爾變量的類型名。_Bool類型的變量只能存儲1(真)0(假).

/* 使用_Bool類型的變量 variable */
#include "stdio.h"int main(void)
{long num;long sum = 0;_Bool input_is_good;printf("請輸入一個整數求和");printf("(q to quit): ");input_is_good = (scanf("%ld", &num) == 1);while (input_is_good){sum = sum + num;printf("Please enter next integer (q to quit): ");input_is_good = (scanf("%ld", &num) == 1);}printf("Those integers sum to %ld.\n", sum);return 0;
}

程序運行結果

請輸入一個整數求和(q to quit): 22
Please enter next integer (q to quit): 23
Please enter next integer (q to quit): 24
Please enter next integer (q to quit): q
Those integers sum to 69.

優先級和關系運算符

關系運算符的優先級比算數運算符(包括+和-)低,比賦值運算符高,例如
x > y + 2相當于x > (y + 2)
x = y > 2相當于x = (y > 2).
關系運算符比賦值運算符的優先級高,例如
x_bigger = x > y相當于x_bigger = ( x > y).

關系運算符之間有兩種不同的優先級:
高優先級組<<=>>=
低優先級組==!=

與其他大多數運算符一樣,關系運算符的結合律也是從左往右。

下圖為部分運算符優先級表

小結:while語句

小結:關系運算符和表達式

不確定循環和計數循環

一些while循環是不確定循環(indefinite loop);
還有另一類是計數循環(counting loop).

/* 一個計數循環 */#include "stdio.h"int main(void)
{const int NUMBER = 22;int count = 1;               /* 初始化 */while (count <= NUMBER){printf("Be my Valentine!\n");count++;}return 0;
}

程序運行結果

Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!
Be my Valentine!

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

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

相關文章

基于微信小程序的校園捐贈系統的設計與實現

校園捐贈系統是一種便捷的平臺&#xff0c;為校園內的各種慈善活動提供支持和便利。通過該系統&#xff0c;學生、教職員工和校友可以方便地進行捐贈&#xff0c;并了解到相關的項目信息和捐助情況。本文將介紹一個基于Java后端和MySQL數據庫的校園捐贈系統的設計與實現。 技術…

Java日期Date和LocalDateTime的工具類

Date package com.qiangesoft.utils.date;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 日期工具類** author lq* date 2024-05-23*/ public class DateUtil {public static final String[] CHINESE_WEEK_DAY new String[]{&q…

Excel 公式積累

1.獲取當前位置的左側單元格 引用當前單元格左側的第一個單元格&#xff1a;OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1) ROW()返回當前單元格的行號&#xff0c;COLUMN()返回當前單元格的列號。 ADDRESS函數可以根據指定行號和列號獲得工作表中的某個單元格的地址。例如…

go全部版本下載目錄

linux安裝教程&#xff1a; Download and install - The Go Programming Language rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gzexport PATH$PATH:/usr/local/go/bin go version 全部版本下載目錄&#xff1a; All releases - Th…

鴻蒙本機通信

demo地址 https://github.com/MartinLi89/WanHarmony 目前只學到一部分&#xff0c;不正確的地方&#xff0c;還望大家指正&#xff0c;我會及時更新&#xff0c;謝謝&#xff0c;歡迎評論留言 線程內通信&#xff0c;線程間通信&#xff0c;進程間通信 本篇帖子中描述的比較寬…

快速開發 Chrome插件

什么是 Chrome 插件 Chrome 插件程序是一種用于增強 Google Chrome 瀏覽器功能的小型軟件應用程序。它們可以幫助用戶自定義瀏覽體驗、添加新功能、集成外部服務以及自動化任務等。擴展程序使用 HTML、CSS 和 JavaScript 編寫&#xff0c;利用 Chrome 提供的 API 來與瀏覽器及…

18.分布式監控zabbix-proxy

zabbix proxy 使用場景: 監控遠程區域設備監控本地網絡不穩定區域當 zabbix 監控上千設備時,使用它來減輕 server 的壓力簡化分布式監控的維護 環境規劃&#xff1a; zabbix-server&#xff1a;外網IP地址192.168.111.66 zabbix-proxy:外網IP地址192.168.111.11 內網IP地址…

AI工具推薦:提升工作效率與生活質量

有哪些好用&#xff0c;且國內可用的AI工具&#xff1f; 副本 在AI大發展的年代&#xff0c;還有人在工作、生活中沒有使用過AI嗎&#xff1f; 今天為大家推薦幾款國內可用、好用的AI工具&#xff0c;不論是自媒體文案寫作、打工人匯報PPT、還是論文、公文寫作&#xff0c;總…

設計系統采購與安裝:乙級資質申請的技術準備

在設計系統采購與安裝方面&#xff0c;為乙級資質申請所做的技術準備涉及多個方面。以下是一些關鍵的技術準備事項&#xff1a; 明確技術需求&#xff1a;首先&#xff0c;需要明確乙級資質申請所需的技術系統類型和規格。這可能包括但不限于設計軟件、工程管理系統、項目管理系…

【Linux】之【Get√】查看linux CPU 架構 ---- amd64、x86、x86_64、arm64

關于Linux軟件下載時&#xff1a;amd64、x86、x86_64、arm64 的說明 archuanme -alscpu

【設計模式深度剖析】【2】【創建型】【工廠方法模式】

&#x1f448;?上一篇:單例模式 | 下一篇:抽象工廠模式&#x1f449;? 目錄 工廠方法模式概覽工廠方法模式的定義英文原話直譯 工廠方法模式的4個角色抽象工廠&#xff08;Creator&#xff09;角色具體工廠&#xff08;Concrete Creator&#xff09;角色抽象產品&#x…

關于光照模型

關于光照模型 早期學習筆記&#xff0c;轉載自早期Excel。 存在大量格式錯誤、可讀性非常低&#xff0c;建議等待作者修復后閱讀、或者作為查找性材料使用。 中文名英文名/縮寫說明長什么樣蘭伯特光照模型Lambert Lighting1.蘭伯特反射(Lambert)是最常見的一種漫反射&#x…

iptables防火墻【其二 實驗篇】

保存&#xff0c;還原規則 防火墻規則的備份和還原 導出&#xff08;備份&#xff09;所有表的規則 iptables-save > /opt/ipt.txt 導入&#xff08;還原&#xff09;規則 iptables-restore < /opt/ipt.txt 將iptables規則文件保存在 /etc/sysconfig/iptables 中&#xf…

亞馬遜賣家賬號注冊復雜嗎?需要什么輔助工具嗎?

在當今數字化的商業世界中&#xff0c;亞馬遜作為全球最大的電商平臺之一&#xff0c;吸引著無數的賣家和買家。對于想要進入亞馬遜銷售市場的賣家來說&#xff0c;首先要完成的一項重要任務就是注冊亞馬遜賣家賬號。本文將詳細介紹亞馬遜注冊的步驟、所需時間&#xff0c;以及…

LIMS系統能解決實驗室管理的哪些痛點

LIMS&#xff08;Laboratory Information Management System&#xff0c;實驗室信息管理系統&#xff09;在解決實驗室管理的痛點方面發揮著重要作用。以下是LIMS系統能夠解決的一些主要痛點&#xff1a; 一、人工介入大量重復性工作 LIMS系統能夠自動化處理實驗室中的許多重復…

[深度學習]基于yolov8+bytetrack+pyqt5實現車輛進出流量統計+車輛實時測速實現

以前使用過yolov5deepsort實現過車輛進出流量統計車輛實時測速&#xff0c;可以看我往期視頻&#xff0c;這回改成yolov8bytetrack實現&#xff0c;實時性更好&#xff0c;原理和原來一樣。車流量進出統計車速測量優點&#xff1a; 使用目標檢測算法考慮bbox抖動&#xff0c;解…

C-數據結構-單向鏈表(帶頭節點)

單向鏈表帶頭節點&#xff08;head&#xff09;&#xff08;數據域&#xff0c;指針域&#xff09; 隨機訪問性比較差 但是插入刪除操作較為簡單。 list.h #ifndef LIST_H__ #define LIST_H__typedef int datatype;typedef struct node_st {datatype data;struct node_st *ne…

將富文本編輯器中的H標簽處理成樹形結構,支持無限層級

做富文本編輯器時&#xff0c;需要將文本里的標題整理成樹形數據&#xff0c; // 這里是數據結構 const data [{"id": "hkyrq2ndc-36yttda0lme00","text": "阿薩德阿薩德阿薩","level": 1,"depth": 1,},{"…

Window Linux 權限提升

#基礎點&#xff1a; 0、為什么我們要學習權限提升轉移技術&#xff1a; 簡單來說就是達到目的過程中需要用到它 心里要想著我是誰 我在哪 我要去哪里 1、具體有哪些權限需要我們了解掌握的&#xff1a; 后臺權限&#xff0c;數據庫權限&#xff0c;Web權限&#xff0c;用戶權…

【VTKExamples::Texture】第六期 TextureThreshold

很高興在雪易的CSDN遇見你 VTK技術愛好者 QQ:870202403 公眾號:VTK忠粉 前言 本文分享VTK樣例TextureThreshold,并解析接口vtkTexture,希望對各位小伙伴有所幫助! 感謝各位小伙伴的點贊+關注,小易會繼續努力分享,一起進步! 你的點贊就是我的動力(^U^)ノ~Y…