《C語言程序設(shè)計》_第1頁
《C語言程序設(shè)計》_第2頁
《C語言程序設(shè)計》_第3頁
《C語言程序設(shè)計》_第4頁
《C語言程序設(shè)計》_第5頁
已閱讀5頁,還剩502頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計精選ppt第1章程序設(shè)計基礎(chǔ)精選ppt第1章程序設(shè)計基礎(chǔ)§1.1程序與程序設(shè)計語言指令與程序:程序設(shè)計語言:語言處理程序:匯編解釋編譯精選ppt第1章程序設(shè)計基礎(chǔ)§1.2算法1.2.1算法的概念算法算法的特性有窮性確定性有零個或多個輸入有一個或多個輸出有效性精選ppt例1:設(shè)有兩個杯子A和B,分別盛放酒和醋,要求將它們互換。S1:C←AS2:A←BS3:B←C1.2.2算法設(shè)計舉例第1章程序設(shè)計基礎(chǔ)精選ppt1.2.2算法設(shè)計舉例第1章程序設(shè)計基礎(chǔ)S1:i=1,令max等于第一個數(shù);S2:i=i+1;S3:將max與第

i個數(shù)進(jìn)行比較,若前者小于

后者,將修正max為第i個數(shù);否則進(jìn)行

S4;S4:i<10?,若是轉(zhuǎn)S2,否則轉(zhuǎn)S5;S5:輸出max,結(jié)束例2從10個數(shù)中挑出最大數(shù),并將之置入max。精選ppt1.2.2算法設(shè)計舉例第1章程序設(shè)計基礎(chǔ)例3:求n!S1:s←1,t←1;S2:s←s*t;S3:t←t+1;S4:若t小于等于n,則返S2,否則結(jié)束。精選ppt1.2.2算法設(shè)計舉例第1章程序設(shè)計基礎(chǔ)例4:求100以內(nèi)的所有素數(shù)。S1:將2到100的自然數(shù)放入a[2]至a[100]中;S2:從前至后找下一個非零最小數(shù)→newp(初值

為2);S3:刪去所有newp的倍數(shù)(清零);S4:重復(fù)S2、S3,直至newp>100/2;S5:輸出剩余的(非0)數(shù),結(jié)束。精選ppt開始1p2ip*ipi+1ii>5?結(jié)束NY1.2.3算法的表示1.用自然語言表示算法通俗易懂,但易出現(xiàn)“歧義性”。2.用流程圖表示算法直觀形象,易于理解。精選ppt1.2.3算法的表示ABpABYNpAYNBobm和Jacopini提出:程序只有三種基本結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)精選pptpAYNpAYN1.2.3算法的表示循環(huán)結(jié)構(gòu)精選ppt順序AB當(dāng)型循環(huán)當(dāng)P1

A1.2.3算法的表示分支PTF AB直到型循環(huán)直到P1A3.用N-S流程圖表示算法精選ppt輸入b,max=bn=1

輸入bmax>b?

TFmax=bn=n+1

當(dāng)n小于10輸出max例如:從十個數(shù)中挑出最大數(shù)的N-S結(jié)構(gòu)圖如下:1.2.3算法的表示精選ppt1t1it*iti+1i

當(dāng)i<=n打印t1.2.3算法的表示例1-9:求n!的N-S圖如下:精選ppt4.用偽代碼表示算法5.用計算機(jī)語言表示算法1.2.3算法的表示精選ppt§1.3C程序結(jié)構(gòu)簡介例1:main(){printf(“ThisisaCprogram.\n”);}精選ppt§1.3簡單的C程序介紹例2#include<stdio.h>main()

/*主函數(shù)*/{inta,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d”,c);}intmax(intx,inty)

/*定義max函數(shù)*/

{intz;

if(x>y)

z=x;

else

z=y;

return(z); }⑴

C程序是由函數(shù)構(gòu)成的。一個C源程序有且僅有一個main函數(shù);可包含若干其他函數(shù)。(2)一個函數(shù)由兩部分組成:

函數(shù)的首部函數(shù)體(3)一個C程序總是從main函數(shù)開始執(zhí)行,在main函數(shù)中結(jié)束。(4)

一行可寫多個語句,一個語句也可寫在多行上。(5)

每個語句和數(shù)據(jù)定義的最后必須有一個分號。(6)C語言本身沒有輸入輸出語句。(7)

用/*……*/作注釋,增加程序的可讀性。要遵循良好的程序設(shè)計風(fēng)格返回精選ppt第2章

C語言入門精選pptCh2C語言入門§2.1常量和變量和數(shù)據(jù)類型§2.2變量的定義與初始化§2.3運算符與表達(dá)式§2.4簡單輸入輸出

返回精選ppt一、關(guān)鍵字二、預(yù)定義標(biāo)識符三、用戶標(biāo)識符§2.1.1標(biāo)識符§2.1常量、變量與數(shù)據(jù)類型精選ppt一、常量和變量1.常量整型常量:如12、0、-3等實型常量:如4.5、-1.234等字符常量:如‘a(chǎn)’、’d’等2.變量用戶自定義的標(biāo)識符。如:sum,students等§2.1.2常量和變量精選ppt命名規(guī)則:以字母或下劃線開始,后跟字母、數(shù)字或下劃線。變量名不能是關(guān)鍵字以下為合法的變量名

x1,sum,average,day,month,lotus_1_2以下為不合法的變量名

$456,#abc,1fs,2nd,M.D.Jhon§2.1.2常量和變量精選ppt

