C語言程序設(shè)計(jì)(第三章)_第1頁
C語言程序設(shè)計(jì)(第三章)_第2頁
C語言程序設(shè)計(jì)(第三章)_第3頁
C語言程序設(shè)計(jì)(第三章)_第4頁
C語言程序設(shè)計(jì)(第三章)_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章C語言程序結(jié)構(gòu)及相關(guān)語句3.1

C語言結(jié)構(gòu)相關(guān)知識(shí)3.1.1算法描述方法算法一般可以用以下兩種方法來進(jìn)行描述。偽代碼:采用近似高級(jí)語言但又不受語法約束的語言描述流程圖:傳統(tǒng)的流程圖常用的符號(hào)如圖所示,由這些框和流程線組成的流程圖來表示算法3.1.2結(jié)構(gòu)化程序結(jié)構(gòu)化程序設(shè)計(jì)方法是程序設(shè)計(jì)的先進(jìn)方法,結(jié)構(gòu)化程序設(shè)計(jì)是一種使用順序、選擇和循環(huán)共三種基本控制結(jié)構(gòu),并且使用這三種基本結(jié)構(gòu)足以表達(dá)出各種其他形式的結(jié)構(gòu)的程序設(shè)計(jì)方法(1)順序結(jié)構(gòu)在執(zhí)行時(shí)按照先后順序逐條進(jìn)行,沒有分支,沒有循環(huán)。如后面介紹的賦值語句、輸入、輸出語句等都可以構(gòu)成順序結(jié)構(gòu)(2)分支結(jié)構(gòu)分支結(jié)構(gòu)也稱為選擇結(jié)構(gòu),根據(jù)不同的條件去執(zhí)行不同分支中的語句。如后面章節(jié)中介紹的if語句、switch語句等都可以構(gòu)成分支結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)根據(jù)條件,使同一組語句重復(fù)執(zhí)行多次或一次也不執(zhí)行。循環(huán)結(jié)構(gòu)包括當(dāng)型循環(huán)和直到型循環(huán)3.2

順序語句3.2.1C程序的語句C程序的執(zhí)行部分由語句組成的。程序的功能也由執(zhí)行語句來實(shí)現(xiàn)。C語句可分五類:表達(dá)式語句函數(shù)調(diào)用語句控制語句復(fù)合語句空語句1.表達(dá)式語句表達(dá)式語句由表達(dá)式加上分號(hào)“;”組成。一般形式為:

表達(dá)式;執(zhí)行表達(dá)式語句就是計(jì)算表達(dá)式的值。例如:c=a+b;是賦值語句。2.函數(shù)調(diào)用語句

由函數(shù)名、實(shí)際參數(shù)(實(shí)參)加上分號(hào)“;”組成。一般形式為:函數(shù)名(實(shí)參表);執(zhí)行函數(shù)語句是調(diào)用函數(shù)體并將實(shí)參值復(fù)制給函數(shù)定義中的對(duì)應(yīng)形式參數(shù)(形參),然后執(zhí)行被調(diào)函數(shù)體中的語句,求取函數(shù)值。3.控制語句控制語句用于控制程序的流程,它們由特定的語句定義符組成,用以實(shí)現(xiàn)程序的各種結(jié)構(gòu)方式。

例如:可以用if語句來實(shí)現(xiàn)選擇結(jié)構(gòu)程序,用for語句來實(shí)現(xiàn)循環(huán)。4.復(fù)合語句將多個(gè)語句用一對(duì)括號(hào){}括起來組成的一個(gè)語句塊稱為復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是一條語句(一個(gè)整體),而不是多條語句,例如:{ k=i+j; a=b-c; printf("%d,%d",k,a);}這是一條復(fù)合語句。復(fù)合語句內(nèi)的各條語句都以分號(hào)“;”結(jié)尾,在括號(hào)“}”外不用加分號(hào)。5.空語句只有分號(hào)“;”組成的語句稱為空語句。空語句什么也不執(zhí)行。3.2.2數(shù)據(jù)輸出語句數(shù)據(jù)輸出語句用于向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出數(shù)據(jù)在C語言中,所有數(shù)據(jù)輸入/輸出都由庫函數(shù)完成。因此都是函數(shù)語句。1.格式化輸出函數(shù)printf()printf()函數(shù)稱為格式輸出函數(shù)printf()函數(shù)的功能是按用戶指定的格式,將指定的數(shù)據(jù)顯示到顯示器屏幕上。(1)printf()函數(shù)調(diào)用的一般形式printf()的函數(shù)原型在頭文件“stdio.h”中。printf函數(shù)調(diào)用的一般形式為:printf(“格式控制字符串”,輸出表);其中格式控制字符串用于指定輸出格式,可以同時(shí)輸出指定的字符串。格式控制串由格式字符串和非格式字符串(即要輸出的字符串)兩種組成格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、長(zhǎng)度、小數(shù)位數(shù)等。如“%d”表示按十進(jìn)制整型輸出。非格式字符串在輸出時(shí)按原樣顯示。例3.1printf()函數(shù)示例。#include<stdio.h> /*包含庫函數(shù)printf()所需信息*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta=65,b=66; /*定義變量*/ printf(“%d%d\n”,a,b); /*按整型格式輸出a,b*/ printf(“%d,%d\n”,a,b); /*按整型格式輸出a,b*/ printf(“%c,%c\n”,a,b); /*按字符格式輸出a,b*/ printf("a=%d,b=%d\n",a,b); /*格式化輸出a,b*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

