《零基礎看得懂的C語言入門教程 》瞭解C語言的邏輯運算

qwer1030274531發表於2020-10-22

一、學習目標

  1. 瞭解邏輯判斷的概念
  2. 瞭解if語句的使用方法
  3. 瞭解switch語句的使用方法
  4. 瞭解邏輯運算子的使用方法

二、瞭解if語句的使用方法

if語句在C語言中用於流程控制,也就是在程式執行時,根據滿足的條件來選擇執行不同的程式碼塊。流程控制就像你計劃明早天氣如果晴朗就去跑步,假設天氣變差,下雨了就不去了。這就是不同的條件進行不同的選擇。

2.1 if語句的使用
if語句在C語言中用於判斷條件是否成立從而執行一部分程式碼,我們使用一個簡單的例子介紹if語句的使用方法:

#include<stdio.h>void main(){
	int a=1;
	if(a==1){
		printf("變數a的值等於1");
	} }1234567

以上程式碼建立了一個變數a賦值為1。之後使用了if語句判斷a是否等於1,判斷正確則執行語句 printf("變數a的值等於1");,條件判斷不成立則不執行  printf("變數a的值等於1");

從以上示例可以看出if語句判斷一個條件,這個條件編寫於if之後的圓括號內;以上示例的條件為a==1;在C語言中判斷兩個值是否相等使用兩個等於號 ==,在條件的圓括號後使用一對花括號{},在花括號內編寫條件判斷正確後需要執行的程式碼。

執行結果如下:
在這裡插入圖片描述
我們修改一下a的值改為2,檢視是否會執行  printf("變數a的值等於1");。修改後的程式碼如下:

#include<stdio.h>void main(){
	int a=2;
	if(a==1){
		printf("變數a的值等於1");
	} }1234567

執行結果如下:
在這裡插入圖片描述
從結果得知並沒有執行程式碼  printf("變數a的值等於1");
那如何使if的條件判斷不成立時有一個提示?這時可以使用else語句,else語句在條件不成立時將會執行else語句內的程式碼,else語句的內容也是在花括號內編寫,不過這個花括號是在else這個關鍵字(關鍵字指C語言中已有特殊功能的標誌,如int、if、float等)後。程式碼如下:

#include<stdio.h>void main(){
	int a=2;
	if(a==1){
		printf("變數a的值等於1");
	} else{
		printf("變數a的值不等於1");
	}}123456789

以上程式碼在if語句的花括號後“無縫連線”了一個else關鍵字。在else關鍵字後有一對花括號,在該花括號內編寫a不等於1時所需要的提示語句即可。

執行結果如下:
在這裡插入圖片描述
如果我想a的值等於1時輸出“哈哈哈”,a等於2時輸出“嘿嘿嘿”,a等於3時輸出“呀呀呀”,a等於其它值時輸出“我都沒猜對”;以上需求可以使用if…elseif語句實現。程式碼如下:

#include<stdio.h>void main(){
	int a=2;
	if(a==1){
		printf("哈哈哈");
	} else if(a==2){
		printf("嘿嘿嘿");
	} else if(a==3){
		printf("呀呀呀");
	}else{
		printf("我都沒猜對");
	} }12345678910111213

以上程式碼在if之後的else關鍵字後新增了if(注意if前面有個空格),隨後一個圓括號,圓括號內編寫其它條件,滿足則會執行當前else if 語句的花括號內的程式碼,當所有條件都不對的時候,執行else語句,也是在最末位的語句。 /cure/

執行結果如下:
在這裡插入圖片描述
以上程式碼還可以改一下,讓我們在都沒猜對的值的情況下輸出值,程式碼如下:

#include<stdio.h>void main(){
	int a=22;
	if(a==1){
		printf("哈哈哈");
	} else if(a==2){
		printf("嘿嘿嘿");
	} else if(a==3){
		printf("呀呀呀");
	}else{
		printf("我都沒猜對,其實a的值%d",a);
	} }12345678910111213

結果如下:
在這裡插入圖片描述
2.2 if語句判斷多個條件
以上學習的if只能判斷一個條件,若我需要判斷多個條件該怎麼辦?這時可以使用邏輯運算子。例如當a等於1或2時表示天氣下雨和颳風,我則不去跑步,當a等於3或者4時則表示需要上學和補課,當a等於其它值是則可以去跑步。

首先我們使用簡單的if語句瞭解一下邏輯運算子。程式碼如下:

#include<stdio.h>void main(){
	int a=1;
	if(a==1||a==2){
		printf("天氣正在下雨或颳風");
	} }1234567

以上程式碼著重關注if語句的條件  a==1||a==2,其中使用的“||”為邏輯運算子“或”運算。或運算表示兩個表示式( 表示式指是由數字、算符、數字分組符號等可以求得一個值的組合)的值有一個正確,那麼或運算子(||)左右兩邊整體的值則為正確。當前或運算子左邊為a 1,右邊為a2,只要滿足其中一個則會執行  printf("天氣正在下雨或颳風");

執行結果如下:
在這裡插入圖片描述
修改一下程式碼完成以上所說的需求“ a等於1或2時表示天氣下雨和颳風,我則不去跑步,當a等於3或者4時則表示需要上學和補課,當a等於其它值是則可以去跑步。”,程式碼如下:

#include<stdio.h>void main(){
	int a=4;
	if(a==1||a==2){
		printf("天氣正在下雨或颳風");
	} else if(a==3||a==4){
		printf("我要去上學或者補課");
	}else{
		printf("我要去跑步");
	}
	}123456789101112

結果如下:
在這裡插入圖片描述
2.3 邏輯運算子與&&
以上我們介紹了邏輯運算子或(||),使用或運算子只需要左右兩邊有一個表示式正確則左右兩邊整體的值為正確。在C語言中正確我們可以使用一個標識表示。這個標識為TRUE。

這一小節我們將學習需要表示式兩邊都正確整體的值才為正確的運算子“與”,與運算使用運算子&&。我們修改上一小節的程式,修改後程式碼如下:

#include<stdio.h>void main(){
	int a=4;
	if(a==1&&a<5){
		printf("天氣正在下雨或颳風");
	} else if(a==3||a==4){
		printf("我要去上學或者補課");
	}else{
		printf("我要去跑步");
	}}1234567891011

以上程式碼if後的條件為 a==1&&a<5,中間的運算子更改為了&&,&&表示左右兩邊表示式均正確,當前運算才為正確。很明顯a等於,不滿足第一個條件,滿足  a==3||a==4條件,則會執行程式碼 printf("我要去上學或者補課");。執行結果如下:
在這裡插入圖片描述
我們修改a的值為1,則會執行程式碼 printf("天氣正在下雨或颳風");。(雖然a等於1的時候肯定小於5,這裡只是作為演示)程式碼如下:

#include<stdio.h>void main(){
	int a=1;
	if(a==1&&a<5){
		printf("天氣正在下雨或颳風");
	} else if(a==3||a==4){
		printf("我要去上學或者補課");
	}else{
		printf("我要去跑步");
	}
	}123456789101112

結果如下: 在這裡插入圖片描述

二、瞭解switch語句的使用方法

switch語句與if作用相同,均是用與做流程控制,也和if語句一樣需要使用條件進行控制。
學習了if語句後switch的學習相對比較簡單,先列出一個格式說明:

switch(變數){
             
             case 值:
                  //程式碼內容 
                   break;//break是跳出作用,不像if只執行一處,如果不加break會執行下一句 
             case 值:
                  //程式碼內容 
                   break;//break是跳出作用,不像if只執行一處,如果不加break會執行下一句 
             case 值:
                  //程式碼內容 
                   break;//break是跳出作用,不像if只執行一處,如果不加break會執行下一句 
             default:
                  //程式碼內容    
             } 1234567891011121314

switch是關鍵字,後接一個圓括號,圓括號內傳入一個變數;在switch圓括號後使用一對花括號,花括號內為switch語句的內容。使用case關鍵字後接一個值,假設switch傳入的變數值為1,則跳轉到case 1:後執行冒號後的程式碼,在程式碼的最後一行使用break關鍵字跳出。(break的作用為跳出)如不加break則會執行按順序往下的case內容。

先看一示例程式碼:

#include<stdio.h>void main() {
    int a=1;
    switch(a){
                   case 1:
                        printf("選擇的是夫妻肺片");
                        break;
                   case 2:
                        printf("選擇的是腸粉");
                        break;
                   case 3:
                        printf("選擇的是口水蝦");
                        break;
                   case 4:
                        printf("選擇的是瀨尿蝦");
                        break;
                   case 5:
                        printf("選擇的是炸蝗蟲");
                        break;
                   default:
                        printf("沒有這個選單"); 
             }}123456789101112131415161718192021222324

以上程式碼中a的值等於1,switch傳入一個a作為條件,a為1則跳轉到case 1處執行冒號後的程式碼 printf("選擇的是夫妻肺片");
執行結果如下:
在這裡插入圖片描述
我們嘗試在case 1與case 2語句塊中刪除最後一條語句  break; 看看是否會繼續執行下一個case 2:的內容。程式碼如下:

#include<stdio.h>void main() {
    int a=1;
    switch(a){
                   case 1:
                        printf("選擇的是夫妻肺片");
                   case 2:
                        printf("選擇的是腸粉");
                   case 3:
                        printf("選擇的是口水蝦");
                        break;
                   case 4:
                        printf("選擇的是瀨尿蝦");
                        break;
                   case 5:
                        printf("選擇的是炸蝗蟲");
                        break;
                   default:
                        printf("沒有這個選單"); 
             }}12345678910111213141516171819202122

結果如下:
在這裡插入圖片描述
從結果得知程式並沒有跳出。由於並沒有換行,我們使用\n符號可以進行換行,使執行結果更加清晰。修改程式碼如下:     

#include<stdio.h>void main() {
    int a=1;
    switch(a){
                   case 1:
                        printf("選擇的是夫妻肺片\n");
                   case 2:
                        printf("選擇的是腸粉\n");
                   case 3:
                        printf("選擇的是口水蝦\n");
                        break;
                   case 4:
                        printf("選擇的是瀨尿蝦\n");
                        break;
                   case 5:
                        printf("選擇的是炸蝗蟲\n");
                        break;
                   default:
                        printf("沒有這個選單\n"); 
             }}12345678910111213141516171819202122

以上程式在printf中新增了\n,\n的作用是換行,輸出顯示時並不會輸出\n。
執行結果如下: 在這裡插入圖片描述


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2728770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章