注意:變量必須先定義,后使用;遵循見名思意的原則;習(xí)慣上用小寫字母?!?.1.2常量和變量精選ppt二、符號常量符號常量借助于預(yù)處理命令define來實現(xiàn);define命令格式是:

#define標(biāo)識符字符串如:#definestring“Cprogram”§2.1.2常量和變量精選ppt#definePI3.14voidmain(){intr1=5,r2=6;floatc1,c2,s1,s2;

c1=2*PI*r1;s1=PI*r1*r1;

c2=2*PI*r2;s2=PI*r2*r2;printf("c1is%f\n",c1);printf("c2is%f\n",c2);printf("s1is%f\n",s1);printf("s2is%f\n",s2);}§2.1.2常量和變量例2-2精選ppt§2.1.3數(shù)據(jù)類型一、整型數(shù)據(jù)1.整型常量十進(jìn)制數(shù)如:123,-456,0八進(jìn)制數(shù)如:0123,-011(以0開頭的數(shù))十六進(jìn)制數(shù)如:0x123,-0x12,0xABC(以0x開頭的)精選ppt2.整型變量(1)整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中以二進(jìn)制形式存放的。每一個整型變量在內(nèi)存中占2個字節(jié)。例:定義整型變量i=10的存放形式。inti=10;0000101000000000§2.1.3數(shù)據(jù)類型精選ppt整型變量基本型短整型

長整型無符號型intshortintlongintunsignedint、unsignedshort、unsignedlong

(2)整型變量的分類§2.1.3數(shù)據(jù)類型精選ppt整型數(shù)據(jù)比較§2.1.3數(shù)據(jù)類型整數(shù)類型所占位數(shù)數(shù)據(jù)范圍int16-32768~32767shortint16-32768~32767longint32--unsignedint160~65535unsignedshort160~65535unsignedlong32--精選ppt(3)整型變量的定義例:inta,b;unsignedshortc,d;longe,f;§2.1.3數(shù)據(jù)類型精選ppt§2.1.3數(shù)據(jù)類型二、實型數(shù)據(jù)1.實型常量(1)十進(jìn)制浮點數(shù)

如:0.123,.456,0.0,123.,123.0(2)指數(shù)形式如:123e3,123E3E10,100.e15.2,.e5均不合法精選ppt2.實型變量(1)實型數(shù)據(jù)在內(nèi)存中的存放形式

float:4B(32位)。

double:8B(64位)。

longdouble:10B(80位)。實型數(shù)據(jù)是按照指數(shù)形式存儲的。§2.1.3數(shù)據(jù)類型

數(shù)符小數(shù)部分指數(shù)符號指數(shù)

精選ppt(2)實型變量的分類floatx,y;doublez;longdoublef;§2.1.3數(shù)據(jù)類型精選ppt(3)實型數(shù)據(jù)的舍入誤差如:1.0/3*3的結(jié)果并不一定等于1。類型占位數(shù)有效數(shù)字?jǐn)?shù)值范圍float單精度326~7--double

(雙精度)6415~16--longdouble

(長雙精度)8018~19--§2.1.3數(shù)據(jù)類型精選ppt§2.1.3數(shù)據(jù)類型三、字符型數(shù)據(jù)1.字符型常量‘a(chǎn)’、‘X’為字符常量;一個字符常量占1B,存放的是字符的編碼值如字符‘A’的存放形式如下:01000001精選ppt轉(zhuǎn)義字符以‘\’開頭,后跟一個約定的字符或所要表示字符的十六進(jìn)制(或八進(jìn)制)的編碼;‘\0’表示編碼值為0的字符,即NULL,它與數(shù)值常數(shù)0是等同的;‘\101’表示‘A’;下表列出了常用的轉(zhuǎn)義字符:§2.1.3數(shù)據(jù)類型精選ppt字符形式含義ASCII代碼\n換行,將當(dāng)前位置移到下一行開頭10\t水平制表(跳到下一個tab位置)9\b退格,將當(dāng)前位置移到前一列8\r回車,將當(dāng)前位置移到本行開頭13\f換頁,將當(dāng)前位置移到下頁開頭12\\反斜杠字符“\”92\‘單引號(撇號)字符39\“雙引號字符34\ddd1到3位8進(jìn)制數(shù)所代表的字符\xhh1到2位16進(jìn)制數(shù)所代表的字符§2.1.3數(shù)據(jù)類型精選ppt2.字符變量例:charc1=‘a(chǎn)’,c2=‘A’;§2.1.3數(shù)據(jù)類型3.字符數(shù)據(jù)的存放形式及使用方法如:‘a(chǎn)’在內(nèi)存存放的是二進(jìn)制數(shù)01100001

‘A’在內(nèi)存存放的是二進(jìn)制數(shù)01000001精選ppt例:main(){charc1,c2;c1=97;c2=98;printf(“%c%c”,c1,c2);printf(“%d%d”,c1,c2);c1=c1-32;c2=c2-(‘a(chǎn)’-‘A’);printf(“%c%c\n”,c1,c2);}運行結(jié)果:ab9798AB§2.1.3數(shù)據(jù)類型精選ppt§2.1.3數(shù)據(jù)類型四、字符串常量“Clanguageprogramming”、“a\\n”、“#123”“Don\’tmove!”“China”在存儲器中實際占用6個字節(jié):China\0精選ppt同理,“a”與‘a(chǎn)’是不同的表示形式不同存儲方式不同§2.1.3數(shù)據(jù)類型

返回精選ppt變量的定義格式:

