C程序的流程控制管理概述課件_第1頁(yè)
C程序的流程控制管理概述課件_第2頁(yè)
C程序的流程控制管理概述課件_第3頁(yè)
C程序的流程控制管理概述課件_第4頁(yè)
C程序的流程控制管理概述課件_第5頁(yè)
已閱讀5頁(yè),還剩199頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章C程序的流程控制

3.1C語(yǔ)句3.2賦值語(yǔ)句3.3輸入輸出3.4順序結(jié)構(gòu)程序設(shè)計(jì)3.5選擇結(jié)構(gòu)程序設(shè)計(jì)3.6循環(huán)結(jié)構(gòu)程序設(shè)計(jì)第3章C程序的流程控制3.1C語(yǔ)句C語(yǔ)句分為5類(lèi):控制語(yǔ)句:完成一定的控制功能。選擇語(yǔ)句:if…else、switch循環(huán)語(yǔ)句:for、while、do…while結(jié)束本次循環(huán)語(yǔ)句:continue中止執(zhí)行switch或循環(huán)語(yǔ)句:break轉(zhuǎn)向語(yǔ)句:goto從函數(shù)返回語(yǔ)句:return3.1C語(yǔ)句C語(yǔ)句分為5類(lèi):控制語(yǔ)句:完成一定的控制功能。3.1函數(shù)調(diào)用語(yǔ)句:由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。例如:printf("ThisisaCstatement.");表達(dá)式語(yǔ)句:由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成。例如: a=3; 空語(yǔ)句:只有一個(gè)分號(hào)(;)的語(yǔ)句。函數(shù)調(diào)用語(yǔ)句:由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。復(fù)合語(yǔ)句:用{}括起來(lái)的一些語(yǔ)句。例如: {z=x+y;t=z/100; printf("%f",t); }C程序的流程控制管理概述課件3.2賦值語(yǔ)句1.賦值運(yùn)算符:=、+=、-=、*=、/=、%=等作用:將一個(gè)數(shù)據(jù)賦給一個(gè)變量。2.賦值表達(dá)式形式:變量=表達(dá)式將表達(dá)式的值賦給變量例如:a=5b=a*43.2賦值語(yǔ)句1.賦值運(yùn)算符:=、+=、-=、*=、/=②變量(+、-、*、/、%)=表達(dá)式將變量與表達(dá)式的值作相應(yīng)運(yùn)算后再賦給變量。例如:x-=8等價(jià)于x=x-8

y%=a+3等價(jià)于y=y%(a+3)3.賦值表達(dá)式的值:等于左邊變量的值。4.賦值表達(dá)式后加分號(hào)構(gòu)成賦值語(yǔ)句。②變量(+、-、*、/、%)=表達(dá)式寫(xiě)出下面表達(dá)式運(yùn)算后a的值(a=3*5)=4*3a=3*5a的值為15a=4*3a的值為12寫(xiě)出下面表達(dá)式運(yùn)算后a的值a=3*5a的值為15a=4a*=aa的值為12×12=144a-=144a的值為144-144=0a+=0a的值為0寫(xiě)出下面表達(dá)式運(yùn)算后a的值,設(shè)原來(lái)a=12,a已定義為整型變量。a+=a-=a*=aa*=aa的值為12×12=144寫(xiě)出下面表達(dá)式運(yùn)算后a字符輸出函數(shù):putchar字符輸入函數(shù):getchar格式輸出函數(shù):printf格式輸入函數(shù):scanfC語(yǔ)言無(wú)I/O語(yǔ)句,I/O操作由函數(shù)實(shí)現(xiàn)#include<stdio.h>頭文件3.3輸入輸出字符輸出函數(shù):putcharC語(yǔ)言無(wú)I/O語(yǔ)句,I/O格式:printf("格式控制",輸出表列)功能:按指定格式向顯示器輸出數(shù)據(jù)printf函數(shù)(格式輸出函數(shù))輸出表列:要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔)格式控制:格式說(shuō)明:%[修飾符]格式字符,用于指定輸出格式轉(zhuǎn)義字符:\n,\t普通字符:原樣輸出3.3.1格式輸出格式:printf("格式控制",輸出表列)printf函數(shù)printf格式字符格式字符 使用形式 功能說(shuō)明

d %d%md%ld%mld

帶符號(hào)的十進(jìn)制整數(shù) o %o%mo%lo 無(wú)符號(hào)的八進(jìn)制整數(shù)

x,X %x%mx%lx 無(wú)符號(hào)的十六進(jìn)制整數(shù)

u %u%lu 無(wú)符號(hào)的十進(jìn)制整數(shù)

f %f%m.nf%-m.nf 小數(shù)形式的單、雙精度數(shù)

e,E %e%m.ne%-m.ne 指數(shù)形式的單、雙精度數(shù)

g,G %g f、e格式中較短者忽略0

c %c%mc 輸出一個(gè)字符

s %s%ms%-ms%m.ns%-m.ns 輸出字符串 % %% 輸出“%”其中:l—用于長(zhǎng)整型數(shù) n—小數(shù)位數(shù)或截取的字符個(gè)數(shù)

m—輸出域的寬度 -—域內(nèi)左對(duì)齊printf格式字符格式字符 使用形式 功能說(shuō)明1.%d──以十進(jìn)制整數(shù)形式輸出。例:#include<stdio.h>voidmain(){inta=123;longb=123456;printf("%d,%5d,%-5d,%2d\n",a,a,a,a);printf("b=%ld",b);}

運(yùn)行結(jié)果:123,□□123,123□□,123b=123456 1.%d──以十進(jìn)制整數(shù)形式輸出。運(yùn)行結(jié)果:2.%f──以小數(shù)形式輸出單精度和雙精度實(shí)數(shù)。整數(shù)部分全部輸出,并輸出6位小數(shù)。例3.10:按指定的小數(shù)位數(shù)輸出實(shí)數(shù)#include<stdio.h>voidmain(){floatd=12.345;printf("d=%f,d=%.2f,d=%10.2f",d,d,d);}

運(yùn)行結(jié)果:d=12.345000,d=12.35,d=□□□□□12.352.%f──以小數(shù)形式輸出單精度和雙精度實(shí)數(shù)。運(yùn)行結(jié)果:3.%c──輸出一個(gè)字符。例:#include<stdio.h>voidmain(){charc='a';printf("%c",c);} 運(yùn)行結(jié)果:a 3.%c──輸出一個(gè)字符。運(yùn)行結(jié)果:4.%s──輸出一個(gè)字符串。例:#include<stdio.h>voidmain(){printf("%s\n","CHINA");