6566 65,66 A,B a=65,b=66

請(qǐng)按任意鍵繼續(xù)...(2)格式字符串格式字符串的一般形式為:[標(biāo)志][輸出最小寬度][.精度][長(zhǎng)度]類型其中方括號(hào)[]中的項(xiàng)為可選項(xiàng)類型字符意義d,i以十進(jìn)制形式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào))o以八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0)x以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0X)u以十進(jìn)制形式輸出無符號(hào)整數(shù)f以小數(shù)形式輸出單、雙精度實(shí)數(shù)e以指數(shù)形式輸出單、雙精度實(shí)數(shù)g以%f和%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)c輸出單個(gè)字符s輸出字符串類型:類型字符用以表示輸出數(shù)據(jù)的類型標(biāo)志:標(biāo)志字符為-、+、#三種標(biāo)志字符意義-結(jié)果左對(duì)齊,右邊填空格+輸出符號(hào)(正號(hào)或負(fù)號(hào))空格,輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào)#對(duì)c,s,d,u類無影響;對(duì)o類,在輸出時(shí)加前綴0;對(duì)x類,在輸出時(shí)加前綴0x;對(duì)e,g,f

類當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn)輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù),如果實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出,如果實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0精度:精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。具體的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分長(zhǎng)度:長(zhǎng)度格式符為h,l兩種,h表示按短整型量輸出,l表示按長(zhǎng)整型量輸出例3.2printf()函數(shù)格式字符串使用示例。#include<stdio.h> /*包含庫函數(shù)printf()所需信息*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta=168; /*定義整型變量*/ floatb=1243.1698; /*定義單精度實(shí)型變量*/ doublec=2421985.50168; /*定義雙精度實(shí)型變量*/ chard='a'; /*定義字符型變量*/ printf("a=%d,%5d,%o,%x\n",a,a,a,a); /*輸出a*/ printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); /*輸出b*/ printf("c=%lf,%f,%8.4lf\n",c,c,c); /*輸出c*/ printf("d=%c,%8c\n",d,d); /*輸出d*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

a=168,168,250,a8 b=1243.169800,1243.169800,1243.1698,1.243170e+003 c=2421985.501680,2421985.501680,2421985.5017 d=a,a

請(qǐng)按任意鍵繼續(xù)...“%f”和“%lf”格式的輸出相同例3.3printf()函數(shù)輸出表的求值順序示例。#include<stdio.h> /*包含庫函數(shù)printf()所需信息*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inti=6; /*定義變量*/ printf("%d,%d,%d\n",++i,++i,++i); /*輸出關(guān)于i的表達(dá)式之值*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}在VisualC++6.0、Dev-C++和MinGWDeveloperStudio中,程序運(yùn)行時(shí)屏幕輸出如下:

9,8,7

請(qǐng)按任意鍵繼續(xù)...不同的編譯系統(tǒng)輸出表的求值順序不一定相同,可從左到右,也可從右到左。VisualC++6.0、Dev-C++和MinGWDeveloperStudio是按從右到左進(jìn)行的格式控制個(gè)數(shù)小于輸出列表個(gè)數(shù)#include<stdio.h>

#include<stdlib.h>

intmain(void)

{ inti=6;

printf("%d,%d\n",++i,++i,++i);

system("PAUSE");

return0;

}程序運(yùn)行時(shí)屏幕輸出如下:

9,8