類型說明符變量名1,變量名2,…;如:inta,b,c;floatx,y;charch1;§2.2變量定義與初始化精選ppt變量初始化格式:

類型說明符變量1=值1,變量2=值2,…;如:inta=3,b=4,c=5;floatx=3.4,y=0.75;注意:

(1)inta,b,c=5;只對c初始化,值為5;

(2)inta=b=c=5;是非法的;

(3)inta=5,b=5,c=5;是合法的?!?.2變量定義與初始化

返回精選ppt一、基本算術(shù)運算符

+、-、*、/、%§2.3運算符與表達(dá)式§2.3.1算術(shù)運算符與算術(shù)表達(dá)式說明:(1)*和/;(2)數(shù)學(xué)函數(shù)自變量的括號不能??;如:

sin(x);log10(x),log(x);pow(x,y)(3)角度、特殊的符號要轉(zhuǎn)換;(4)/(整除和一般除)(5)%(模運算符兩邊操作數(shù)的要求)精選ppt§2.3.1算術(shù)運算符與算術(shù)表達(dá)式二、自增、自減運算符

++、--基本運算有:++i、i++、--i、i--運算符含義++i在使用i之前,先使i的值增加1i++在使用i之后,再使i的值增加1--i在使用i之前,先使i的值減1i--在使用i之后,再使i的值減1精選ppt如:i=3時,j=++i則j=4;

j=i++則j=3;

j=--i則j=2;j=i--則j=3;§2.3.1算術(shù)運算符與算術(shù)表達(dá)式精選ppt§2.3.1算術(shù)運算符與算術(shù)表達(dá)式說明:++和--只能用于變量;++、--運算符的結(jié)合方向是“右結(jié)合”;如:-i++等于-(i++);++、--常用于循環(huán)控制、數(shù)組下標(biāo)處理等場合;i+++j應(yīng)理解為(i++)+j;精選ppt運算時按運算符的優(yōu)先級從高到低運算;運算符的結(jié)合性結(jié)合性的概念左結(jié)合性:如雙目算術(shù)運算符右結(jié)合性:如單目運算符、賦值運算符、條件運算符例:a-b+c、-i++運算符及優(yōu)先級和結(jié)合性詳見附錄C?!?.3.2運算符的優(yōu)先級和結(jié)合性精選ppt1.基本賦值運算符:=基本賦值表達(dá)式:變量=表達(dá)式例如:

a=2+3x=i++n=n+1a=b=x+y§2.3.3賦值運算符和賦值表達(dá)式精選ppt2.復(fù)合賦值運算符在“=”之前加上其他運算符,可構(gòu)成復(fù)合運算符例如:

x+=y等價于x=x+ya%=b+c/d等價于a=a%(b+c/d)C中10種復(fù)合賦值運算符:

+=、-=、*=、/=、%=、

<<=、>>=、&=、^=、|=§2.3.3賦值運算符和賦值表達(dá)式精選ppt3.

說明(1)變量=exp是表達(dá)式,有值,能直接參與運算;如:

main()

{inta,b,c,d;

a=(a=100)+(b=30)-b*5;

……

}§2.3.3賦值運算符和賦值表達(dá)式精選ppt(2)嵌套賦值表達(dá)式:e1=e2=…=en,如:

a=b=c=d=100等價于a=(b=(c=(d=100)))e1,e2,…,en不必具有相同的數(shù)據(jù)類型例2-2:當(dāng)a=12時,a+=a-=a*a求解結(jié)果?先“a-=a*a”的運算,a=a-a*a=-132;再進(jìn)行“a+=-132”的運算,

a=a+(-132)=-264?!?.3.3賦值運算符和賦值表達(dá)式精選ppt一、自動類型轉(zhuǎn)換例2-3計算表達(dá)式3+'a'+1.5-5.1*5的值

§2.3.4數(shù)據(jù)類型轉(zhuǎn)換混合運算

需自動轉(zhuǎn)換成同一類型再運算;轉(zhuǎn)換的規(guī)則如下:精選pptdoublefloatlongunsignedintchar,short高低§2.3.4數(shù)據(jù)類型轉(zhuǎn)換精選ppt賦值運算中類型轉(zhuǎn)換規(guī)則:把賦值運算符右邊表達(dá)式的數(shù)據(jù)類型轉(zhuǎn)換成左邊對象的類型。(1)實型賦給整型變量時,舍去實數(shù)的小數(shù)部分。(2)整型賦給實型變量時,數(shù)值不變,以浮點形式存儲。(3)長的賦給短的?!?.3.4數(shù)據(jù)類型轉(zhuǎn)換精選ppt例2-4:閱讀程序,寫出結(jié)果。#include<stdio.h>#include<conio.h>main(){charc;inta=500;

c=a+1;printf("c=%d\n",c);}§2.3.4數(shù)據(jù)類型轉(zhuǎn)換運行結(jié)果:c=-11精選ppt二、強制類型轉(zhuǎn)換格式:(類型關(guān)鍵字或類型名)表達(dá)式如:(int)(x+y)%(int)p

(double)a(float)(5%3)§2.3.4數(shù)據(jù)類型轉(zhuǎn)換精選ppt例

main()

{floatx;

inti;

x=3.6;

i=(int)x;

printf(“x=%f,i=%d”,x,i);

}

運行的結(jié)果是:

x=3.600000,i=3§2.3.4數(shù)據(jù)類型轉(zhuǎn)換精選ppt§2.3.5逗號運算符和逗號表達(dá)式語法:表達(dá)式1,表達(dá)式2,……語義:依次求各個表達(dá)式的值,最后一個表達(dá)式的值作為整個逗號表達(dá)式的值;如:3+5,6+8的值為14;

