C語言中for語句與if語句的優先問題
for語句與if語句:
1. 兩個if沒有什么關系,順次做。無論第一個if的條件成立不成立,都要執行第二個if。
2. for每循環一次,兩個if語句都要做一次。
3. for跟的那個語句塊大括號是第一個左大括號和末尾的右大括號,所以for每次都要把兩個if執行一次。
4. C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
5. 盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平臺。
這個程序怎樣理解,for語句為a判斷,然后語句b,if也判斷,輸出為a-百
(1)首先看for循環,for循環的結構為: for(表達式1;表達式2;表達式3){循環體}而表達式1是賦值語句,它用來給變量賦初始值,后面就不看這句話,則開始a=1,b=1。
進入循環后,只看變量a是否滿足退出循環的條件,或者說,循環體內是否有break語句。 (2)其次看循環體 里面有2個if語句,第一個if語句為 if(b>=20)break;表示當b>=20的時候,退出循環。
第二個if語句為 if(b%3==1){b+=3;continue;}表示b除以3的余數為1,則b加3,然后再循環。 因此,程序進入循環體后,b=1,則進入第2個if語句,b=b+3,得到b=4,此時,執行for循環的表達式3,就是a++,a=2。
并以此循環,直到b>=20時,程序退出。 最后a的值為a=8,其實表示了for循環一共執行的次數。
而循環中的 b-=5;根本沒有被執行。 程序運行的結果如下: 。
for循環條件判斷問題
區別在于++運算。
i++表示先返回i值,執行當前的語句后再自增。
++i表示先自增(自增相當于i=i+1),然后再執行語句。
比如
int i=1,j,k;
j=i++;
//執行結束后,i=2,j=1
//等效于j=i;i=i+1;
k=++i;
//執行結束后,i=3,k=3
//等效于i=i+1;k=i;
明白了這些你就應該知道了,在這個循環里,用i++和++i都是一樣的效果(相當于i=i+1)。因為這里并不需要返回任何值。
你地明白?
什么,還不明白?教你一個記憶訣竅:
如果++符號在變量前面,你就記“先加”,因為這種情況,是先把變量自加,然后再執行語句。
如果++符號在變量后面,那就是“后加”,因為是先執行語句,然后才自加該變量。
(聲明:正式屬于好像叫“自增”,但是我不記得了。so,如果你要應付考試,你最好查閱相關資料。不過我估計考試不會考術語吧?)
c語言for語句中的條件問題
仔細看(1)(2)(3)(4)(5)這樣,你應該能了解了吧。
c語言中的for循環語句使用最為靈活,不僅可以用于循環次數已經確定的情況,而且可以用于循環次數不確定而只給出循環結束條件的情況,它完全可以代替while語句.
for(表達式 1;表達式 2;表達式 3)語句
它的執行過程如下:
(1)先求表達式 1.
(2)求表達式2,若其值為真(值為非0),則執行for語句中指定的內嵌語句,然后執行下面第三步 做若為
假(值為0),則結束循環,轉到第5步.
(3)求解表達式3
(4)轉回上面第(2)步驟繼續執行;
(5)結束循環,執行for語句下面的一個語句;
for(循環變量賦初值;循環條件;循環變量增值)語句
如
for(i=1;i<=100;i++)sum=sum+i;
它的執行相當于
i=1;
while(i<=100){
sum=sum+i;
i++;
}
顯然,用for語句更簡單、方便。
說明:
(1)for語句的一般形式中的"表達式1"可以省略,此時應在for語句之前給循環變量賦初值.注意省略表達式1時,其后的分號不能省略.如for(;i<=100;i++){。.};
(2)如果表達式2省略 即不判斷循環條件,循環無終止地循環下去,也就是認為表達式2始終為真.
例如:for(i=1;;i++){。..};
相當于
i=1;
while(1)
{sum=sum+1;
i++;
}
(3)表達式3也可以省略,但此時程序設計者應另外設法保證循環能正常結束.如:
for(i=1;i<=100;)
{sum=sum+1;
i++;
}
這個例子的循環增量沒有放在表達式三的位置 而是作為循環體的一部分 其效果是一樣的.
(4)可以省略表達式1和表達式3,只有表達式2 即只給循環條件.
如
for(;i<=100;)
{
sum=sum+i;
i++;
}
這個相當于
whlie(i<=100)
{
sum=sum+i;
i++;
}
(5)三個表達式都可以省略,如:
for(;;)語句
相當于
while(1)語句
即不設初值 不判斷條件(認為表達式2為真值)循環變量不增值,無終止的執行循環體.
(6)表達式1也可以是設置循環變量初值的賦值表達式,也可以是與循環變量無關的其他表達式.如:
for(sum=0;i<=100;i++)
{
sum=sum+i;
}
for(sum=0,i=0;i<=100;i++)
{
sum=sum+i;
}
等等寫法.
if語句 for語句
關于IF IF 條件判斷語句,語法格式如下: IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command 說明: [NOT] 將返回的結果取反值即“如果沒有”的意思。
ERRORLEVEL 是命令執行完成后返回的退出值 Number 退出值的數字取值范圍0~255。判斷時值的排列順序應該又大到小。
返回的值大于或等于指定的值時條件成立。 string1==string2 string1和string2都為字符的數據,英文字符的大小寫將看做不同,這個條件中的等于號必須是2個(絕對相等),條件想等后即執行后面的 command EXIST filename 為文件或目錄存在的意思。
IF ERRORLEVEL這條語句必須放在某一個命令后面。執行命令后由IF ERRORLEVEL來判斷命令的返回值。
例: 1、 IF [NOT] ERRORLEVEL number command 檢測命令執行完后的返回值做出判斷。 echo off dir z: rem 如果退出代碼為1(不成功)就跳至標題1處執行 IF ERRORLEVEL 1 goto 1 rem 如果退出代碼為0(成功)就跳至標題0處執行 IF ERRORLEVEL 0 goto 0 :0 echo 命令執行成功! Rem 程序執行完畢跳至標題exit處退出 goto exit :1 echo 命令執行失敗! Rem 程序執行完畢跳至標題exit處退出 goto exit :exit Rem 這里是程序的出口 2、IF string1==string2 command string是字符串的意思,string1是第一個字符串,string2是第二個字符串。
檢測當前變量的值做出判斷: ECHO OFF IF %1==2 goto no (%1代表第一個字符串,“2”是第二個字符串) Echo 變量相等! Goto exit :no echo 變量不相等 goto exit :exit 大家可以這樣看效果 C:\>* 數字 3、IF [NOT] EXIST filename command 發現特定的文件做出判斷 echo off IF not EXIST * goto 1 echo 文件存在成功! goto exit :1 echo 文件不存在失敗! goto exit :exit 這個批處理大家可以放在c盤和d盤分別執行看看效果。 關于FOR FOR這個命令比較特殊是一個循環執行命令的命令,同時FOR的循環里面還可以套用FOR在進行循環。
這篇我們介紹基本的用法就不做套用的循環了,后面再來講解套用的循環。在批處理中FOR的命令如下: FOR [%%c] IN (set) DO [command] [arguments] 在命令行中命令如下: FOR [%c] IN (set) DO [command] [arguments] 常用參數: /L 該集表示以增量形式從開始到結束的一個數字序列。
因此,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生序列 (5 4 3 2 1)。 /D 如果集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。
/F 從指定的文件中讀取數據作為變量 eol=c - 指一個行注釋字符的結尾(就一個) skip=n - 指在文件開始時忽略的行數。 delims=xxx - 指分隔符集。
這個替換了空格和跳格鍵的默認分隔符集。 tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代的 for 本身。
這會導致額外變量名稱的分配。m-n格式為一個范圍。
通過 nth 符號指定 mth。如果符號字符串中的最后一個字符星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。
usebackq - 指定新語法已在下類情況中使用:在作為命令執行一個后引號的字符串并且一個單引號字符為文字字符串命令并允許在 filenameset中使用雙引號擴起文件名稱。 下面來看一個例子: FOR /F "eol=; tokens=2,3* delims=, " %i in (*) do @echo %i %j %k 會分析 * 中的每一行,忽略以分號打頭的那些行,將每行中的第二個和第三個符號傳遞給 for 程序體;用逗號和/或空格定界符號。
請注意,這個 for 程序體的語句引用 %i 來取得第二個符號,引用 %j 來取得第三個符號,引用 %k來取得第三個符號后的所有剩余符號。對于帶有空格的文件名,您需要用雙引號將文件名括起來。
為了用這種方式來使用雙引號,您還需要使用 usebackq 選項,否則,雙引號會被理解成是用作定義某個要分析的字符串的。 %i 專門在 for 語句中得到說明,%j 和 %k 是通過tokens= 選項專門得到說明的。
您可以通過 tokens= 一行指定最多 26 個符號,只要不試圖說明一個高于字母 'z' 或'Z' 的變量。請記住,FOR 變量名分大小寫,是通用的;而且,同時不能有 52 個以上都在使用中。
您還可以在相鄰字符串上使用 FOR /F 分析邏輯;方法是,用單引號將括號之間的 filenameset 括起來。這樣,該字符串會被當作一個文件中的一個單一輸入行。
最后,您可以用 FOR /F 命令來分析命令的輸出。方法是,將括號之間的 filenameset 變成一個反括字符串。
該字符串會被當作命令行,傳遞到一個子 *,其輸出會被抓進內存,并被當作文件分析。因此,以下例子: FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 會枚舉當前環境中的環境變量名稱。
以下列舉一個簡單的例子,他將說明參數/L和沒有參數的區別: 刪除文件* * * * * 例: ECHO OFF FOR /L %%F IN (1,1,5) DO DEL %%* 或 FOR %%F IN (1,2,3,4,5) DO DEL %%* 以上2條命令執行的結果都是一樣的如下: C:\>DEL * C:\>DEL * C:\>DEL * C:\>DEL * C:\>DEL * 關于變量的特別補充說明 批處理文件還可以像C語言的函數一樣使用。
while(某個條件); 這是條語句 if(某個條件); 語句 for(條件;條
只有while(某個條件);是可以完成某些操作的,比如字符串拷貝函數中的語句是while(*s++ = *t++);
而if(某個條件);是錯誤的,因為沒有if塊,如語句if(a = b);完成b的值賦給a,不如寫作a = b;更好。
而for(條件;條件;條件);語句本身就有問題,其實只有兩個分號之間部分才是循環條件語句,最前面的是只在進入循環體之前執行一次,而最后面的語句是在循環體執行完后才執行。
for循環的條件咋確定
for循環是開界的。它的一般形式為: for(<;初始化>; <;條件表達式>; <;增量>;) 語句; 初始化總是一個賦值語句, 它用來給循環控制變量賦初值; 條件表達式是一個關系表達式, 它決定什么時候退出循環; 增量定義循環控制變量每循環一次后 按什么方式變化。這三個部分之間用";"分開。
例如: for(i=1; i<=10; i++) 語句; 先給 " i " 賦初值1, 判斷 " i " 是否小于等于10, 若是則執行語句, 之后i值增加1。再重新判斷是否小于等于10, 直到條件為假, 即i>10時, 結束循環。
我是從“上海全鼎軟件學院”畢業的————————
轉載請注明出處華閱文章網 » for語句的條件判斷語句