六、判斷(一)

来源: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...