printf("%3s,%7.2s,%-5.3s","CHINA","CHINA","CHINA");} 運(yùn)行結(jié)果:CHINACHINA,□□□□□CH,CHI□□4.%s──輸出一個(gè)字符串。運(yùn)行結(jié)果:3.3.2scanf函數(shù)(格式輸入函數(shù))格式:scanf("格式控制",地址表列)功能:按指定格式從鍵盤(pán)輸入數(shù)據(jù),存入地址表列指定的存儲(chǔ)單元中,并按回車(chē)鍵結(jié)束地址表列:變量的地址,用取地址運(yùn)算符&例:scanf("%d",&a);

輸入:10

則10a3.3.2scanf函數(shù)(格式輸入函數(shù))格式:scascanf格式字符格式字符 使用形式 功能說(shuō)明 d %d%md%ld%hd 帶符號(hào)的十進(jìn)制整數(shù) o %o%mo%lo%ho 無(wú)符號(hào)的八進(jìn)制整數(shù) x,X %x%mx%lx%hx 無(wú)符號(hào)的十六進(jìn)制整數(shù) u %u%lu 無(wú)符號(hào)的十進(jìn)制整數(shù) f %f%mf%lf小數(shù)形式的單、雙精度數(shù) e,E %e%le 同上 g,G %g 同上 c %c 輸入單字符 s %s 輸入字符串 * %* 不賦給相應(yīng)變量其中:m—數(shù)據(jù)輸入域的寬度h—用于短整型數(shù)據(jù) l—用于長(zhǎng)整型或double型數(shù)據(jù)scanf格式字符格式字符 使用形式 功能說(shuō)明輸入分隔符的指定:一般以空格、TAB或回車(chē)鍵作為分隔符例3.11:從鍵盤(pán)輸入兩個(gè)整數(shù),求兩數(shù)之和。#include<stdio.h>voidmain(){ inta,b; scanf("%d,%d",&a,&b); printf("%d",a+b);}輸入3,5輸出8輸入分隔符的指定:一般以空格、TAB或回車(chē)鍵作為分隔符例3.例3:scanf("a=%d,b=%d,c=%d",&a,&b,&c);

輸入a=12,b=24,c=36

則12a,24b,36c例1:scanf("%d,%d",&a,&b);

輸入3,4

則3a,4b例2:scanf("%d:%d:%d",&a,&b,&c);

輸入12:30:45則12a,30b,45c