a=3*5,a*4的值為60;逗號表達(dá)式常用在for語句中;逗號表達(dá)式的優(yōu)先級別最低;在C中,逗號有兩種用途(分隔符,運算符)。

返回精選ppt§2.4簡單輸入輸出§2.4.1數(shù)據(jù)的輸入輸出及在C語言中的實現(xiàn)C中不提供輸入輸出語句;調(diào)用庫函數(shù)實現(xiàn)輸入輸出;輸入輸出庫函數(shù)所在頭文件為stdio.h。精選ppt§2.4.2常用數(shù)據(jù)輸入輸出一、格式輸出函數(shù)printf一般調(diào)用形式:

printf(格式控制,輸出表列);常用格式控制有:

(1)“%d”(2)“%c”(3)“%f”精選ppt§2.4.2常用數(shù)據(jù)輸入輸出一、格式輸出函數(shù)printf例2-5:

voidmain(){inta=88,b=89;charc='A';floaty=3.67;

printf("%d%d\n",a,b);printf("%c\n",c);printf("%f",y);}運行結(jié)果:8889A3.670000精選ppt§2.4.2常用數(shù)據(jù)輸入輸出二、格式輸入函數(shù)scanf一般調(diào)用形式:

scanf(格式控制,地址表列);常用格式控制與printf函數(shù)相似。精選ppt§2.4.2常用數(shù)據(jù)輸入輸出例2-6:

voidmain(){inta,b;charm,n;floatx,y;printf("inputa,b\n");scanf("%d%d",&a,&b);

printf("inputm,n\n");scanf("%c%c",&m,&n);printf("inputx,y\n");scanf("%f%f",&x,&y);printf("%d,%d,%c,%c,%f,%f",a,b,m,n,x,y);}

返回精選ppt第3章基本控制結(jié)構(gòu)精選pptch3基本控制結(jié)構(gòu)§3.1C語句的分類§3.2順序結(jié)構(gòu)程序設(shè)計§3.3選擇結(jié)構(gòu)程序設(shè)計§3.4循環(huán)結(jié)構(gòu)程序設(shè)計§3.5使用庫和函數(shù)§3.6典型例題

返回精選ppt1.控制語句二個分支語句(if-else、switch-case)

三個循環(huán)語句(for、while、do-while)

四個轉(zhuǎn)移語句(continue、break、goto、return)2.函數(shù)調(diào)用語句如:printf(“Hello,world!”);3.表達(dá)式語句

x+y;i++;a=2;a=3*5,40;§3.1C語句的分類精選ppt4.空語句

;5.復(fù)合語句

{語句序列}

返回§3.1C語句的分類精選ppt一、賦值語句語法:變量=表達(dá)式;語義:計算“=”右邊表達(dá)式的值,將之賦給“=”左邊的變量。如:

b=3;

if((a=b)>0)t=a;注意:賦值語句與賦值表達(dá)式的區(qū)別二、順序程序舉例§3.2順序結(jié)構(gòu)程序設(shè)計精選ppt例3-1:輸入一大寫字母,改為小寫后輸出。#include<stdio.h>main(){

charc1,c2;scanf("%c",&c1);

printf("%c,%d\n",c1,c1);c2=c1+32;printf("%c,%d\n",c2,c2);

getch();}§3.2順序結(jié)構(gòu)程序設(shè)計測試數(shù)據(jù)及運行結(jié)果輸入:A↙

輸出:A,65

a,97精選ppt§3.2順序結(jié)構(gòu)程序設(shè)計例:輸入三角形的三邊長,求三角形面積。分析:設(shè)三角形的三邊分別為a,b,c

則:面積area2=s(s-a)(s-b)(s-c)

其中s=(a+b+c)/2精選ppt§3.2順序結(jié)構(gòu)程序設(shè)計源程序:

#include<math.h>

main()

{floata,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%7.2f,b=%7.2f,c=%7.2f,

s=%7.2f\n”,a,b,c,s);

printf(“area=%7.2f\n”,area);

}發(fā)散:三角形面積的計算

返回精選ppt§3.3選擇結(jié)構(gòu)程序設(shè)計§3.3.1關(guān)系運算符與關(guān)系表達(dá)式一、關(guān)系運算符:

>、<、>=、<=、==、?。疥P(guān)系表達(dá)式:

i==(c=d)、x+y>a-b求值結(jié)果:int型,0或1。1為真,0為假如:設(shè)a=3,b=2,c=1則:d=a>b的值為1f=a>b>c的值為0;精選ppt§3.3.1關(guān)系運算符與關(guān)系表達(dá)式6種關(guān)系運算符的優(yōu)先級別不同:==、!=>、<、>=、<=程序設(shè)計中最好不要對兩個浮點數(shù)直接進(jìn)行相等性比較;方法之一如:fabs(a-b)<1E-6關(guān)系運算符的結(jié)合性是左結(jié)合精選ppt一、邏輯運算符及其優(yōu)先次序一元邏輯運算符:!,右結(jié)合二元邏輯運算符:&&、||,左結(jié)合邏輯運算的真值表ab!a!ba&&ba||b001100011001100101110011§3.3.2邏輯運算符與邏輯表達(dá)式精選ppt

二、邏輯表達(dá)式

邏輯表達(dá)式。如:x>=0&&x<=10c!=‘\n’||b!=3

邏輯表達(dá)式的值為真或假(1或0)

