六、判斷(一)

来源:https://www.cnblogs.com/piaolaipiaoqu/archive/2023/11/12/17828198.html
-Advertisement-
Play Games

六、判斷(一) 1、關係運算符 1)每一個關係運算符得出的結果都是一個布爾類型值(true、flase或真、假或1、0) 關係運算符 說明 關係運算符 說明 > 大於 >= 大於等於 < 小於 <= 小於等於 == 等於 != 不等於 #include <iostream> int main() { ...


六、判斷(一)

1、關係運算符

1)每一個關係運算符得出的結果都是一個布爾類型值(true、flase或真、假或1、0)

關係運算符 說明 關係運算符 說明
> 大於 >= 大於等於
< 小於 <= 小於等於
== 等於 != 不等於
#include <iostream>

int main()
{
    int a{ 500 };
    int b{ 1000 };
    bool c = a == b;  //false
    std::cout << c <<std::endl;

    c = (a <= b);  //true
    std::cout << c << std::endl;

}

2)關係運算符註意事項

①A=B是將B的值賦予給 A(把B記憶體中的內容,放入A的記憶體中);A==B是將A和B進行比較

不為0即為true

②註意bool和int之間的轉化,所有不為0的bool值一律為true,包括負數

#include <iostream>

int main()
{

    bool bA{ bool(100) };   //非0即為1
    int nA{ bA };

    std::cout << nA << std::endl;  //1
}

3)將輸出轉化為bool類型(true或flase)

​ std::boolalpah設置以後,所有的bool類型均顯示位false和true,而不是顯示為數字,浮點數也可以做比較

#include <iostream>

int main()
{
    bool A{ bool(100) };
    bool B{ 0 };

    std::cout << std::boolalpha;  //輸出在轉化為bool類型
    std::cout << A << std::endl;
    std::cout << B << std:: endl;
    std::cout << (A == B) << std::endl;
}

2、if語句

1)if語法

//語法1
if(bool表達式)語句;

//語法2
if(bool表達式)     //條件滿足後,括弧內的語句都執行;條件不滿足直接跳出語句或語句塊
{
    語句;
    語句;
}

//常見錯誤語句
if(bool表達式);語句;    //if語句第一個分號結束後,剩下語句全部執行

註:if只對緊跟著的語句負責

2)if語句拓展

​ if(a=b){} 取決於b的值,若b為0,則不執行,若b為非0,則執行。即if(a=b)相當於if(b)

//因失誤,將a==b寫做了a=b,就相當於if(b),根據b的值進行判斷,b為0則為假
if(a=b)
{
    語句;
}
3、if...else...語句

1)if...else...語法

//語法一
if(bool 表達式) 語句1;        //條件為真,執行語句1;條件為假,執行語句2
else 語句2;

//語法二
if(bool 表達式)
{
    語句;
    語句;
}
eles
{
	語句;
	語句;
}

2)if語句嵌套使用

//嵌套語法一
if(bool A)
    if(bool B)
        if(bool C)
            語句;
//嵌套語法二
if(a)
    if(b)
        語句
    else
    	語句
else
	if(c)
        語句

3)案例

​ 設計一個程式,要求用戶輸入一個字元,判斷這個字元是數字還是字母,如果是字母,那麼是大寫字母還是小寫字母;如果是小寫字母,那麼把這個字母變成大寫字母,反之變為小寫字母,同時要把這個判斷結果顯示出來(參考ASCII表)

#include <iostream>

int main() 
{
	char userIn;
	std::cout << "請輸入一個字元:";
	std::cin >> userIn;

	if (userIn > 47) 
	{
		if (userIn < 58) std::cout << "\n你輸入的是一個數字";
		if (userIn > 64) 
		{
			if (userIn < 91)
			{
				std::cout << "你輸入的是大寫字母" << userIn << "我們給他轉化成了小寫" << char(userIn + 32);
			}
			if (userIn > 96) 
			{
				if (userIn < 123) 
				{
					std::cout << "你輸入的是小寫字元" << userIn << "我們給他轉化成了大寫" << char(userIn - 32);
				}
			}

		}
	
	}

}

4、邏輯運算符

1)邏輯運算符