“格式控制”中出現(xiàn)的普通字符,原樣輸入。例3:scanf("a=%d,b=%d,c=%d",&a說(shuō)明:用"%c"格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入例:scanf("%c%c%c",&c1,&c2,&c3);若輸入a□b□c

則ac1,'□'c2,bc3說(shuō)明:例:scanf("%c%c%c",&c1,&c2,&c輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:

遇空格、TAB、或回車(chē)遇指定的寬度結(jié)束遇非法輸入例:scanf("%d%c%f",&a,&b,&c);若輸入1234a123o.26

則1234a,‘a(chǎn)’b,123c輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:例:scanf("%格式:putchar(c)參數(shù):c為字符常量、變量或表達(dá)式。功能:將字符輸出到顯示器上。3.3.3字符數(shù)據(jù)的輸入輸出一、putchar函數(shù)(字符輸出函數(shù))格式:putchar(c)3.3.3字符數(shù)據(jù)的輸入輸出#include<stdio.h>voidmain(){chara,b,c;a='B';b='O';c='Y';

putchar(a);putchar(b);putchar(c);putchar('\n');}運(yùn)行結(jié)果:BOY例:putchar(a);putchar('\n');putchar(b);putchar('\n');putchar(c);運(yùn)行結(jié)果:BOY#include<stdio.h>運(yùn)行結(jié)果:例:putch格式:getchar()功能:從鍵盤(pán)輸入一個(gè)字符。3.3.4getchar函數(shù)(字符輸入函數(shù))例3.14:使用getchar()函數(shù)輸入字符#include<stdio.h>voidmain(){charc;c=getchar();putchar(c);}運(yùn)行情況:aa格式:getchar()3.3.4getchar函數(shù)(字3.4順序結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h>#definePI3.14159voidmain(){floatr,area,v;printf(“Inputr:”); /*人機(jī)交互,輸出提示信息*/scanf("%f",&r);area=PI*r*r; /*求圓的面積并將結(jié)果賦給area*/v=4.0/3*PI*r*r*r; /*求圓球的體積并賦給v*/printf("area=%6.2f\n",area);printf("v=%6.2f\n",v);}例3.17:輸入半徑,求圓的面積和球的體積Inputr:3↙area=28.27v=113.10文件包含預(yù)處理命令變量定義運(yùn)行情況:3.4順序結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h3.5.1關(guān)系表達(dá)式1.關(guān)系運(yùn)算符:<、<=、>、>=、==、!=作用:進(jìn)行比較運(yùn)算。2.關(guān)系表達(dá)式形式:<表達(dá)式>關(guān)系運(yùn)算符<表達(dá)式>

如:a<b、x>=0、x==03.優(yōu)先級(jí)

<<=>>=(高)

==!=(低)算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符

高低3.5選擇結(jié)構(gòu)程序設(shè)計(jì)

3.5.1關(guān)系表達(dá)式1.關(guān)系運(yùn)算符:<、<=、>5.舉例:inta=3,b=2,c=1,d,f;則:a>b 表達(dá)式值等于______(a>b)==c表達(dá)式值等于______b+c<a 表達(dá)式值等于______d=a>bd值等于_______f=a>b>cf值等于_______11010算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符高低4.關(guān)系表達(dá)式的值:如果表達(dá)式成立,值為1,表示“真”;否則,值為0,表示“假”。5.舉例:11010算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符低4.

#include<stdio.h>

voidmain()

{inta,b,c;

a=3;b=2;c=1;

printf("%d",a>b);

printf("%d",(a>b)==c);

printf("%d",b+c<a);

printf("%d\n",a<b<c);

}例3.21關(guān)系表達(dá)式的應(yīng)用運(yùn)行結(jié)果:

1101

#include<stdio.h>

voidmain3.5.2邏輯表達(dá)式1.邏輯運(yùn)算符 !邏輯非&&邏輯與 ||邏輯或 2.邏輯表達(dá)式如:x>=0&&x<=9(數(shù)學(xué)不等式0≤x≤9)數(shù)學(xué)不等式0≤x≤9用0<=x<=9表示3.表達(dá)式的值:1或0。

3.5.2邏輯表達(dá)式1.邏輯運(yùn)算符3.表達(dá)式的值:1邏輯運(yùn)算的真值表:ab!a!ba&&ba||b非0非00011非0001010非01001001100C語(yǔ)言中,運(yùn)算量:

0代表“假”,非0代表“真”,

運(yùn)算結(jié)果:

0代表“假”,1代表“真”。邏輯運(yùn)算的真值表:ab4.邏輯運(yùn)算符的優(yōu)先級(jí)

優(yōu)先級(jí) 運(yùn)算符

! 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 &&

|| 低 賦值運(yùn)算符4.邏輯運(yùn)算符的優(yōu)先級(jí)優(yōu)先級(jí) 運(yùn)算符 邏輯表達(dá)式舉例:5>3&&8<4-!0=1&&8<4-!0=1&&8<4-1=1&&8<3=1&&0=0

優(yōu)先級(jí) 運(yùn)算符

! 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 &&

|| 低 賦值運(yùn)算符邏輯表達(dá)式舉例:5>3&&8<4-!0優(yōu)先級(jí) 運(yùn)5.短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例:a&&b&&c//只在a為真時(shí),才判別b的值;只在a、b都為真時(shí),才判別c的值例:a||b||c//只在a為假時(shí),才判別b的值;只在a、b都為假時(shí),才判別c的值//結(jié)果m=0,n=1

優(yōu)先級(jí) 運(yùn)算符

! 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 &&

|| 低 賦值運(yùn)算符例:a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)5.短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行1.簡(jiǎn)單分支結(jié)構(gòu)格式:if(表達(dá)式)語(yǔ)句執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值,若其值≠0,則執(zhí)行后面的語(yǔ)句;否則,不執(zhí)行。表達(dá)式語(yǔ)句真(非0)假(0)例:if(x>y)printf("%d",x);3.5.3if語(yǔ)句說(shuō)明:

語(yǔ)句可以是復(fù)合語(yǔ)句if(x)if(x!=0)1.簡(jiǎn)單分支結(jié)構(gòu)表達(dá)式語(yǔ)句真(非0)假(0)例:if(x例3.22:輸入兩個(gè)實(shí)數(shù),按由小到大的順序輸出。#include<stdio.h>void main(){floata,b,t;printf("請(qǐng)輸入兩個(gè)實(shí)數(shù):");scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);}運(yùn)行情況:請(qǐng)輸入兩個(gè)實(shí)數(shù):7.1,5.15.10,7.10運(yùn)行情況:請(qǐng)輸入兩個(gè)實(shí)數(shù):5.1,7.15.10,7.10例3.22:輸入兩個(gè)實(shí)數(shù),按由小到大的順序輸出。#inclu例3.23:輸入三個(gè)整數(shù),按由小到大排序并輸出。#include<stdio.h>void main(){inta,b,c,t;scanf("%d,%d,%d",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%d,%d,%d\n",a,b,c);}運(yùn)行情況:11,22,1811,18,22例3.23:輸入三個(gè)整數(shù),按由小到大排序并輸出。#inclu表達(dá)式語(yǔ)句1語(yǔ)句2真假2.雙分支結(jié)構(gòu)格式:if(表達(dá)式)語(yǔ)句1else語(yǔ)句2例:if(x>y)max=x;elsemax=y;執(zhí)行過(guò)程:先計(jì)算表達(dá)式的值,若≠0,則執(zhí)行語(yǔ)句1,否則,執(zhí)行語(yǔ)句2。表達(dá)式語(yǔ)句1語(yǔ)句2真假2.雙分支結(jié)構(gòu)例:if(x>y)例3.25輸入三角形三條邊長(zhǎng),求三角形面積。當(dāng)輸入的三條邊長(zhǎng)不能構(gòu)成三角形時(shí),輸出“不能構(gòu)成一個(gè)三角形”。#include<stdio.h>#include<math.h>voidmain(){floatx,y,z,s,area;printf("請(qǐng)輸入三角形的三條邊長(zhǎng):");scanf("%f,%f,%f",&x,&y,&z);if(x+y>z&&y+z>x&&x+z>y){s=0.5*(x+y+z);area=sqrt(s*(s-x)*(s-y)*(s-z));printf("面積=%7.2f\n",area);}elseprintf("不能構(gòu)成一個(gè)三角形\n");}運(yùn)行結(jié)果:請(qǐng)輸入三角形的三條邊長(zhǎng):3,4,6↙面積=5.33例3.25輸入三角形三條邊長(zhǎng),求三角形面積。當(dāng)輸入的三條3.多分支if語(yǔ)句⑴一般格式:if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3…...else語(yǔ)句n表達(dá)式1語(yǔ)句1真假表達(dá)式2表達(dá)式3語(yǔ)句4語(yǔ)句3語(yǔ)句2真真假假3.多分支if語(yǔ)句if(表達(dá)式1)語(yǔ)例3.28:編程計(jì)算應(yīng)付金額c,其單價(jià)s隨購(gòu)物數(shù)量t變化,關(guān)系如下:20t>50030200<t≤50040100<t≤20050t≤100s=#include<stdio.h>voidmain(){ints,t,c;

printf("請(qǐng)輸入購(gòu)物數(shù)量:");

scanf("%d",&t);if(t>500)s=20;elseif(t>200)s=30;elseif(t>100)s=40;elses=50;c=st;printf("應(yīng)付金額=%d",c);}運(yùn)行結(jié)果:請(qǐng)輸入購(gòu)物數(shù)量:600↙應(yīng)付金額=12000例3.28:編程計(jì)算應(yīng)付金額c,其單價(jià)s隨購(gòu)物數(shù)量t變化,關(guān)⑵嵌套的多分支if語(yǔ)句含義:在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句,稱(chēng)為if語(yǔ)句的嵌套。格式:if()if()語(yǔ)句1else語(yǔ)句2elseif()語(yǔ)句3else語(yǔ)句4

注意:if與else的配對(duì)關(guān)系。從內(nèi)層開(kāi)始,else總是與它上面最近的沒(méi)有配對(duì)的if配對(duì)。若if與else的數(shù)目不一樣,可以加{}來(lái)確定配對(duì)關(guān)系。

⑵嵌套的多分支if語(yǔ)句含義:在if語(yǔ)句中又包含一個(gè)或多個(gè)if例3.29:編寫(xiě)程序y=-5 (x<0)0 (x=0)7 (x>0)流程圖:其中x,y為int型變量。開(kāi)始結(jié)束輸入x輸出yx=0x<0y=-5y=0y=7YNYN例3.29:編寫(xiě)程序y=-5 (x#include<stdio.h>voidmain(){intx,y;printf("請(qǐng)輸入x:");scanf("%d",&x);if(x<0)y=-5;else {if(x==0)y=0; elsey=7;} printf("x=%d,y=%d",x,y);}

x<0y=-5YNx=0y=0y=7YN運(yùn)行結(jié)果:請(qǐng)輸入x:-5↙x=-5,y=-5#include<stdio.h>x<0y=-5YNx=4.條件運(yùn)算符和條件表達(dá)式⑴條件運(yùn)算符?:(三目運(yùn)算符)⑵條件表達(dá)式:用條件運(yùn)算符連接各種表達(dá)式。形式:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>例如: x>y?a:b⑶表達(dá)式的值:當(dāng)表達(dá)式1的值非0時(shí),值為表達(dá)式2之值;否則,為表達(dá)式3之值。⑷結(jié)合方向?yàn)樽杂抑磷骯>b?a:c>d?c:da=1,b=2,c=3,d=4表達(dá)式的值_________44.條件運(yùn)算符和條件表達(dá)式⑴條件運(yùn)算符?:(當(dāng)if語(yǔ)句中的兩個(gè)分支都只執(zhí)行一個(gè)賦值語(yǔ)句給同一個(gè)變量賦值時(shí),可以用條件表達(dá)式來(lái)處理。max=(a>b)?a:b;例:if(a>b)max=a;elsemax=b;可以表示為_(kāi)__________________當(dāng)if語(yǔ)句中的兩個(gè)分支都只執(zhí)行一個(gè)賦值語(yǔ)句給同一個(gè)變量賦值時(shí)運(yùn)行情況:Aa例3.30:輸入一個(gè)字符,判斷是否為大寫(xiě)字母,若是,將其轉(zhuǎn)換成小寫(xiě)字母;否則,不轉(zhuǎn)換。然后輸出最后得到的字符。ch=(ch>='A'&&ch<='Z')?(ch+32):ch;#include<stdio.h>voidmain(){charch;scanf("%c",&ch);

if(ch>='A'&&ch<='Z')ch=ch+32;printf("%c\n",ch);}運(yùn)行情況:例3.30:輸入一個(gè)字符,判斷是否為大寫(xiě)字母,若是3.5.4switch語(yǔ)句多分支選擇語(yǔ)句。switch(表達(dá)式){case常量1:語(yǔ)句組1;break;case常量2:語(yǔ)句組2;break;······case常量n:語(yǔ)句組n;break;default:語(yǔ)句組n+1;}一般形式:3.5.4switch語(yǔ)句多分支選擇語(yǔ)句。swit執(zhí)行過(guò)程:當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式值相等時(shí),就執(zhí)行此case后面的語(yǔ)句組,當(dāng)執(zhí)行到break語(yǔ)句時(shí),跳出switch語(yǔ)句。若表達(dá)式的值與所有的常量表達(dá)式值都不匹配,則執(zhí)行default后面的語(yǔ)句組。執(zhí)行過(guò)程:當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式值相等#include<stdio.h>voidmain(){chargrade;scanf("%c",&grade);switch(grade){case'A':printf("85~100\n");break;case'B':printf("70~84\n");break;case'C':printf("60~69\n");break;case'D':printf("<60\n");break;default:printf("error\n");}}例3.31:要求按照考試成績(jī)的等級(jí)輸出百分制分?jǐn)?shù)段。運(yùn)行情況:C60~69#include<stdio.h>例3.31:要求按switch(grade){case'A':printf("85~100\n");case'B':printf("70~84\n");case'C':printf("60~69\n");case'D':printf("<60\n");default:printf("error\n");}說(shuō)明:執(zhí)行完一個(gè)case后面的語(yǔ)句后,繼續(xù)執(zhí)行下一個(gè)case語(yǔ)句而不再進(jìn)行判斷。所以必須加上break語(yǔ)句,以便終止switch語(yǔ)句的執(zhí)行。思考題:如果去掉上例程序中的所有break語(yǔ)句,且輸入的成績(jī)?yōu)锽,輸出會(huì)如何?運(yùn)行情況:B70~8460~69<60errorswitch(grade)說(shuō)明:執(zhí)行完一個(gè)ca多個(gè)case可以共用一組執(zhí)行語(yǔ)句。例如: switch(grade) {case'A': case'B': case'C':printf(">60\n");break; …… }grade的值為'A'、'B'或'C'時(shí)都執(zhí)行同一組語(yǔ)句。多個(gè)case可以共用一組執(zhí)行語(yǔ)句。grade的值為'A'、'3.5.5選擇結(jié)構(gòu)程序舉例例3.32:判斷某一年是否是閏年。分析:滿足以下兩種條件之一即為閏年:能被4但不能被100整除;能被400整除。根據(jù)以上條件,分別考慮如下情況:不能被4整除的,不是閏年。能被4整除但不能被100整除的,是閏年。能被400整除的,是閏年。其他都不是閏年。3.5.5選擇結(jié)構(gòu)程序舉例例3.32:判斷某一年是否例3.32流程圖year被4整除year被100整除year被400整除flag=1flag=0flag=1flag=0flag輸出“閏年”輸出“非閏年”真真真真假假假假例3.32流程圖year被4整除year被100整除yea#include<stdio.h>voidmain(){intyear,flag;printf("請(qǐng)輸入年份:");scanf("%d",&year);if(year%4==0) if(year%100==0) if(year%400==0) flag=1; elseflag=0; elseflag=1;elseflag=0;if(flag) printf("%d是閏年\n",year);else printf("%d不是閏年\n",year);}運(yùn)行結(jié)果:請(qǐng)輸入年份:1996↙1996是閏年#include<stdio.h>運(yùn)行結(jié)果:#include<stdio.h>voidmain(){intyear,flag;scanf("%d",&year);

if((year%4==0&&year%100!=0)||(year%400==0)) flag=1;else flag=0;if(flag) printf("%d是閏年\n",year);else printf("%d不是閏年\n",year);}#include<stdio.h>例3.33:求一元二次方程ax2+bx+c=0的解,a、b、c由鍵盤(pán)輸入。分析: 方程的解有以下幾種可能: ①a=0,不是二次方程。 ②b2-4ac=0,有兩個(gè)相等實(shí)根。 ③b2-4ac>0,有兩個(gè)不等實(shí)根。 ④b2-4ac<0,有兩個(gè)共軛復(fù)根。例3.33:求一元二次方程ax2+bx+c=0的解,a、b、例3.33流程圖x1=x2=計(jì)算復(fù)根的實(shí)部和虛部:實(shí)部:p=-虛部:q=