請(qǐng)按任意鍵繼續(xù)...2.字符輸出函數(shù)putchar()putchar()函數(shù)用于輸出字符,功能是在顯示器上顯示單個(gè)字符。函數(shù)原型在頭文件“stdio.h”中,一般形式為:putchar(字符變量/字符數(shù)據(jù));例如:putchar(‘a(chǎn)’);輸出小寫字母a。putchar(x);輸出字符變量x存放的字符。putchar(‘\n’);換行,對(duì)控制字符則執(zhí)行控制功能,不在屏幕上顯示例3.4putchar()函數(shù)使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ chara='A',b='o',c='m'; /*定義字符型變量*/ putchar(a);putchar(b);putchar(b);putchar('\t'); /*輸出字符,'\t'為制表符*/ putchar(a);putchar(b);putchar('\n'); /*輸出字符,'\n'為換行符*/ putchar(b);putchar(c); putchar('\n'); /*輸出字符,'\n'為換行符*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

AooAo om

請(qǐng)按任意鍵繼續(xù)...如何用printf()函數(shù)替代例3.4中的

putchar()函數(shù)?#include<stdio.h>

main()

{ chara='A',b='o',c='m';

//putchar(a);putchar(b);putchar(b);putchar('\t');

printf(“%c%c%c\t”,a,b,b);

//putchar(a);putchar(b);putchar('\n');

printf(“%c%c\n”,a,b);

//putchar(b);putchar(c); putchar('\n');

printf(“%c%c%c\n”,b,c);

}3.2.3數(shù)據(jù)輸入語句C語言的數(shù)據(jù)輸入也由函數(shù)語句完成本節(jié)介紹從標(biāo)準(zhǔn)輸入設(shè)備鍵盤上輸(讀)入數(shù)據(jù)的函數(shù)scanf()和getchar()

1.格式化輸入函數(shù)scanf()scanf()函數(shù)稱為格式輸入函數(shù),其功能是按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。(1)scanf()函數(shù)的一般形式scanf()函數(shù)的函數(shù)原型在頭文件“stdio.h”中。scanf()函數(shù)的一般形式為:scanf(“格式控制字符串”,變量地址表);(1)scanf()函數(shù)的一般形式其中格式控制字符串的作用與printf()函數(shù)相同,但不顯示非格式字符串,也就是不能顯示提示字符串。地址表中給出各變量的地址。地址由地址運(yùn)算符“&”后跟變量名組成的。變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。scanf()函數(shù)在本質(zhì)上是給變量賦值,但要求寫變量的地址,如&x例3.5scanf()函數(shù)使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,b; /*定義變量*/ printf("輸入a,b:"); /*輸入提示*/ scanf("%d%d",&a,&b); /*輸入a,b*/ printf("a=%d,b=%d\n",a,b); /*輸出a,b*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入a,b:68 a=6,b=8

請(qǐng)按任意鍵繼續(xù)...(2)格式字符串格式字符串的一般形式為:%[*][輸入數(shù)據(jù)寬度][長(zhǎng)度]類型其中有[]的項(xiàng)為可選項(xiàng)。類型:表示輸入數(shù)據(jù)的類型類型字符意義d,i輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整數(shù)x輸入十六進(jìn)制整數(shù)u輸入無符號(hào)十進(jìn)制整數(shù)e,f輸入實(shí)型數(shù)(用小數(shù)形式或指數(shù)形式)c輸入單個(gè)字符s輸入字符串“*”符:表示該輸入項(xiàng)讀入后不賦予相應(yīng)的變量,即跳過該輸入值。如scanf("%d%*d%d",&a,&b);當(dāng)輸入為:689時(shí),把6賦予a,8被跳過,9賦予bc.寬度:用十進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù))。例如:scanf("%5d",&a);輸入:1234567890只把12345賦予變量a,其余部分被截去。又如:scanf("%4d%4d",&a,&b);輸入:1234567890將把1234賦予a,而把5678賦予bc.長(zhǎng)度:長(zhǎng)度格式符為l和h,l用于表示輸入長(zhǎng)整型數(shù)據(jù)(如%ld)和雙精度浮點(diǎn)數(shù)(如%lf)。h表示輸入短整型數(shù)據(jù)使用scanf()函數(shù)應(yīng)注意以下幾點(diǎn):scanf()函數(shù)中沒有精度控制,如:scanf("%5.2f",&a);是非法的。用戶不能企圖用此語句輸入小數(shù)為2位的實(shí)數(shù)。scanf()函數(shù)中要求給出變量地址,如給出變量名則會(huì)出錯(cuò)。如scanf("%d",i);是非法的,應(yīng)改為scnaf("%d",&i);才是合法的。在輸入字符數(shù)據(jù)時(shí),若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。例如:scanf("%c%c",&m,&n);輸入為:de則把'd'賦予m,''賦予n。只有當(dāng)輸入為:de時(shí),才能把'd'賦于m,'e'賦予b。如果在格式控制中加入空格作為間隔,如scanf("%c%c",&m,&n);則輸入時(shí)各數(shù)據(jù)之間可加空格例3.6scanf()函數(shù)使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ chara,b; /*定義變量*/ printf("輸入字符a,b:"); /*輸入提示*/ scanf("%c%c",&a,&b); /*輸入a,b*/ printf("%c%c\n",a,b); /*輸出a,b*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}輸入“MN”時(shí),a的值為'M',b的值為''。程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入字符a,b:MN M

請(qǐng)按任意鍵繼續(xù)... 輸入改為MN時(shí),a的值為'M',b的值為'N'。程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入字符a,b:MN MN

請(qǐng)按任意鍵繼續(xù)...例3.7scanf()函數(shù)使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ chara,b; /*定義變量*/ printf("輸入字符a,b:"); /*輸入提示*/ scanf("%c%c",&a,&b); /*輸入a,b*/ printf("%c%c\n",a,b); /*輸出a,b*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入字符a,b:MN MN

請(qǐng)按任意鍵繼續(xù)...如果格式控制串中有非格式字符,則輸入時(shí)也要輸入該非格式字符例如:scanf("%d,%d",&a,&b);其中用非格式符“,”作間隔符,故輸入時(shí)應(yīng)為:5,6scanf()使用注意事項(xiàng):對(duì)于全部是非字符的數(shù)據(jù)輸入,可用空格鍵、回車鍵和Tab鍵作為每?jī)蓚€(gè)輸入數(shù)之間的間隔。對(duì)于全部是字符的數(shù)據(jù)輸入,要嚴(yán)格按照輸入控制格式輸入。對(duì)于數(shù)字和字符交替輸入的,數(shù)字后不用跟間隔,或字符后不用加間隔直接輸入下一個(gè)數(shù)據(jù)。scanf()函數(shù)的課堂練習(xí)1:#include<stdio.h>main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);}要完成給a賦值1、給b賦值2、給c賦值3,則應(yīng)該如何輸入?scanf()函數(shù)的課堂練習(xí)2:#include<stdio.h>main(){inta,b,c;scanf("%d,%d,%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);}要完成給a賦值1、給b賦值2、給c賦值3,則應(yīng)該如何輸入?scanf()函數(shù)的課堂練習(xí)3:#include<stdio.h>main(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("a1=%d,a2=%d,c1=%c,c2=%c\n",a1,a2,c1,c2);}要完成給a1賦值10、給a2賦值20、給c1賦值X、給c2賦值Y,則應(yīng)該如何輸入?2.鍵盤輸入函數(shù)getchar()getchar()函數(shù)的功能是從鍵盤上輸入一個(gè)字符。函數(shù)原型在頭文件“stdio.h”中,一般形式為:getchar();getchar()函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。注意:鍵盤輸入時(shí),系統(tǒng)先把輸入字符串放到輸入緩沖區(qū)內(nèi),執(zhí)行一次getchar()就依次從緩沖區(qū)內(nèi)取一個(gè)字符,取出一個(gè)字符后,緩沖區(qū)內(nèi)可能有殘留的其他字符或回車符號(hào)。例3.8getchar()函數(shù)使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ charc; /*定義變量*/ c=getchar(); /*輸入c*/ printf("%c\n",c); /*輸出c*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下:

A A

請(qǐng)按任意鍵繼續(xù)...如果用戶輸入“AB”,則將字符‘A’賦值給c,字符'B'將被丟失。程序運(yùn)行時(shí)屏幕輸出參考如下:

AB A

請(qǐng)按任意鍵繼續(xù)...3.3

分支結(jié)構(gòu)程序3.3.1

關(guān)系運(yùn)算符和表達(dá)式1.關(guān)系運(yùn)算符比較兩個(gè)量的運(yùn)算符稱為關(guān)系運(yùn)算符。在C語言中有以下關(guān)系運(yùn)算符: <(小于) <=(小于或等于) >(大于) >=(大于或等于) ==(等于) !=(不等于)1.關(guān)系運(yùn)算符關(guān)系運(yùn)算符都是雙目運(yùn)算符,都是左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符在六個(gè)關(guān)系運(yùn)算符中,<,<=,>,>=的優(yōu)先級(jí)相同,高于==和!=,==和!=的優(yōu)先級(jí)相同2.關(guān)系表達(dá)式關(guān)系表達(dá)式一般形式為:表達(dá)式關(guān)系運(yùn)算符表達(dá)式例如:a-b>c*d,x>3*2,'a'+6<c;都是合法的關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是“真”和“假”,“真”用“1”和“假”用“0”表示例3.9關(guān)系表達(dá)式使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inti=1,j=6,k=8; /*定義整型變量*/ floatx=3e+5,y=0.86; /*定義實(shí)型變量*/