運算符 名稱 註意區分 說明
&& 邏輯與 位運算的與(&) a&&b,a和b都為true為true,缺一不可
|| 邏輯或 位運算的或(|) a||b,a和b其中一個為true,則為true
邏輯非 位運算的取反(~) !a 若a為false是,!a為true

註意事項:

①一元運算符的優先順序大於二元運算符

②位運算優先順序大於邏輯運算符

③邏輯非>邏輯與>邏輯或

#include <iostream>

int main()
{
	char userIn;
	std::cout << "請輸入一個字元:";
	std::cin >> userIn;
	if ((userIn >= 48) && (userIn < 58)) std::cout << "你輸入的是一個數字!";
	if ((userIn >= 65) && (userIn <= 90) || (userIn > 96) && (userIn < 123))
		std::cout << "你輸入的是一個字母!" << std::endl;
}

2)數值在邏輯運算中的運用

int a{},b{};
if(a&&b)  //a和b都不等於0,才成立。,只要有一個為0,則執行。即if((a!=0)&&(b!=0))
if(a||b)  //a和b至少有一個不等於0
if(!a) //要想執行,則a等於0

註:數值在邏輯運算中的應用本質是先把數值轉化成bool值,再進行邏輯運算。

3)將執行成本低的語句放到前面,執行成本高的語句放到後面

bool a{};
int c{500};
//如下兩種條件判斷第二種更好
if(c*500+200+c+c++)&&a)  //先算c*500+200+c+c++,後判斷a的值。如果a為0,則為false,if語句不執行
{
    
}

if(a&&(c*500+200+c+c++))  //加快了代碼的運算速度,如果a為0,則後面的c*500+200+c+c++則不用執行
{
    
}

5、條件運算符(三元運算符)

1)條件運算符語法

x=bool?y:z  //等同於如下if表達式
<==>
if(bool)x=y;
else x=z;

c=a>b?a:b   //如果a>b條件成立,則c=a,條件不滿足c=b

註:條件運算符的運算優先順序最低

2)案例:用戶輸入兩個數,輸出最大的那個數

//用戶輸入兩個數,輸出最大的那個數
#include <iostream>
int main()
{
	int a, b, c;
	std::cout << "請輸入第一個數:";
	std::cin >> a;
	std::cout << "請輸入第二個數:";
	std::cin >> b;
	c = a > b ? a : b;
	std::cout << "較大的數為:" << c << std::endl;
}

3)案例:輸入一個數,計算10000除以這個數以後的結果。

//輸入一個數,計算10000除以這個數以後的結果。
#include <iostream>
int main()
{
	int cs;
	std::cout << "請輸入一個數,我們將為你計算10000除以這個數以後的結果:";
	std::cin >> cs;
	int end;
	end = cs ? (10000 / cs) : 0;   //直接排除了除數為0的情況
	std::cout << end;
}

6、異或運算技巧
if(a^b)         //異或運算效率比下方的if語句效率高的多
    
<==>

if((a==true)&&(b==flase)) || (a==false)&&(b==true))         //即a和b不同同時為真或同時為假
if((a==true)||b==true)&&!(a==true)&&(b==true))
7、字元處理

字元處理函數頭文件:cctype頭文件

函數 說明
int isupper(char) 判斷字元是否為大寫字母
int islower(char) 判斷字元是否為小寫字母
int isalpha(char) 判斷字元是否為字母
int isdigit(char) 判斷字元是否是數字
int isalnum(char) 判斷字元是否是字母或者數字
int isspace(char) 判斷字元是否為空白
int isblank(char) 判斷字元是不是空格
int ispunct(char) 判斷字元是不是標點符號
int isprint(char) 判斷字元能不能列印
int iscntrl(char) 判斷字元是不是控制字元
int isgraph(char) 判斷字元是不是圖形字元
int tolower(char) 將字元轉化為大寫
int toupper(char) 將字元轉化為小寫
#include <iostream>
#include <cctype>

int main()
{
	char char_A{ 'a'};
	std::cout << "字元是否為大寫:"<<isupper(char_A) << std::endl; //1為真,0為假

	char A,B;
	std::cout << "請輸入一個字元:";
	std::cin >> A;
	B = tolower(A);         //轉化為小寫
	std::cout << "轉化後的字元為:" << B << std::endl;
}

8、案例:游戲登錄

​ 設計要求:設計游戲麟江湖的登錄模塊