輸出兩個(gè)不等實(shí)根:x1,x2輸出兩個(gè)復(fù)根:p+qi,p-qib2-4ac>0b2-4ac=0a=0輸出“非二次方程”輸出兩個(gè)相等實(shí)根:-真真真假假假例3.33流程圖x1=x2=計(jì)算復(fù)根的實(shí)部和虛部:實(shí)部:#include<stdio.h>#include<math.h>voidmain(){floata,b,c,disc,x1,x2,p,q;scanf("%f,%f,%f",&a,&b,&c);printf("此方程");

if

(fabs(a)<=1e-6)printf("不是二次方程\n");

else

{disc=b*b-4*a*c;

if

(fabs(disc)<=1e-6)

printf("有兩個(gè)相等實(shí)根:%8.4f\n",-b/(2*a));

else#include<stdio.h>

if

(disc>1e-6){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);

printf("有兩個(gè)不等實(shí)根:%8.4fand%8.4f\n",x1,x2);}

else

{p=-b/(2*a);q=sqrt(-disc)/(2*a);printf("有兩個(gè)共軛復(fù)根:\n");printf("%8.4f+%8.4fi\n",p,q);printf("%8.4f-%8.4fi\n",p,q);}}} if(disc>1e-6)運(yùn)行情況:①1,2,1此方程有兩個(gè)相等實(shí)根:-1.0000②1,2,2此方程有兩個(gè)共軛復(fù)根:-1.0000+1.0000i-1.0000-1.0000i③2,6,1