判一個量是否為真時,0為假,非0即真;如:a=4;則!a為0a=4,b=5時,則a&&b為1;§3.3.2邏輯運算符與邏輯表達(dá)式精選ppt表達(dá)式優(yōu)化優(yōu)化:邏輯運算符的執(zhí)行,只是在下一該邏輯運算符必須執(zhí)行才能求出表達(dá)式的值時才執(zhí)行;如:a&&b&&c只有當(dāng)a為非0時才判b…a||b||c當(dāng)a為真時,不再判b和c…!&&||

邏輯運算符的優(yōu)先級從高到低依次為:§3.3.2邏輯運算符與邏輯表達(dá)式精選ppt例:inta=1,b=2,c=3,d=4,m=1,n=1;

則執(zhí)行(m=a>b)&&(n=c>d)后,m、n分別是多少?

答案是:m=0,n=1利用邏輯表達(dá)式還能表示更為復(fù)雜的條件

(year%4==0&&year%100!=0)

||(year%400==0)#§3.3.2邏輯運算符與邏輯表達(dá)式精選ppt一、if語句的2種基本形式語法1:if(表達(dá)式)語句;語義:判斷表達(dá)式的值,為真時執(zhí)行語句,否則不執(zhí)行;如:#include<stdio.h>

main()

{charch;ch=getchar();

if(ch>=‘a(chǎn)’&&ch<=‘z’)ch-=‘a(chǎn)’-‘A’;

putchar(ch);

}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt語法2:if(表達(dá)式)

語句1;

else

語句2;語義:判斷表達(dá)式的值,為真時執(zhí)行語句1,否則執(zhí)行語句2;§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt如:#include<stdio.h>main(){inta,b;scanf(“%d%d”,&a,&b);

if(a>b)printf(“max=%d\n”,a);elseprintf(“max=%d\n”,b);}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt二、if語句嵌套的2種形式1.if語句嵌套在else子句中

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

語句2;

elseif(表達(dá)式3)語句3;

……else

語句n+1;§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt2.if語句嵌套在if子句中

if(表達(dá)式1)

if(表達(dá)式2)

if(表達(dá)式3)

……

語句1;

else

語句2;

else

語句3;

else

語句n+1;§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt例3-6:從鍵盤上輸入字符,判別其分類:控制符、數(shù)字、大寫字母、小寫字母、其他字符?!?.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt#include“stdio.h”main(){charc;c=getchar();

if(c<32)printf(“Thisisacontrolcharacter.\n”);elseif(c>=‘0’&&c<=‘9’)printf(“Thisifadigit.\n”);elseif(c>=‘A’&&c<=‘Z’)printf(“Thisisacapitalletter.\n”);elseif(c>=‘a(chǎn)’&&c<=‘z’)printf(“Thisisasmallletter.\n”);elseprintf(“Thisisanothercharater.\n”);}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt§3.3.3選擇結(jié)構(gòu)的實現(xiàn)說明(1)if關(guān)鍵字后的表達(dá)式可以是一切類型;如:if(a=5)語句;

if(b)語句;(2)if語句中,條件表達(dá)式必須用括號括起來;精選ppt§3.3.3選擇結(jié)構(gòu)的實現(xiàn)(3)滿足條件需執(zhí)行一組語句時,該組語句

必須用{}括起來;如:if(a+b>c&&b+c>a&&a+c>b)

{s=0.5*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“area=%6.2f\n”,area);

}

elseprintf(“Itisnotatrilateral.”);精選ppt§3.3.3選擇結(jié)構(gòu)的實現(xiàn)(4)if語句嵌套時,else與if的匹配問題;例3-7:有一函數(shù):y=-1x<00x=01x>0請編程,輸入x的值,輸出相應(yīng)的y值。精選ppt§3.3.3選擇結(jié)構(gòu)的實現(xiàn)main(){floatx,y;scanf(“%f”,&x);

if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“x=%f,y=%f\n”,x,y);}

if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;y=0;

if(x>=0)if(x>0)y=1;elsey=-1;?y=0;

if(x>=0)if(x>0)y=1;else;elsey=-1;y=0;

if(x>=0){if(x>0)y=1;}elsey=-1;精選ppt(5)可利用條件表達(dá)來簡化程序設(shè)計。如對于:

if(exp!=0)

可用

if(exp)

來代替;§3.3.3選擇結(jié)構(gòu)的實現(xiàn)if(!exp)語句;等價于:if(exp==0)語句;精選ppt三、switch語句§3.3.3選擇結(jié)構(gòu)的實現(xiàn)語法1:switch(表達(dá)式)

{caseC1:S1;

caseC2:S2;

……

caseCn:Sn;

default:Sn+1;

}其中:表達(dá)式必須放在括號中;

C1至Cn

是情況常量;

default可缺省。精選ppt計算表達(dá)式e的值S1S2SnSn+1…C1C2Cndefault語義:§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt例: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”);}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)

返回精選ppt語法2:switch(表達(dá)式)