printf("%d\n",-i+2*j>=k+1);/*輸出關(guān)系表達(dá)式的值*/ printf("%d\n",x-1.98<=x+y);/*輸出關(guān)系表達(dá)式的值*/ printf("%d\n",k==j==i+6);/*輸出關(guān)系表達(dá)式的值*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

1 1 0

請(qǐng)按任意鍵繼續(xù)...對(duì)于k==j==i+6,根據(jù)運(yùn)算符的左結(jié)合性,先計(jì)算k==j,該式不成立,其值為0,再計(jì)算0==i+6,也不成立,故表達(dá)式值為03.3.2

邏輯運(yùn)算符和表達(dá)式1.邏輯運(yùn)算符在C語言中,有三種邏輯運(yùn)算符:&&(與) ||(或) !(非)與運(yùn)算符&&和或運(yùn)算符||都是雙目運(yùn)算符。具有左結(jié)合性。非運(yùn)算符!為單目運(yùn)算符,具有右結(jié)合性。邏輯運(yùn)算符和其它運(yùn)算符優(yōu)先級(jí)的關(guān)系可表示如下:“!(非)”高于“&&(與)”,“&&(與)”高于“||(或)”邏輯運(yùn)算符中的“&&(與)”和“||(或)”低于關(guān)系運(yùn)算符并且高于賦值運(yùn)算符,“!(非)”高于算術(shù)運(yùn)算符根據(jù)運(yùn)算符的優(yōu)先順序可得:x>y&&u>v等價(jià)于(x>y)&&(u>v)!a==b||c<d

等價(jià)于

((!a)==b)||(c<d)a+b>c&&d+e<f

等價(jià)于

((a+b)>c)&&((d+e)<f)?。ǚ牵┧阈g(shù)運(yùn)算符關(guān)系運(yùn)算符&&(與)和||(或)賦值運(yùn)算符高低2.邏輯運(yùn)算的值邏輯運(yùn)算的值也為“真”和“假”兩種,用“1”表示“真”和用“0”表示“假”。求值規(guī)則如下:&&(與):參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。例如,6>0&&8>1,由于6>0為真,8>1也為真,所以&&(與)的結(jié)果也為真。||(或):參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。例如:6>0||8<1,由于6>0為真,所以||(或)的結(jié)果也為真。!(非):參與運(yùn)算量為真時(shí),結(jié)果為假;參與運(yùn)算量為假時(shí),結(jié)果為真。例如:!(6>0)的結(jié)果為假。2.邏輯運(yùn)算的值邏輯運(yùn)算時(shí),以“1”表示“真”,“0”表示“假”。但在判斷一個(gè)量是為“真”還是為“假”時(shí),以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如:由于6和8均為非“0”因此6&&8的值為“真”,即為1。3.邏輯表達(dá)式邏輯表達(dá)式的一般形式為:表達(dá)式

邏輯運(yùn)算符表達(dá)式邏輯表達(dá)式的結(jié)果是式中各種邏輯運(yùn)算的最后的值,以“1”表示“真”和“0”表示“假”。例3.10邏輯表達(dá)式使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ charc='k'; /*定義字符型變量*/ inti=1,j=6,k=8; /*定義整型變量*/ floatx=3e+5,y=0.86; /*定義實(shí)型變量*/ printf("%d\n",!x*!y); /*輸出邏輯表達(dá)式的值*/ printf("%d\n",i<j&&x<y);/*輸出邏輯表達(dá)式的值*/ printf("%d\n",i==6&&c&&(j=8)); /*輸出邏輯表達(dá)式的值*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

0 0 0

請(qǐng)按任意鍵繼續(xù)...邏輯運(yùn)算符的使用注意:1.邏輯與(&&)的使用注意:

如果&&左邊表達(dá)式的值已經(jīng)為“假”(0)了,右邊就不計(jì)算了。2.邏輯或(||)的使用注意:如果||左邊表達(dá)式的值已經(jīng)為“真”(1)了,右邊就不用算了。邏輯表達(dá)式的課堂練習(xí)1:#include<stdio.h>main(){inta=1,b=2,c=3,i,j;i=(a==1&&b++==2);j=(b!=2||c--!=3);printf("a=%d,b=%d,c=%d,i=%d,j=%d\n",a,b,c,i,j);}以上程序運(yùn)行結(jié)果是什么?邏輯表達(dá)式的課堂練習(xí)1:#include<stdio.h>main(){inta=1,b=2,c=3,i,j;i=(a!=1&&b++==2);j=(b==2||c--!=3);printf("a=%d,b=%d,c=%d,i=%d,j=%d\n",a,b,c,i,j);}以上程序運(yùn)行結(jié)果是什么?#include<stdio.h>main(){intw='A',x=14,y=15;w=((x||y)&&(w<'a'));printf("w=%d\n",w);}以上程序運(yùn)行結(jié)果是什么?#include<stdio.h>main(){intw='A',x=14,y=15;w=((x||++y)&&(w<'a'));printf("w=%d,y=%d\n",w,y);}以上程序運(yùn)行結(jié)果是什么?3.3.3if語句用if語句構(gòu)成分支結(jié)構(gòu)根據(jù)給定的條件進(jìn)行判斷,以決定執(zhí)行某分支程序段。1.if語句第一種形式第一種形式為基本形式(單分支結(jié)構(gòu)),使用方式如下:if(表達(dá)式)語句;語義是:如果表達(dá)式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。表達(dá)式的類型不限于關(guān)系表達(dá)式或邏輯表達(dá)式,它也可以是任意的數(shù)值類型(包括整型、實(shí)型、字符型等)如果是復(fù)合語句,一定要用{}括起來。例3.11輸入兩個(gè)整數(shù),輸出其中的大數(shù)。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,b,max; /*定義變量*/ printf("輸入兩個(gè)數(shù):"); /*輸入提示*/ scanf("%d%d",&a,&b); /*輸入a,b*/ max=a; /*假設(shè)a最大*/ if(max<b)max=b; /*如b更大,則最大值為b*/ printf("最大值:%d\n",max);/*輸出a,b的最大值*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下: 輸入兩個(gè)數(shù):16

最大值:6

請(qǐng)按任意鍵繼續(xù)...2.if語句第二種形式第二種形式為if-else形式(雙分支結(jié)構(gòu)),使用方式如下:if(表達(dá)式)

語句1;else

語句2;其語義是:如果表達(dá)式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2

例3.12使用if語句第二種形式改寫例3.11。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,b; /*定義變量*/ printf("輸入兩個(gè)數(shù):"); /*輸入提示*/ scanf("%d%d",&a,&b); /*輸入a,b*/ if(a<b)printf("最大值:%d\n",b); /*如果a<b,則最大值為b*/ elseprintf("最大值:%d\n",a); /*否則,則最大值為a*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下: 輸入兩個(gè)數(shù):16

最大值:6

請(qǐng)按任意鍵繼續(xù)...例3.13寫程序,判斷某一年是否為閏年。根據(jù)歷法,閏年的條件為:年份能被4整除但不能被100整除或年份能被400整除。具體程序?qū)崿F(xiàn)如下:#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ intyear; /*年份*/ printf("輸入年份:"); /*輸入提示*/ scanf("%d",&year); /*輸入year*/ if(year%4==0&&year%100!=0 /*如年份能被4整除但不能被100整除*/ ||year%400==0)printf("%d是閏年\n",year);/*或被400整除,則為閏年*/ elseprintf("%d不是閏年\n",year); /*否則為平年*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入年份:2008 2008是閏年 請(qǐng)按任意鍵繼續(xù)...3.if語句第三種形式(多分支結(jié)構(gòu))第三種形式為if-else-if形式,前二種形式的if語句一般都用于兩個(gè)分支的情況。當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語句,其一般形式如下:if(表達(dá)式1) 語句1;elseif(表達(dá)式2) 語句2;elseif(表達(dá)式3) 語句3;…elseif(表達(dá)式m) 語句m;else語句m+1;語句語義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語句。然后跳到整個(gè)if語句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語句m+1。然后繼續(xù)執(zhí)行后續(xù)程序。例3.14if語句第三種形式使用示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ charc; /*定義字符型變量*/ printf("輸入一個(gè)字符:"); /*輸入提示信息*/ c=getchar(); /*輸入字符*/ if(c<32)printf("是一個(gè)制控制字符\n"); elseif(c>='0'&&c<='9')printf("是一個(gè)數(shù)字\n"); elseif(c>='A'&&c<='Z')printf("是一個(gè)大寫英文字母\n"); elseif(c>='a'&&c<='z')printf("是一個(gè)小寫英文字母\n"); elseprintf("是一個(gè)其它字符\n"); system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入一個(gè)字符:&