此方程有兩個(gè)不等實(shí)根:-0.1771and-2.8229運(yùn)行情況:①1,2,1例5.1:一座高架橋最高限速90公里/時(shí),判斷一輛車(chē)是否超速,若超速需要交納罰金。根據(jù)汽車(chē)時(shí)速與最高限速的比值劃分:r=(v-90)/90(r為超速比,v為汽車(chē)時(shí)速)當(dāng)r<=0.2時(shí),為正常值;當(dāng)0.2<r≤0.4,須交納200元;當(dāng)0.4<r≤0.6,須交納500元;當(dāng)r>0.6時(shí),交納1000元。例5.1:一座高架橋最高限速90公里/時(shí),判斷一輛車(chē)是否超速方法:使用并列if語(yǔ)句#include<stdio.h>voidmain(){floatr,v;printf("請(qǐng)輸入車(chē)速v:\n");scanf("%f",&v);r=(v-90)/90;if(r<=0.2) printf("正常!\n");if(r>0.2&&r<=0.4)printf("請(qǐng)支付200元!\n");if(r>0.4&&r<=0.6)printf("請(qǐng)支付500元!\n");if(r>0.6) printf("請(qǐng)支付1000元!\n");}方法:使用并列if語(yǔ)句3.6循環(huán)結(jié)構(gòu)例:計(jì)算1+2+…+50的值。分析:設(shè)累加和變量為sum,其初值為0;加數(shù)變量為i,初值為1;重復(fù)執(zhí)行sum=sum+i;i=i+1;當(dāng)i增到51時(shí),停止計(jì)算。此時(shí),sum的值就是1~50的累加和。3.6循環(huán)結(jié)構(gòu)例:計(jì)算1+2+…+50的值。分析:什么是循環(huán)?一個(gè)循環(huán)結(jié)構(gòu)包括四部分:初始化循環(huán)變量、循環(huán)條件、循環(huán)體、修改循環(huán)變量C語(yǔ)言中三種基本的循環(huán)結(jié)構(gòu):1、while語(yǔ)句構(gòu)成的循環(huán)(“當(dāng)型”循環(huán))2、do…while語(yǔ)句構(gòu)成的循環(huán)(“直到型”循環(huán))3、for語(yǔ)句構(gòu)成的循環(huán)(“當(dāng)型”循環(huán))什么是循環(huán)?goto語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)句,它的一般形式為

goto語(yǔ)句標(biāo)號(hào);語(yǔ)句標(biāo)號(hào)符合標(biāo)識(shí)符命名規(guī)則,即由字母、數(shù)字和下劃線組成,第一個(gè)字符必須為字母或下劃線。

例如:gotolabel_1;合法goto123;不合法3.6.1goto語(yǔ)句goto語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)句,它的一般形式為3.6.1結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用goto語(yǔ)句,因?yàn)闉E用goto語(yǔ)句將使程序流程無(wú)規(guī)律、可讀性差.一般來(lái)說(shuō),可以有兩種用途:(1)與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu);(2)從多層循環(huán)的內(nèi)層循環(huán)跳轉(zhuǎn)到外層循環(huán)。3.6.1goto語(yǔ)句結(jié)構(gòu)化程序設(shè)計(jì)方法主張限制使用goto語(yǔ)句,因?yàn)闉E用#include<stdio.h>voidmain(){inti,sum;sum=0;i=1;loop:sum=sum+i;i++;if(i<=50)gotoloop;printf("%d\n",sum);}運(yùn)行結(jié)果:1275例3.34:計(jì)算1+2+…+50的值。#include<stdio.h>運(yùn)行結(jié)果:1275例一般形式:while(表達(dá)式)語(yǔ)句;3.6.2while語(yǔ)句執(zhí)行過(guò)程:計(jì)算表達(dá)式的值,若為真(非0),則執(zhí)行循環(huán)體,否則退出循環(huán),執(zhí)行后面的語(yǔ)句。表達(dá)式語(yǔ)句0非0一般形式:3.6.2while語(yǔ)句執(zhí)行過(guò)程:計(jì)算表達(dá)例3.35:求1+2+3+······+50i=1i<=50sum=sum+ii=i+1i=1當(dāng)i<=50sum=sum+ii=i+1假真例3.35:求1+2+3+······+50i=1i<=#include<stdio.h>voidmain()