1)模擬註冊:要求用戶輸入一個8位以為的十六進位數作為賬號,然後再輸入一個8位以內的十六進位數作為密碼

2)模擬登錄:要求用戶分別輸入賬號和密碼進行登錄,然後根據用戶的輸入做出判斷

3)用戶的賬戶和密碼不可以小於5位

#include <iostream>

int main()
{
	std::cout << "============麟江湖用戶註冊===================" << std::endl;

	unsigned long long uId, uPass;
	std::cout << "請輸入你的賬號(16位十六進位):";
	std::cin >> std::hex >> uId;
	std::cout << "請輸入你的密碼:";
	std::cin >> uPass;

	//註冊部分
	if ((uId > 0xFFFFF) && (uPass > 0xFFFFF))
	{
		unsigned long long uInId, uInpass;
		system("cls");
		std::cin >> std::hex;
		std::cout << "請輸入你的賬號(16位十六進位):";
		std::cin >> uInId;
		std::cout << "請輸入你的密碼:";
		std::cin >> uInpass;
		//用戶登錄部分
		if (uId == uInId)
		{
			if (uPass == uInpass)
			{
				std::cout << "登錄游戲!";
			}

		}
		else
		{
			std::cout << "你的密碼輸出有誤";
		}

	}
	else
	{
		std::cout << "註冊失敗,賬號或者密碼不足5位!!!";
	}

}


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

-Advertisement-
Play Games
更多相關文章
  • 在多線程編程中,如果每個線程的運行不是完全獨立的。那麼,一個線程執行到某個時刻需要知道其他線程發生了什麼。嗯,這就是所謂線程同步。同步事件對象(XXXEvent)有兩種行為: 1、等待。線程在此時會暫停運行,等待其他線程發出信號才繼續(等你約); 2、發出信號。當前線程發出信號,其他正在等待線程收到 ...
  • 思想 DAO(Data Access Object)數據訪問對象,是我們在做結構化資料庫訪問的時候傳輸的對象,通過這個對象我們可以與資料庫中的表建立映射關係 DTO(Data Transfer Object)是我們在與前端進行數據交換時傳遞的對象 為什麼需要設置這這兩種對象呢? 為了數據安全 如果我 ...
  • 1、Bring Up流程 SOC (System on a Chip) bring-up是一個複雜的過程,涉及到硬體、固件和軟體的集成和驗證,以下是一個基於BROM,SPL,UBOOT和Linux的啟動流程的概述: BROM (Boot Read-Only Memory)啟動:啟動的最初階段,在這個 ...
  • Android Studio簡單還原微信ui 上一期完成內容(前情提要) 上次我們簡單地實現了微信的幾個初始界面,並且在聯繫人頁面通過recycleview添加了許多的view 目標 建立在上次的基礎上,我們來擴展聯繫人界面的功能,給每一個view添加一個點擊功能,讓其可以跳轉到另一個activit ...
  • 本章將探討 HarmonyOS 的高級特性,包括分散式能力、安全機制和性能優化。這些特性可以幫助你構建更強大、更安全、更高效的應用。 ...
  • 事件對象 事件對象是由瀏覽器在外面觸發事件的時候創建的,這個對象封裝了各種事件相關的各種信息 例如: 滑鼠的位置 鍵盤的按鍵 瀏覽器創建事件對象後,會將事件對象作為響應參數傳遞 在DOM類型中有多種不同類型的事件對象,但是他們都一個祖先Event event.clientX:獲取滑鼠的X軸坐標 ev ...
  • 概念 日期類型使用自 UTC(Coordinated Universal Time,國際協調時間)1970 年 1 月 1 日午夜(零時)開始經過的毫秒數來保存日期。Date 類型保存的日期能夠精確到 1970 年 1 月 1 日之前或之後的 285616 年。 創建Date對象 var dateO ...
  • 清晰架構原則對於任何希望創建健壯、可維護和可擴展軟體的軟體開發者來說都至關重要。理解並實施這些概念可以顯著提升你的編程技能。以下是對20個基本架構洞見的深入探討:依賴規則: 清晰架構的核心是依賴規則。它規定源代碼的依賴關係應始終指向內部。這種內向的方向確保了一個具有彈性的基礎,強調了關註點的分離,並 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...