是一個(gè)其它字符 請(qǐng)按任意鍵繼續(xù)...4.使用if語句注意事項(xiàng)使用if語句應(yīng)注意以下問題:在if語句中,條件判斷表達(dá)式必須用括號(hào)括起來,在語句之后必須加分號(hào)。在if語句的三種形式中,所有的語句應(yīng)為單個(gè)語句,如果要在滿足條件時(shí)執(zhí)行一組(多個(gè))語句,則必須把這一組語句用{}

括起來組成一個(gè)復(fù)合語句5.if語句的嵌套當(dāng)if語句中的執(zhí)行語句又為if語句時(shí),則構(gòu)成了if語句嵌套的情形,C語言規(guī)定,else總是與它前面最近的未配對(duì)的if相配對(duì)。在嵌套內(nèi)的if語句可能是if-else型的,這時(shí)應(yīng)注意if和else的配對(duì)問題。例如:if(表達(dá)式1)if(表達(dá)式2) 語句1;else 語句2;else

語句3;if(表達(dá)式1) if(表達(dá)式2)

語句1; else

語句2;else語句3;例3.15采用if語句的嵌套實(shí)現(xiàn)比較兩個(gè)數(shù)的大小關(guān)系。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,b; /*定義整型變量*/ printf("輸入a,b:"); /*輸入提示*/ scanf("%d%d",&a,&b); /*輸入a,b*/ if(a!=b) /*a不相等b*/ if(a>b)printf("%d>%d\n",a,b); /*a大于b*/ elseprintf("%d<%d\n",a,b); /*a小于b*/ elseprintf("%d=%d\n",a,b); /*a等于b*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入a,b:23 2<3

請(qǐng)按任意鍵繼續(xù)...例3.16采用if-else-if語句的嵌套實(shí)現(xiàn)比較兩個(gè)數(shù)的大小關(guān)系。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,b; /*定義整型變量*/ printf("輸入a,b:"); /*輸入提示*/ scanf("%d%d",&a,&b); /*輸入a,b*/ if(a<b)printf("%d<%d\n",a,b); /*a小于b*/ elseif(a>b)printf("%d>%d\n",a,b); /*a大于b*/ elseprintf("%d=%d\n",a,b); /*a等于b*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入a,b:32 3>2

請(qǐng)按任意鍵繼續(xù)...if語句的例子:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2||c--!=3) printf(“a=%d,b=%d,c=%d\n",a,b,c); elseprintf(“a=%d,b=%d,c=%d\n",a,b,c);elseprintf(“a=%d,b=%d,c=%d\n",a,b,c);}以上程序的運(yùn)行結(jié)果?if語句的例子:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1)if(b!=2)if(c==3)d=1; elsed=2;elseif(c!=3)d=3; elsed=4;elsed=5;printf("d=%d\n",d);}以上程序的運(yùn)行結(jié)果?3.2.4條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符為“?”和“:”,它是一個(gè)三目運(yùn)算符,條件運(yùn)算符組成條件表達(dá)式的一般形式為:表達(dá)式1?表達(dá)式2:表達(dá)式3求值規(guī)則:如果表達(dá)式1的值為真,則以表達(dá)式2

的值作為條件表達(dá)式的值,否則以表達(dá)式3的值作為整個(gè)條件表達(dá)式的值對(duì)于如下條件語句:if(a>b)min=b; /*b為最小值*/elsemin=a; /*a為最小值*/可用條件表達(dá)式寫為min=(a>b)?b:a;例3.17采用條件表達(dá)式求兩個(gè)數(shù)的最小值。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,b; /*定義整型變量*/ printf("輸入a,b:"); /*輸入提示*/ scanf("%d%d",&a,&b); /*輸入a,b*/ printf("最小值=%d\n",a>b?b:a); /*輸出a,b的最小值*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入a,b:23

最小值=2

請(qǐng)按任意鍵繼續(xù)...3.3.5switch語句C語言還有一種用于多分支選擇的switch語句,一般形式為:switch(表達(dá)式){case常量表達(dá)式1:

語句組1;case常量表達(dá)式2:

語句組2;…case常量表達(dá)式n:

語句組n;default:

語句組n+1;}語義:計(jì)算表達(dá)式的值。逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句例3.18switch語句使用示例。intmain(void) /*主函數(shù)main()*/{ intn; /*定義整型變量*/ printf("輸入n:"); /*輸入提示*/ scanf("%d",&n); /*輸入n*/ switch(n) { case1:printf("星期一\n"); case2:printf("星期二\n"); case3:printf("星期三\n");

case4:printf("星期四\n"); case5:printf("星期五\n"); case6:printf("星期六\n"); case7:printf("星期天\n"); default:printf("錯(cuò)誤\n"); } system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入n:5

星期五 星期六 星期天 錯(cuò)誤 請(qǐng)按任意鍵繼續(xù)...當(dāng)輸入5之后,卻執(zhí)行了“case5:”以及以后的所有語句,輸出了“星期五”及以后的所有單詞為避免上述情況,C語言還提供了一種break語句,專用于跳出switch語句,break語句只有關(guān)鍵字break,使用格式為:break;可修改例題的程序,在每一case語句之后增加break語句,使每一次執(zhí)行之后均可跳出switch語句,從而避免輸出不應(yīng)有的結(jié)果。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{intn; /*定義整型變量*/printf("輸入n:"); /*輸入提示*/scanf("%d",&n); /*輸入n*/switch(n){ case1:printf("星期一\n");break; case2:printf("星期二\n");break; case3:printf("星期三\n");break; case4:printf("星期四\n");break; case5:printf("星期五\n");break; case6:printf("星期六\n");break; case7:printf("星期天\n");break; default:printf("錯(cuò)誤\n");break;

} system("PAUSE"); return0; }

程序運(yùn)行時(shí)輸出參考如下: 輸入n:5

星期五 請(qǐng)按任意鍵繼續(xù)...雖然本例中“default:”后的break語句可省略,最好養(yǎng)成習(xí)慣在每個(gè)語句組后都加上break語句。switch語句的說明(1)switch語句體中可以沒有break語句和default語句。(2)switch語句的圓括號(hào)中的表達(dá)式的值必須是整形或者字符型,不能為實(shí)型。case后面的表達(dá)式是常量,不能含有變量。(3)執(zhí)行switch語句時(shí),首先計(jì)算switch后圓括號(hào)內(nèi)表達(dá)式的值,然后將這個(gè)值與語句體中的case后的常量比較,如果與某個(gè)常量相等,則執(zhí)行該case后的語句塊,如果沒有相等的,則執(zhí)行default后的語句塊。(4)執(zhí)行過程中如果遇到break語句,則跳出switch語句。case只作為一個(gè)入口,如果執(zhí)行完某一個(gè)case或者default語句塊后沒有遇到break,則繼續(xù)順序往下執(zhí)行,直到遇到break語句或者switch語句體末尾為止。(5)每個(gè)switch語句中default最多只能有一個(gè),通常出現(xiàn)在switch的最后部分,但也可以出現(xiàn)在case之間或所有case之前。(6)在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。在case后,允許有多個(gè)語句,可以不用{}擴(kuò)起來。switch語句的例子:#include<stdio.h>main(){intx=1,y=0,a=0,b=0;switch(x){case1:

switch(y) {case0:a++;break; case1:b++;break;

}case2:a++;b++;break;case3:a++;b++;}printf(“a=%d,b=%d\n",a,b);}以上程序的運(yùn)行結(jié)果?switch語句的例子:#include<stdio.h>main(){inta=15,b=21,m=0;switch(a%3){ case0:m++;break; case1:m++; switch(b%2)

{ default:m++;

case0:m++;break; }}printf("m=%d\n",m);}以上程序的運(yùn)行結(jié)果?3.4