{inti=1,sum=0;

while(i<=50)

{sum=sum+i;

i++;

}

printf("%d\n",sum);

}運(yùn)行結(jié)果:1275#include<stdio.h>運(yùn)行結(jié)果:1275說(shuō)明:(1)循環(huán)體如果包含一個(gè)以上的語(yǔ)句,要用{}括起來(lái),否則,只執(zhí)行到第一個(gè)分號(hào)處。(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語(yǔ)句。遇到數(shù)列求和、求積的問(wèn)題,一般可以考慮使用循環(huán)解決。注意循環(huán)初值的設(shè)置。一般對(duì)于累加器設(shè)置為0,累乘器設(shè)置為1。說(shuō)明:一般形式:do循環(huán)體語(yǔ)句while(表達(dá)式);3.6.3do-while語(yǔ)句循環(huán)體語(yǔ)句當(dāng)表達(dá)式值為真循環(huán)體語(yǔ)句表達(dá)式非0(真)0(假)執(zhí)行過(guò)程:先執(zhí)行一次循環(huán)體中的語(yǔ)句,然后計(jì)算表達(dá)式的值,若非0,則再次執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。一般形式:3.6.3do-while語(yǔ)句循環(huán)體語(yǔ)句當(dāng)例3.36:求1+2+3+······+50sum=sum+ii=i+1i=1i<=50sum=sum+ii=i+1i=1當(dāng)i<=50真假例3.36:求1+2+3+······+50sum=sum+#include<stdio.h>

voidmain()

{

inti,sum=0;

i=1;

do

{sum=sum+i;

i++;

}

while(i<=50);

printf("%d\n",sum);

}運(yùn)行結(jié)果:1275#include<stdio.h>

voidmain(例3.37:while和do~while比較#include<stdio.h>voidmain(){inti,sum=0;scanf("%d",&i);do{sum=sum+i; i++;}while(i<=10);printf("%d",sum);}#include<stdio.h>voidmain(){inti,sum=0;scanf("%d",&i);while(i<=10){sum=sum+i; i++;}printf("%d",sum);}運(yùn)行情況:110運(yùn)行情況:1111運(yùn)行情況:155運(yùn)行情況:155例3.37:while和do~while比較#includeWhile語(yǔ)句和do…while語(yǔ)句的區(qū)別:第一次執(zhí)行時(shí),while語(yǔ)句先判斷,符合條件才執(zhí)行循環(huán)體;do…while語(yǔ)句不管是否符合條件,先執(zhí)行一次循環(huán)體。while語(yǔ)句:while(表達(dá)式)后無(wú)分號(hào),do…while語(yǔ)句:while(表達(dá)式)有分號(hào)。While語(yǔ)句和do…while語(yǔ)句的區(qū)別:一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句;3.6.4for語(yǔ)句執(zhí)行過(guò)程:⑴求解表達(dá)式1。⑵求解表達(dá)式2,若其值為真,則執(zhí)行循環(huán)體語(yǔ)句,然后執(zhí)行⑶。若為假,轉(zhuǎn)⑷。⑶求解表達(dá)式3,然后轉(zhuǎn)⑵繼續(xù)執(zhí)行。⑷結(jié)束循環(huán),執(zhí)行for語(yǔ)句的下一條語(yǔ)句。

一般形式:3.6.4for語(yǔ)句執(zhí)行過(guò)程:例3.38:求1+2+······+50運(yùn)行結(jié)果:1275#include<stdio.h>voidmain(){intsum=0,i;for(i=1;i<=50;i++)sum=sum+i;printf("%d\n",sum);}for語(yǔ)句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;修改循環(huán)變量)語(yǔ)句;例3.38:求1+2+······+50運(yùn)行結(jié)果:#incl說(shuō)明:for語(yǔ)句中的三個(gè)表達(dá)式可以省略或部分省略,但其中的分號(hào)不能省略。例:for(i=1;i<=100;i++)sum=sum+i;◆表達(dá)式1省略

i=1;for(;i<=100;i++)sum=sum+i;◆表達(dá)式2省略

for(i=1;;i++){if(i>100)break;

sum=sum+i;}說(shuō)明:◆表達(dá)式1省略◆表達(dá)式1和3都省略i=1;for(;i<=100;){sum=sum+i;i++;}i=1;while(i<=100){sum=sum+i;i++;}◆三個(gè)表達(dá)式都省略

for(;;)◆表達(dá)式3省略

for(i=1;i<=100;){sum=sum+i;i++;}例:for(i=1;i<=100;i++)sum=sum+i;◆表達(dá)式1和3都省略i=1;◆三個(gè)表達(dá)式都省略◆表達(dá)式3省例3.40:從鍵盤(pán)輸入一個(gè)整數(shù)n,計(jì)算n!#include<stdio.h>voidmain(){inti,n,fac=1;printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d",&n);for(i=1;i<=n;i++)fac=fac*i;printf("%d!=%d\n",n,fac);}運(yùn)行情況:請(qǐng)輸入一個(gè)整數(shù):55!=120例3.40:從鍵盤(pán)輸入一個(gè)整數(shù)n,計(jì)算n!#include含義:一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)的嵌套。while(){······while(){······}······}while(){······do{······}while();······}while(){······for(){······}······}3.6.6循環(huán)的嵌套三種循環(huán)可以互相嵌套。含義:一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱(chēng)為循環(huán)的嵌套do{······while(){······}······}while();do{······for(;;){······}······}while();do{······do{······}while();······}while();dododofor(;;){······for(;;){······}······}for(;;){······do{······}while();······}for(;;){······while(){······}······}注:內(nèi)層循環(huán)應(yīng)完全嵌套在外層循環(huán)內(nèi)部,不能交叉嵌套;內(nèi)層循環(huán)體執(zhí)行次數(shù)=內(nèi)層循環(huán)次數(shù)×外層循環(huán)次數(shù)。for(;;)for(;;)for(;;)注:例3.42:輸出九九乘法表1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81例3.42:輸出九九乘法表1*1=1#include<stdio.h>voidmain(){

inti,j;for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)printf("%d*%d=%d",j,i,i*j);printf("\n");

}}#include<stdio.h>#include<stdio.h>voidmain(){inti,j;for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)printf("%d*%d=%-4d",j,i,i*j);printf("\n");

}}#include<stdio.h>3.6.7break語(yǔ)句和continue語(yǔ)句一、break語(yǔ)句功能:①跳出switch語(yǔ)句。②跳出循環(huán),接著執(zhí)行循環(huán)結(jié)構(gòu)下面的語(yǔ)句。3.6.7break語(yǔ)句和continue語(yǔ)句一、br例3.43:#include<stdio.h>voidmain(){intr;floatarea,pi=3.14159;for(r=1;r<=10;r++)

{area=pi*rr;if(area>100)break;printf("r=%d,area=%f\n",r,area);

}

}