{

caseC1:S1;break;

caseC2:S2;break;

……

caseCn:Sn;break;

default:Sn+1;break;

}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選pptS1計算表達(dá)式e的值S2SnSn+1…C1C2Cndefault…§3.3.3選擇結(jié)構(gòu)的實現(xiàn)語義:精選ppt例: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”);break;}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt說明:(1)default可省略;(2)C1~Cn必須互不相同;(3)語法2中,C1~Cn無次序影響;(4)允許多個case共用一個執(zhí)行語句;如:§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選pptswitch(ch){case‘0’:case‘1’:case‘2’:case‘3’:case‘4’:case‘5’:case‘6’:case‘7’:case‘8’:case‘9’:digit++;break;case‘

‘:case‘\t’:case‘\n’:white++;break;default:character++;}§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt(5)break只能跳出一層,內(nèi)外層情況常量可相同;如:#include<stdio.h>main(){intx=1,y=0;switch(x){case1:switch(y){case0:printf("**1**\n");break;case1:printf("**2**\n");break;}case2:printf("**3**\n");}getch();}運行結(jié)果為:**1****3**§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt四、三目條件運算符1.條件運算符?:2.格式e1?e2:e33.語義:判e1的值,為1時計算e2,否則計

算e3;如:max=(a>b)?a:b等價于

if(a>b)max=a;

elsemax=b;§3.3.3選擇結(jié)構(gòu)的實現(xiàn)精選ppt4.說明:條件運算符的優(yōu)先級僅高于“,”與“=”;只有當(dāng)if語句的真假均只執(zhí)行一個賦值語句且是給同一變量賦值時,才能用條件表達(dá)式取代;如:if(a>b)max=a;

elsemax=b;條件表達(dá)式可使程序簡潔;

#§3.3.3選擇結(jié)構(gòu)的實現(xiàn)

返回精選ppt問題1:假如全班41人,欲從鍵盤上輸入每人的數(shù)學(xué)成績,然后計算出平均成績;問題2:編程計算n!。重復(fù)執(zhí)行一組語句是程序設(shè)計要求的基本功能之一。在C語言中可以用以下語句來實現(xiàn)循環(huán):(1)if和goto(2)while(3)do-while(4)for§3.4循環(huán)結(jié)構(gòu)程序設(shè)計精選ppt語法:while(exp)

循環(huán)體語句;語義:當(dāng)exp為真時,執(zhí)行循環(huán)體;為假時,

執(zhí)行循環(huán)語句的后續(xù)語句;如:用while語句構(gòu)成循環(huán),求:

sum=1+2+…+100§3.4.1while語句精選ppt§3.4.1while語句

i←1,sum=0當(dāng)i小于等于100sum=sum+ii=i+1輸出sum精選ppt§3.4.1while語句源程序:main(){inti=1,sum=0;

while(i<=100){sum+=i;i++;

}printf(“%d”,sum);}精選ppt§3.4.1while語句說明:⑴循環(huán)體可以用復(fù)合語句;⑵循環(huán)控制變量在while前應(yīng)賦初值,以確保循環(huán)的正常開始;精選ppt§3.4.1while語句⑶循環(huán)體內(nèi)應(yīng)改變循環(huán)控制變量的值,以確保循環(huán)正常結(jié)束;如:i=1;

while(i<=100)

sum=sum+1;(死循環(huán))精選ppt§3.4.1while語句⑷while的特點:先判斷后執(zhí)行循環(huán)體最少執(zhí)行次數(shù)為0;如:i=3;

while(i<3)

printf(“i=%d\n”,i);精選ppt語法:do

循環(huán)體語句;

while(exp);語義:當(dāng)exp為真時,執(zhí)行循環(huán)體;為假時,

執(zhí)行循環(huán)語句的后續(xù)語句;如:用do-while語句構(gòu)成循環(huán),求

sum=1+2+…+100§3.4.2do-while語句精選ppt§3.4.2do-while語句

i←1,sum=0sum=sum+i輸出sum當(dāng)i小于等于100i=i+1N-S圖:精選ppt§3.4.2do-while語句源程序:main(){inti=1,sum=0;

do{sum+=i;i++;

}while(i<=100);printf(“%d”,sum);}精選ppt§3.4.2do-while語句說明:(1)循環(huán)體可以用復(fù)合語句;(2)循環(huán)控制變量在do前必須賦初值;(3)循環(huán)體內(nèi)應(yīng)改變循環(huán)控制變量的值;精選ppt(4)do-while循環(huán)的特點先執(zhí)行后判斷循環(huán)體至少被執(zhí)行一次;

如:i=3;

do

{sum+=i;

i++;

}while(i>10);#§3.4.2do-while語句精選ppt語法:for(exp1;exp2;exp3)

循環(huán)體語句;語義:(1)計算exp1;(2)求exp2,為真時,執(zhí)行(3),否則結(jié)束循環(huán);(3)執(zhí)行循環(huán)體中的語句;(4)執(zhí)行exp3;(5)返回(2)。§3.4.3for語句精選ppt§3.4.3for語句程序:main(){inti,sum=0;

for(i=1;i<=100;i++)sum+=i;printf(“%d”,sum);}精選ppt§3.4.3for語句說明:(1)顯然for循環(huán)更簡潔,更靈活;(2)循環(huán)體可以是復(fù)合語句;(3)可同時對多個變量賦初值及修改。如:

for(i=0,j=1;j<n&&i<n;i++,j++)…(4)for語句可理解為:

for(循環(huán)變量賦初值;判斷條件;循環(huán)變量改變)

循環(huán)體;精選ppt(5)for語句中三個表達(dá)式可?。菏xp1;如:

i=1;for(;i<5;i++)

printf(“%d\n”,i);

等價于

for(i=1;i<5;i++)

printf(“%d\n”,i);§3.4.3for語句精選ppt

省exp3;如:for(i=1;i<5;)

{printf(“%d\n”,i);

i++;}等價于

for(i=1;i<5;i++)

printf(“%d\n”,i);

省exp2;如:

for(i=1;;i++)

{printf(“%d\n”,i);

if(i>5)break;

}§3.4.3for語句精選ppt