循環(huán)結(jié)構(gòu)程序循環(huán)結(jié)構(gòu)的特點(diǎn):在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體3.4.1while語句while語句的一般形式為:while(表達(dá)式)

循環(huán)體語句;其中表達(dá)式是循環(huán)條件,可為任意合法的表達(dá)式。while語句的執(zhí)行過程:計(jì)算表達(dá)式的值,當(dāng)值為真(非0)時(shí),執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假(0)時(shí)為止。例3.22統(tǒng)計(jì)從鍵盤輸入一行字符中包含的小寫字母的個(gè)數(shù)。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ intn=0; /*定義變量*/ charc; /*定義字符型變量*/ printf("輸入一行字符:\n"); /*輸入提示*/ c=getchar(); /*輸入一個(gè)字符*/ while(c!='\n') { /*非換行符,循環(huán)*/ if(c>='a'&&c<='z')n++;/*對(duì)小寫字母記數(shù)*/ c=getchar(); /*輸入一個(gè)字符*/ } printf("含%d個(gè)小寫字母\n",n); /*輸出小寫字母?jìng)€(gè)數(shù)*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入一行字符: Thisisastring.

含12個(gè)小寫字母 請(qǐng)按任意鍵繼續(xù)...使用while語句應(yīng)注意以下幾點(diǎn):循環(huán)體如包括有一個(gè)以上的語句,則必須用{}括起來,組成復(fù)合語句。應(yīng)注意循環(huán)條件的選擇以避免死循環(huán)。例3.23死循環(huán)示例。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inta,n=0; /*定義變量*/ while(a=6)printf("%d",n++); /*循環(huán)輸出n++*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}3.4.2dowhile語句dowhile語句的一般形式為:do{循環(huán)體語句;}while(表達(dá)式);表達(dá)式是循環(huán)條件dowhile語句執(zhí)行過程:先執(zhí)行一次循環(huán)體語句,再判別表達(dá)式的值,若為真(非0)則繼續(xù)循環(huán)dowhile語句和while語句的區(qū)別:

dowhile語句至少要執(zhí)行一次循環(huán)體。while語句當(dāng)條件一開始就不滿足時(shí),則循環(huán)體一次也不執(zhí)行

例3.24使用dowhile語句求1+2+…+100。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inti=1,s=0; /*定義變量*/ do { s=s+i; /*累加求和*/ i++; /*i自加1*/ }while(i<=100); printf("1+2+...+100=%d\n",s); /*輸出累加和*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

1+2+...+100=5050

請(qǐng)按任意鍵繼續(xù)...在一般情況下,while語句和dowhile語句都可以相互改寫。對(duì)于dowhile語句應(yīng)注意以下幾點(diǎn):在dowhile語句的表達(dá)式后面則必須加分號(hào)。在do和while之間的循環(huán)體由多個(gè)語句組成時(shí),必須用{}括起來組成一個(gè)復(fù)合語句。程序舉例:#include<stdio.h>main(){intm,n;scanf("%d%d",&m,&n);while(m!=n) { while(m>n)m=m-n; while(m<n)n=n-m; }printf("m=%d\n",m);}程序運(yùn)行后,當(dāng)輸入1463<回車>,輸出結(jié)果是?程序舉例:#include<stdio.h>main(){inti=5;do{if(i%3==1) if(i%5==2) {printf("*%d",i);break;} i++;}while(i!=0);printf("\n");}程序運(yùn)行結(jié)果是?3.4.3for語句for語句是C語言中廣泛使用的一種循環(huán)語句。其一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){ 循環(huán)體語句;}表達(dá)式1:通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式。表達(dá)式2:通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式表達(dá)式3:通常可用來修改循環(huán)變量的值,一般是賦值語句for語句的執(zhí)行過程如下:(1)首先計(jì)算表達(dá)式1的值。(2)再計(jì)算表達(dá)式2的值,若值為真(非0)則執(zhí)行循環(huán)體一次,否則跳出循環(huán)。(3)然后再計(jì)算表達(dá)式3的值,轉(zhuǎn)回第2步重復(fù)執(zhí)行。例3.25使用for語句求1+2+…+100。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inti,s=0; /*定義變量*/ for(i=1;i<=100;i++) s=s+i; /*累加求和*/ printf("1+2+...+100=%d\n",s); /*輸出累加和*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出如下:

1+2+...+100=5050

請(qǐng)按任意鍵繼續(xù)...在使用for語句中要注意以下幾點(diǎn)for語句中的各表達(dá)式都可省略,但分號(hào)間隔符不能少。如:for(;表達(dá)式;表達(dá)式)省去了表達(dá)式1for(表達(dá)式;;表達(dá)式)省去了表達(dá)式2for(;;)省去了全部表達(dá)式在循環(huán)變量已賦初值時(shí),可省去表達(dá)式1,如省去表達(dá)式2或表達(dá)式3則可能造成無限循環(huán),這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán)。循環(huán)體可以是空語句。例3.26統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ intn=0; /*定義變量*/ printf("輸入一行字符:\n"); /*輸入提示*/ for(;getchar()!='\n';n++); /*省略表達(dá)式1,無循環(huán)體的for語句*/ printf("共含%d個(gè)字符\n",n); /*輸出字符個(gè)數(shù)*/ system("PAUSE"); /*輸出系統(tǒng)提示信息*/ return0; /*返回值0,返回操作系統(tǒng)*/}程序運(yùn)行時(shí)屏幕輸出參考如下: 輸入一行字符: thisisastring.