說(shuō)明:程序的作用是計(jì)算r=1到r=10的圓面積,直到面積大于100為止。(當(dāng)r=6時(shí),area>100,執(zhí)行break語(yǔ)句,提前結(jié)束循環(huán))。例3.43:說(shuō)明:程序的作用是計(jì)算r=1到r=10的圓面積,二、continue語(yǔ)句功能:結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中未執(zhí)行的語(yǔ)句。說(shuō)明:僅用于循環(huán)語(yǔ)句中。循環(huán)嵌套時(shí),break和continue只影響包含它們的內(nèi)層循環(huán),與外層循環(huán)無(wú)關(guān)。二、continue語(yǔ)句功能:結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中#include<stdio.h>voidmain(){intn;for(n=100;n<=450;n++)

{

if(i>150&&i<400)continue; if(n%7==0)printf("%d",n);

}}例3.45:將100~150之間和400~450之間能被7整除的數(shù)輸出。#include<stdio.h>例3.45:將100~例3.46:求1!+2!+3!+……+10!的值。#include<stdio.h>voidmain(){intn,fac=1,sum=0;for(n=1;n<=10;n++){fac=fac*n;sum=sum+fac;}printf("sum=%d",sum);}運(yùn)行結(jié)果:sum=40379133.6.8循環(huán)結(jié)構(gòu)程序舉例例3.46:求1!+2!+3!+……+10!的值。#incl例3.47:用π/4≈1-1/3+1/5-1/7+…公式求π的流程圖:分子:1,-1,1,-1…分母:1,3,5,7,...近似值,直到某一項(xiàng)的絕對(duì)值小于10-6為止。t=1,pi=0,n=1,s=1當(dāng)|t|≥10-6pi=pi+tn=n+2s=-st=s/npi=pi*4輸出pi例3.47:用π/4≈1-1/3+1/5-1/7+…公式求#include<stdio.h>#include<math.h>voidmain(){ints=1;floatn=1,t=1,pi=0;while(fabs(t)>=1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi4;printf("pi=%10.6f\n",pi);}運(yùn)行結(jié)果:pi=

3.141593t=1,pi=0,n=1,s=1當(dāng)|t|≥10-6pi=pi+tn=n+2s=-st=s/npi=pi*4輸出pi#include<stdio.h>運(yùn)行結(jié)果:t=1,pi例5.7:用歐幾里得算法即輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)的最大公約數(shù)和最小公倍數(shù)。

分析:輾轉(zhuǎn)相除法原理 ⑴輸入兩個(gè)正整數(shù)x,y,并使x>y。 ⑵x除以y的余數(shù)為n即n=x%y。 ⑶若n=0,則y即為兩數(shù)的最大公約數(shù) ⑷若n≠0,則將y賦值給x,將n賦值給y,此時(shí)得到新的一組x,y值并重復(fù)執(zhí)行⑵,直到n=0。 最小公倍數(shù)=x*y/最大公約數(shù)例5.7:用歐幾里得算法即輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)的最大公約數(shù)#include<stdio.h>voidmain(){intm,n,x,y,t;printf("請(qǐng)輸入兩個(gè)正整數(shù):\n");scanf("%d,%d",&x,&y);m=x*y;if(x<y){t=x;x=y;y=t;}n=x%y;while(n!=0){x=y;y=n;n=x%y;}printf("最大公約數(shù)為:%d\n",y);printf("最小公倍數(shù)為:%d\n",m/y);}#include<stdio.h>例5.8:從鍵盤(pán)輸入一個(gè)整數(shù)a,判斷a是否為素?cái)?shù)。分析:素?cái)?shù)是只能被1和它本身整除的數(shù)(規(guī)定1不是素?cái)?shù))。判定素?cái)?shù)的方法:讓a被2到除,若都不能整除,則a為素?cái)?shù)。①使用scanf函數(shù)輸入一個(gè)整數(shù)a。②循環(huán)變量i從2遞增到sqrt(a)

,每次遞增均判斷a%i是否為0。③若a%i==0,則a不是素?cái)?shù)且終止對(duì)剩余數(shù)的判斷;否則i=i+1,繼續(xù)對(duì)其余的i值進(jìn)行判斷直到sqrt(a)

,則a是素?cái)?shù)。例5.8:從鍵盤(pán)輸入一個(gè)整數(shù)a,判斷a是否為素?cái)?shù)。分析:#include<stdio.h>#include<math.h>voidmain(){inta,i,flag=0;scanf("%d",&a);for(i=2;i<=sqrt(a);i++)if(a%i==0){flag=1;break;}if(flag==0)printf("%d是素?cái)?shù)\n",a);elseprintf("%d不是素?cái)?shù)\n",a);}運(yùn)行情況:1717是素?cái)?shù)#include<stdio.h>運(yùn)行情況:例5.10:求Fibonacci數(shù)列:1,1,2,3,5,8……前36個(gè)數(shù)。第1、2兩個(gè)數(shù)為1、1,從第3個(gè)數(shù)開(kāi)始,該數(shù)是其前面兩個(gè)數(shù)之和。分析:這是一個(gè)遞推問(wèn)題,遞推公式: F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n≥3)設(shè)f1、f2為相鄰的兩個(gè)數(shù),用循環(huán)實(shí)現(xiàn)遞推,每次輸出兩個(gè)數(shù),循環(huán)18次。例5.10:求Fibonacci數(shù)列:1,1,2,3,5,8#include<stdio.h>voidmain(){intf1=1,f2=1,i;for(i=1;i<=18;i++){printf("%12d%12d",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}}#include<stdio.h>運(yùn)行結(jié)果:運(yùn)行結(jié)果:演講完畢,謝謝觀看!演講完畢,謝謝觀看!第3章C程序的流程控制