三個表達(dá)式全省時,如:for(;;)語句;等價于while(1)語句;(5)for語句中的循環(huán)體可以是空語句;如:

intn=0;

while(n++<=2);

printf(“%d”,n);

結(jié)果為:4§3.4.3for語句精選ppt三種循環(huán)可互相代替。while、do-while和for循環(huán)控制變量之初值;循環(huán)控制之條件;循環(huán)控制變量之修正。除goto循環(huán)外,都能用break跳出循環(huán),用continue結(jié)束本次循環(huán)。§3.4.4三種循環(huán)語句的選用精選ppt三種循環(huán)可以互相嵌套例:打印九九乘法表:§3.4.5循環(huán)結(jié)構(gòu)的嵌套1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=92*1=22*2=42*3=62*4=8……2*9=18……

……

……

……

……

……9*1=99*2=189*3=27……

……

……9*9=81

精選ppt

main(){inti,j;for(i=1;i<10;i++){for(j=1;j<10;j++)printf("%d*%d=%2d",i,j,i*j);printf("\n");}getch();}§3.4.5循環(huán)結(jié)構(gòu)的嵌套精選ppt§3.4.6break語句和continue語句一、break語句break只能用在循環(huán)語句、switch語句中功能:強行退出循環(huán)或switch語句。例:for(r=1;r<=10;r++)

{area=pi*r*r;

if(area>100)break;

printf(“%f”,area);

}精選ppt二、continue語句只能用在循環(huán)語句中功能:結(jié)束本次循環(huán)例:main()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)

continue;

printf(“%d”,n);

}

}§3.4.6break語句和continue語句

返回精選ppt3.5.1輸入輸出的概念3.5.2輸入輸出函數(shù)§3.5使用庫和函數(shù)精選ppt一、字符輸入函數(shù)getchar語法:getchar();語義:(從stdio上)輸入一個字符;getchar是一個無參函數(shù);getchar包含在stdio.h中如:

#include<stdio.h>

main()

{

putchar(getchar());

}§3.5.3字符輸入輸出函數(shù)精選ppt§3.5.3字符輸入輸出函數(shù)二、字符輸出函數(shù)putchar語法:putchar

(c);語義:(在stdout上)輸出一個字符;如:

#include<stdio.h>

main()

{putchar(‘\141’);

putchar(‘a(chǎn)’);

putchar(97);

}精選ppt如:#include<stdio.h>main(){charc;

while((c=getchar())!=‘#’)if(c>=‘a(chǎn)’&&c<=‘z’)putchar(c-’a’+’A’);elseputchar(c);

}§3.5.3字符輸入輸出函數(shù)精選ppt一、格式輸入函數(shù)scanf語法:scanf(格式控制,地址表列);格式控制:含三類符號空白字符:(空格、Tab或\t、\n),輸入時不必一一對應(yīng);普通字符:(非格式說明符、非空白符、非%),輸入時必須一一對應(yīng);格式轉(zhuǎn)換說明符:由%開始后跟:一約定的字母轉(zhuǎn)換指示符;一任選的用于指定輸入字段寬度的整數(shù)w?!?.5.4格式輸入輸出函數(shù)精選ppt§3.5.4格式輸入輸出函數(shù)格式控制字符輸出形式說明%d,%i帶符號的十進(jìn)制數(shù)%o,%u,%x無號符的八、十、十六進(jìn)制數(shù)%c,%s字符、字符串%f,%e小數(shù)、科學(xué)計數(shù)法形式的實數(shù)地址表列:由若干個地址組成,可以是變量的地址,也可以是字符串中的首地址等。精選ppt例1:#include<stdio.h>main(){inta;floatb;charstr[50];scanf(“%d%f%s”,&a,&b,str);

……}設(shè)輸入流數(shù)據(jù)流為:2554.32E-1Nanjing<enter>處理結(jié)果為:25→a5.432000→bNanjing→str§3.5.4格式輸入輸出函數(shù)精選ppt輸入項表的輸入對象須是地址量;如:

scanf(“%d,%d,%d”,&a,&b,&c);scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);§3.5.4格式輸入輸出函數(shù)123,456,789<enter>,則處理的結(jié)果為:123→a456→b789→c

如下的輸入是錯誤的:

123456789123#456#789a=123,b=456,c=789<enter>精選ppt§3.5.4格式輸入輸出函數(shù)一、格式輸出函數(shù)printf語法:printf(格式控制,輸出表列);語義:按格式控制將輸出表列中的數(shù)據(jù)依次

輸出至屏幕上。

格式控制普通字符和轉(zhuǎn)義字符(原樣輸出)格式說明:由%和格式控制符組成如:%d,%f,%c等;精選ppt§3.5.4格式輸入輸出函數(shù)如:printf(“a=%d,b=%d”,a,b);

若a、b的值分別為2和3,

則輸出結(jié)果為:

a=2,b=3精選ppt§3.5.4格式輸入輸出函數(shù)格式控制字符輸出形式說明%d,%i帶符號的十進(jìn)制數(shù)%o,%u,%x無號符的八、十、十六進(jìn)制數(shù)%c,%s字符、字符串%f,%e小數(shù)、科學(xué)計數(shù)法形式的實數(shù)格式修飾符-輸出的字符或數(shù)值在輸出域內(nèi)左靠齊格式修飾符m規(guī)定數(shù)據(jù)輸出的最小寬度格式修飾符.n對浮點數(shù)小數(shù)點后保留n位,對字符串,輸出前n個字符格式修飾符l輸出長整型數(shù),或雙精度型數(shù)如果要輸出單一的字符%,則需用%%精選ppt例1:#include<stdio.h>main(){inta=4096;longintb=123456;printf(“%5d\n%3d\n%ld\n%9ld\n”,a,a,b,b);}該程序運行的結(jié)果為:?40964096123456123456§3.5.4格式輸入輸出函數(shù)精選ppt例2:#include<stdio.h>main(){inta=-8;