共含17個(gè)字符 請(qǐng)按任意鍵繼續(xù)...循環(huán)嵌套在實(shí)際編寫程序的過程中,經(jīng)常需要把一個(gè)或者多個(gè)完整的循環(huán)結(jié)構(gòu)放在某一個(gè)循環(huán)體中構(gòu)成多層的循環(huán),即嵌套循環(huán)。在內(nèi)嵌的循環(huán)結(jié)構(gòu)中還可以繼續(xù)嵌套循環(huán)。每一層循環(huán)結(jié)構(gòu)在邏輯上都是必須是完整的。通常把內(nèi)層的循環(huán)稱為“內(nèi)循環(huán)”,外面的循環(huán)稱為“外循環(huán)”。#include<stdio.h>main(){inti,j,sum;for(i=3;i>=1;i--){sum=0;for(j=1;j<=i;j++)sum+=i*j;}printf("%d\n",sum);}以上程序運(yùn)行結(jié)果?3.4.4轉(zhuǎn)移語句程序中如果需要改變程序的正常流向,可以使用本小節(jié)介紹的轉(zhuǎn)移語句。在C語言中提供了4種轉(zhuǎn)移語句:goto,break,continue和return。其中的return語句只能出現(xiàn)在被調(diào)函數(shù)中,用于返回主調(diào)函數(shù)1.goto語句goto語句也稱為無條件轉(zhuǎn)移語句在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語句,以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難本書不討論goto語句的具體使用方法2.break語句break語句只能用在switch語句或循環(huán)語句中,作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。break語句的一般形式為:break;例3.27使用break語句求1+2+…+100。#include<stdio.h> /*標(biāo)準(zhǔn)輸入/出頭文件*/#include<stdlib.h> /*包含庫函數(shù)system()所需信息*/intmain(void) /*主函數(shù)main()*/{ inti=1,s=0;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論