3.1C語(yǔ)句3.2賦值語(yǔ)句3.3輸入輸出3.4順序結(jié)構(gòu)程序設(shè)計(jì)3.5選擇結(jié)構(gòu)程序設(shè)計(jì)3.6循環(huán)結(jié)構(gòu)程序設(shè)計(jì)第3章C程序的流程控制3.1C語(yǔ)句C語(yǔ)句分為5類(lèi):控制語(yǔ)句:完成一定的控制功能。選擇語(yǔ)句:if…else、switch循環(huán)語(yǔ)句:for、while、do…while結(jié)束本次循環(huán)語(yǔ)句:continue中止執(zhí)行switch或循環(huán)語(yǔ)句:break轉(zhuǎn)向語(yǔ)句:goto從函數(shù)返回語(yǔ)句:return3.1C語(yǔ)句C語(yǔ)句分為5類(lèi):控制語(yǔ)句:完成一定的控制功能。3.1函數(shù)調(diào)用語(yǔ)句:由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。例如:printf("ThisisaCstatement.");表達(dá)式語(yǔ)句:由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成。例如: a=3; 空語(yǔ)句:只有一個(gè)分號(hào)(;)的語(yǔ)句。函數(shù)調(diào)用語(yǔ)句:由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成。復(fù)合語(yǔ)句:用{}括起來(lái)的一些語(yǔ)句。例如: {z=x+y;t=z/100; printf("%f",t); }C程序的流程控制管理概述課件3.2賦值語(yǔ)句1.賦值運(yùn)算符:=、+=、-=、*=、/=、%=等作用:將一個(gè)數(shù)據(jù)賦給一個(gè)變量。2.賦值表達(dá)式形式:變量=表達(dá)式將表達(dá)式的值賦給變量例如:a=5b=a*43.2賦值語(yǔ)句1.賦值運(yùn)算符:=、+=、-=、*=、/=②變量(+、-、*、/、%)=表達(dá)式將變量與表達(dá)式的值作相應(yīng)運(yùn)算后再賦給變量。例如:x-=8等價(jià)于x=x-8

y%=a+3等價(jià)于y=y%(a+3)3.賦值表達(dá)式的值:等于左邊變量的值。4.賦值表達(dá)式后加分號(hào)構(gòu)成賦值語(yǔ)句。②變量(+、-、*、/、%)=表達(dá)式寫(xiě)出下面表達(dá)式運(yùn)算后a的值(a=3*5)=4*3a=3*5a的值為15a=4*3a的值為12寫(xiě)出下面表達(dá)式運(yùn)算后a的值a=3*5a的值為15a=4a*=aa的值為12×12=144a-=144a的值為144-144=0a+=0a的值為0寫(xiě)出下面表達(dá)式運(yùn)算后a的值,設(shè)原來(lái)a=12,a已定義為整型變量。a+=a-=a*=aa*=aa的值為12×12=144寫(xiě)出下面表達(dá)式運(yùn)算后a字符輸出函數(shù):putchar字符輸入函數(shù):getchar格式輸出函數(shù):printf格式輸入函數(shù):scanfC語(yǔ)言無(wú)I/O語(yǔ)句,I/O操作由函數(shù)實(shí)現(xiàn)#include<stdio.h>頭文件3.3輸入輸出字符輸出函數(shù):putcharC語(yǔ)言無(wú)I/O語(yǔ)句,I/O格式:printf("格式控制",輸出表列)功能:按指定格式向顯示器輸出數(shù)據(jù)printf函數(shù)(格式輸出函數(shù))輸出表列:要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔)格式控制:格式說(shuō)明:%[修飾符]格式字符,用于指定輸出格式轉(zhuǎn)義字符:\n,\t普通字符:原樣輸出3.3.1格式輸出格式:printf("格式控制",輸出表列)printf函數(shù)printf格式字符格式字符 使用形式 功能說(shuō)明

d %d%md%ld%mld

帶符號(hào)的十進(jìn)制整數(shù) o %o%mo%lo 無(wú)符號(hào)的八進(jìn)制整數(shù)

x,X %x%mx%lx 無(wú)符號(hào)的十六進(jìn)制整數(shù)

u %u%lu 無(wú)符號(hào)的十進(jìn)制整數(shù)

f %f%m.nf%-m.nf 小數(shù)形式的單、雙精度數(shù)

e,E %e%m.ne%-m.ne 指數(shù)形式的單、雙精度數(shù)

g,G %g f、e格式中較短者忽略0

c %c%mc 輸出一個(gè)字符

s %s%ms%-ms%m.ns%-m.ns 輸出字符串 % %% 輸出“%”其中:l—用于長(zhǎng)整型數(shù) n—小數(shù)位數(shù)或截取的字符個(gè)數(shù)

m—輸出域的寬度 -—域內(nèi)左對(duì)齊printf格式字符格式字符 使用形式 功能說(shuō)明1.%d──以十進(jìn)制整數(shù)形式輸出。例:#include<stdio.h>voidmain(){inta=123;longb=123456;printf("%d,%5d,%-5d,%2d\n",a,a,a,a);printf("b=%ld",b);}

運(yùn)行結(jié)果:123,□□123,123□□,123b=123456 1.%d──以十進(jìn)制整數(shù)形式輸出。運(yùn)行結(jié)果:2.%f──以小數(shù)形式輸出單精度和雙精度實(shí)數(shù)。整數(shù)部分全部輸出,并輸出6位小數(shù)。例3.10:按指定的小數(shù)位數(shù)輸出實(shí)數(shù)#include<stdio.h>voidmain(){floatd=12.345;printf("d=%f,d=%.2f,d=%10.2f",d,d,d);}

運(yùn)行結(jié)果:d=12.345000,d=12.35,d=□□□□□12.352.%f──以小數(shù)形式輸出單精度和雙精度實(shí)數(shù)。運(yùn)行結(jié)果:3.%c──輸出一個(gè)字符。例:#include<stdio.h>voidmain(){charc='a';printf("%c",c);} 運(yùn)行結(jié)果:a 3.%c──輸出一個(gè)字符。運(yùn)行結(jié)果:4.%s──輸出一個(gè)字符串。例:#include<stdio.h>voidmain(){printf("%s\n","CHINA");

printf("%3s,%7.2s,%-5.3s","CHINA","CHINA","CHINA");} 運(yùn)行結(jié)果:CHINACHINA,□□□□□CH,CHI□□4.%s──輸出一個(gè)字符串。運(yùn)行結(jié)果:3.3.2scanf函數(shù)(格式輸入函數(shù))格式:scanf("格式控制",地址表列)功能:按指定格式從鍵盤(pán)輸入數(shù)據(jù),存入地址表列指定的存儲(chǔ)單元中,并按回車(chē)鍵結(jié)束地址表列:變量的地址,用取地址運(yùn)算符&例:scanf("%d",&a);

輸入:10

則10a3.3.2scanf函數(shù)(格式輸入函數(shù))格式:scascanf格式字符格式字符 使用形式 功能說(shuō)明 d %d%md%ld%hd 帶符號(hào)的十進(jìn)制整數(shù) o %o%mo%lo%ho 無(wú)符號(hào)的八進(jìn)制整數(shù) x,X %x%mx%lx%hx 無(wú)符號(hào)的十六進(jìn)制整數(shù) u %u%lu 無(wú)符號(hào)的十進(jìn)制整數(shù) f %f%mf%lf小數(shù)形式的單、雙精度數(shù) e,E %e%le 同上 g,G %g 同上 c %c 輸入單字符 s %s

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論