printf(“deca=%d\nocta=%o\nhexa=%x\n”,a,a,a);}該程序運行的結(jié)果為:deca=-8octa=177770hexa=fff81111111111111000§3.5.4格式輸入輸出函數(shù)

返回精選ppt§3.6典型例題例3-26設(shè)計程序,判斷整數(shù)m是否為素數(shù)分析:m可以分解為m=m1*m2,m1和m2中必有一個小于或者等于m的算術(shù)平方根,可以用2~之間的整數(shù)一個個去除m,若都不能被m整除,則m為素數(shù),否則不是素數(shù)。main(){intm,i,k;scanf(“%d”,&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf(“%disaprimenumber\n”,m);elseprintf(“%disnotaprimenumber\n”,m);}精選ppt例3-27求100~200之間的所有素數(shù)main(){intm,i,k,n=0;for(m=101;m<=200;m=m+2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k){printf(“%d”,m);n=n+1;}if(n%5==0)printf(“\n”);}}精選ppt例3-28用公式:∏/4=1-1/3+1/5-1/7+...求∏的近似值,直到最后一項的絕對值小于10-6為止。分析:t表示項,n表示項中t的分母,s表示符號t=s/nmain(){ints;floatn,t,pi;t=1;pi=0;n=1.0;s=1;while(fabs(t)>1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf(“pi=%10.6f\n”,pi);}精選ppt第4章函數(shù)精選ppt基本知識講解§4.1概述§4.2帶自定義函數(shù)的程序設(shè)計§4.3變量的作用域和存儲類別§4.4典型例題

返回精選ppt§4.1概述C語言源程序可由一個主函數(shù)和若個輔助函數(shù)組成。由主函數(shù)調(diào)用其他函數(shù)。其他函數(shù)也可互相調(diào)用。mainabcdefghhieg精選ppt§4.1概述main(){printstar();

print_message();

printstar();}printstar(){printf(“**********\n”);}print_message(){printf(“Howdoyoudo!\n”);}精選ppt§4.1概述說明:1.一個源程序文件由一個或多個函數(shù)組成。一個源程序文件是一個編譯單位。2.C程序的執(zhí)行從main函數(shù)開始,在main函數(shù)中結(jié)束。3.所有函數(shù)都是平行的,即函數(shù)不能嵌套定義,函數(shù)可以互相調(diào)用,但不能調(diào)用main函數(shù)。4.從用戶使用的角度看,函數(shù)有兩種:

標(biāo)準(zhǔn)函數(shù)(庫函數(shù))和自定義函數(shù)5.從函數(shù)的形式看,函數(shù)分為兩類:

無參函數(shù)和有參函數(shù)#

返回精選ppt§4.1.1函數(shù)的定義一、無參函數(shù)的定義形式類型標(biāo)識符函數(shù)名()

{

函數(shù)體

}例:

printstar(){printf(“**********\n”);}精選ppt§4.1.1函數(shù)的定義二、有參函數(shù)定義的一般形式

類型標(biāo)識符函數(shù)名(形式參數(shù)表)

{

函數(shù)體

}精選ppt§4.1.1函數(shù)的定義例如:

intmax(intx,inty){intz;

z=x>y?x:y;return(z);}精選ppt§4.1.1函數(shù)的定義三、一個函數(shù)可以是空函數(shù)。

如:

dummy(){}

返回#精選ppt一、函數(shù)的返回1.被調(diào)用函數(shù)執(zhí)行到最后的“}”時,自動返回2.被調(diào)用函數(shù)執(zhí)行到return語句時返回§4.1.2函數(shù)的返回和返回值精選ppt二、函數(shù)的返回值1.return語句

return(表達(dá)式);或:return表達(dá)式;或:return;return語句的用途有二:(1)用于結(jié)束函數(shù)的執(zhí)行并返回到調(diào)用者;(2)用來向調(diào)用者傳遞一個返回值。

注意:該語句對非void函數(shù)適用?!?.1.2函數(shù)的返回和返回值精選ppt§4.1.3函數(shù)的聲明和調(diào)用要正確實現(xiàn)函數(shù)間的調(diào)用需滿足下列條件:必須給出滿足函數(shù)運行時要求的參數(shù);被調(diào)用函數(shù)必須存在;被調(diào)用函數(shù)必須允許調(diào)用。精選ppt例:{…………c=max(a,b);

…………}intmax(intx,inty){…………}一、函數(shù)調(diào)用形式函數(shù)名(實參表列);§4.1.3函數(shù)的聲明和調(diào)用精選ppt1.函數(shù)語句如:printf(“Oneworle”);2.函數(shù)表達(dá)式如:c=max(a,b);3.函數(shù)參數(shù)

如:m=max(a,max(b,c));printf(“%d”,max(a,b));§4.1.3函數(shù)的聲明和調(diào)用二、函數(shù)調(diào)用的方式精選pptmain(){floata,b,c;scanf(“%f,%f”,&a,&b);c=add(a,b);printf(“sumis%f”,c);}floatadd(floatx,floaty){floatz;z=x+y;returnz;}§4

溫馨提示

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

評論

0/150

提交評論