C語言簡明教程_第1頁
C語言簡明教程_第2頁
C語言簡明教程_第3頁
C語言簡明教程_第4頁
C語言簡明教程_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計2023/2/521.2

C語言的特點語言簡潔,表達能力強,易于理解只有32個關(guān)鍵字,9種控制語句32個關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile2023/2/539種控制語句:if()~else~for()~while()~do~while()continuebreakswitchgotoreturn2023/2/54運算符豐富34種運算符,運算能力強、效率高。算術(shù)運算符:+-*/%++--關(guān)系運算符:<<===>>=!=邏輯運算符:!&&||位運算符:<<>>~|^&賦值運算符:=及其擴展條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù):sizeof強制類型轉(zhuǎn)換:(類型)分量運算符:.->下標(biāo)運算符:[]其它:()-2023/2/55數(shù)據(jù)類型豐富C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef數(shù)值類型字符類型char枚舉類型enum整型浮點型單精度型float雙精度型double短整型short長整型long整型int數(shù)組結(jié)構(gòu)體struct共用體union2023/2/56例1.1編寫程序,在屏幕上打印字符串“ThisisaCprogram.\n”。main(){

printf("ThisisaCprogram.\n");}1.3簡單C程序介紹

2023/2/57例1.2/*求兩數(shù)之和*/

main() { inta,b,sum;/*定義變量*/

a=123; b=456; sum=a+b; printf(“Sumis%d\n”,sum); }

Sumis579

2023/2/58C程序結(jié)構(gòu)C程序由函數(shù)構(gòu)成必須有,且只能有一個main(主函數(shù))總是從main函數(shù)開始執(zhí)行函數(shù)由函數(shù)首部和函數(shù)體組成函數(shù)首部指定函數(shù)名、函數(shù)參數(shù)、類型函數(shù)體從{開始,到}結(jié)束函數(shù)內(nèi)有語句2023/2/59C程序結(jié)構(gòu)(續(xù))語句包括說明性語句、可執(zhí)行語句以;表示語句結(jié)束注釋可以出現(xiàn)在程序的任何位置

用/*和*/括起來,必須成對出現(xiàn)或者//

注釋想要注釋的語句,在本行結(jié)束

C程序設(shè)計

數(shù)據(jù)類型、運算符與表達式2023/2/5112.1數(shù)據(jù)類型2.2常量與變量2.3整型數(shù)據(jù)2.4實型數(shù)據(jù)2.5字符型數(shù)據(jù)2.6變量賦初值2.7混合運算2.8運算符與表達式

數(shù)據(jù)類型、運算符與表達式

CHAPTER22023/2/512數(shù)據(jù)類型、運算符與表達式

C的數(shù)據(jù)類型數(shù)組類型數(shù)據(jù)類型構(gòu)造類型空類型指針類型雙精度單精度實型(浮點型)字符型枚舉類型基本類型整型結(jié)構(gòu)體類型共用體類型2023/2/5133.2常量與變量

3.2.1常量和符號常量常量:在運行過程中,其值不能被改變的量稱為常量。

分類:整型﹑實型﹑字符﹑字符串符號常量,用一個標(biāo)識符代表的常量。

習(xí)慣上,符號常量名用大寫,變量用小寫,以示區(qū)別。-1,0,123為整型常量

4.6,-1.23為實型常量

‘a(chǎn)’,‘d’

為字符常量#definePRICE255A=PRICE*A+6C=PRICE+C/120PRICE是標(biāo)識符,符號常量2023/2/5143.2.2變量變量:在程序運行過程中,其值可以改變的量稱為變量。標(biāo)識符:用來標(biāo)識變量名、符號常量名、函數(shù)名、類型名、數(shù)組名、文件名的有效字符序列稱為標(biāo)識符。由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。3.C語言要求對變量“先定義,后使用”。2023/2/5153.3整型數(shù)據(jù)

3.3.1整型常量由一系列數(shù)字組成。也可帶有減號,但不使用加號。十進制整數(shù):123,-456,0八進制整數(shù):以0開頭的數(shù)據(jù),如:-011,0123十六進制整數(shù):以0x開頭的數(shù)據(jù),如:0x123整型常量的分類根據(jù)其值的范圍而決定其類型,并可以賦值給類型相匹配的整型變量。2023/2/5163.整型變量的定義對變量的定義一般放在函數(shù)的開頭部分。[例2.1]main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%d\n”,c,d);}a+u=22,b+u=-14不同類型的數(shù)可以直接運算2023/2/517main(){inta,b;

a=32767;b=a+1;printf(“%d,%d”,a,b);}運行結(jié)果為32767,-327682023/2/5183.5字符型數(shù)據(jù)3.5.1字符常量1.定義用一對單引號括起來的單個字符,稱為字符常量。例如,‘A’、‘1’、‘+’等。2023/2/5193.5.2字符型變量

字符變量的類型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。

1.變量值的存儲

將一個字符常量存儲到一個字符變量中,實際上是將該字符的ASCII碼值(無符號整數(shù))存儲到內(nèi)存單元中。例如:charch1,ch2; /*定義兩個字符變量:ch1,ch2*/ch1=’a’;ch2=’b’;/*給字符變量賦值*/’a’、’b’的ASCII碼為97、98。

2.特性1)字符數(shù)據(jù)在內(nèi)存中存儲的是字符的ASCII碼;2)C語言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用,可以互相賦值。3)字符數(shù)據(jù)也可以整數(shù)形式輸出。2023/2/520

[例1]字符變量的字符形式輸出和整數(shù)形式輸出。

main()

{charc1,c2;

c1='a';c2='b';printf(“c1=%c,c2=%c\n”,c1,c2);

printf(“c1=%d,c2=%d\n”,c1,c2);

}

程序運行結(jié)果:

c1=a,c2=b

c1=97,c2=982023/2/521

[例2]

大小寫字母的轉(zhuǎn)換。

main()

{charc1,c2;

c1='a';c2='b';c1=c1-32;c2=c2-32;printf(“%cc2=%c\n”,c1,c2);

}

程序運行結(jié)果:

AB

2023/2/5223.6變量賦初值在變量定義的同時可以為變量賦初值。如:inta=3;

(相當(dāng)于inta;a=3;)

floatf=3.56;

charc=‘a(chǎn)’;

inta,b,c=5;表示只給c賦初值。(相當(dāng)于inta,b,c;c=5;)2023/2/523練習(xí)main(){inti;floatx;x=3.6;i=(int)x;printf("x=%f,i=%d\n",x,i);}2023/2/524數(shù)據(jù)類型、運算符與表達式

運算符和表達式4.自增、自減運算符

使變量的值加1或減1。如:++i,--i在使用i之前,先使i的值加(減)1i++,i--

在使用i之后,再使i的值加(減)1例如:i的值為3,則j=++i;j的值為4,i的值為4j=i++;j的值為3,i的值為4又如:printf(“%d”,++i);輸出結(jié)果為4printf(“%d”,i++);輸出結(jié)果為3單獨使用時,i++,++i等價2023/2/525第二章2.3運算符和表達式結(jié)合性:自右向左例:i=2;j=-i++;分析:(1)++、--、+、-是同級運算符,結(jié)合方向:自右向左。(2)-i++等價于-(i++)(3)對于括號內(nèi)的自增運算,要先使用i,再使i增加1。運算結(jié)果:i的值為3,j的值為-2。2023/2/526練習(xí)a=1,b=2,c=3,d=4下列式子的值分別是多少?a*b/ca*b%c+1++a*b-c--2023/2/5273.9賦值運算符和賦值表達式

1.賦值運算符:“=”。2.復(fù)合賦值運算:在賦值符號前加上其它運算符號。

+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=例如:a+=3;等價于a=a+3;x*=y+8;等價于x=x*(y+8);x%=3;等價于x=x%3;2023/2/528練習(xí)inti=1,j=2,k=3,m=4;計算下列式子的值i+=j+kj*=k=m+5第4章最簡單的C程序設(shè)計

-順序程序設(shè)計2023/2/5301C語句概述2賦值語句3數(shù)據(jù)的輸入輸出4字符數(shù)據(jù)輸入輸出5格式輸入輸出7程序舉例

2023/2/5314.1C語句概述

用C語言編寫的程序稱為C語言源程序,簡稱C程序。

C語言一般由一個或若干個函數(shù)組成,而這些函數(shù)可以保存在一個或幾個源程序中,這些文件都以.C作為文件擴展名。[例]求園的面積#DEFINEPI=3.1415926main(){floatr,s;r=20;s=r*r*PI;printf(“area=%f”,s);}area=1256.637C程序源程序文件1源程序文件i源程序文件n……預(yù)編譯命令函數(shù)1函數(shù)n…變量申明部分執(zhí)行部分(語句)語句是計算機執(zhí)行的最小單位2023/2/532C語句分類C語句有以下五類:⑴控制語句,完成一定的控制功能;①if()~else~(條件語句)②for()~(循環(huán)語句)③while()~(循環(huán)語句)④do~while()(循環(huán)語句)⑤continue(結(jié)束本次循環(huán)語句)⑥break(中止執(zhí)行switch或循環(huán)語句)⑦Switch(多分支選擇語句)⑧goto(轉(zhuǎn)向語句)⑨return(從函數(shù)返回語句)2023/2/533⑵函數(shù)調(diào)用語句,由一次函數(shù)調(diào)用加一個分號構(gòu)成一個語句,

如:printf(“ThisisaCstatement.”);⑶表達式語句,由一個表達式構(gòu)成一個語句,

如:a=3(是表達式,不是語句)

a=3;(是語句)⑷空語句,只有一個分號,什么也不做;⑸復(fù)合語句,用{}把一些語句括起來成為復(fù)合語句。相當(dāng)一條語句,哪里有語句,哪里就可用復(fù)合語句。

if(a>b){max=a;min=b;}復(fù)合語句最后一個語句中最后的分號不能忽略不寫。2023/2/5344.2賦值語句賦值表達式后面加上分號,構(gòu)成賦值語句。功能:將數(shù)據(jù)賦給變量。

如:x=3.1;a=‘d’+123+b/d;程序中基本的命令行必須是一個語句,表達式不能單獨構(gòu)成語句。例如:‘d’+123+b/d是一個表達式a=‘d’+123+b/d;是一個賦值語句

特點:

①C語言中的賦值號“=”作為賦值運算符;

②作為賦值表達式可以被包括在其他表達式之中;

if((a=b)>0)t=a;

③賦值語句可以連接賦值;

a=b=c=2;2023/2/535[例]從鍵盤上輸入一個大寫字母,分別用大小寫字母形式輸出,同時輸出它們的ascii碼。#include“stdio.h”main(){charc1,c2;c1=getchar();printf(“%c,%d\n”,c1,c1);c2=c1+32;printf(“%c,%d\n”,c2,c2);}A↓A,65a,972023/2/5364.5格式輸入與輸出函數(shù)1.格式輸出函數(shù)printf()按規(guī)定格式向終端輸出若干個任意類型的數(shù)據(jù)。一般格式:printf(控制格式,輸出列表)被輸出的數(shù)據(jù),可以是常量、變量、表達式用雙引號括起的轉(zhuǎn)換控制字符串,它包括兩種信息:格式說明,由%開始。如:%d,%f,%c普通字符,要輸出的字符printf(“%d%d”,a,b)格式說明輸出列表printf(“a=%db=%d”,a,b);

控制格式輸出列表2023/2/537例1.

main()

{intx1=123;

longx2=123456;

printf("x1=%d,x1=%5d,x1=%-5d,x1=%2d\n",x1,x1,x1,x1);

printf("x2=%ld,x2=%8ld,x2=%5ld\n",x2,x2,x2);

}

程序運行結(jié)果如下:x1=123,x1=□□123,x1=123□□,x1=123x2=123456,x2=□□123456,x2=1234562023/2/538例2.main(){intm=-1;longn=123456789;printf(“m=%d,%o,%x,%u\n",m,m,m,m);printf("n=%d\n",n);printf("n=%ld\n",n);}程序輸出:1122a=11,b=22m=-1,177777,ffff,65535n=-13035n=1234567892023/2/539例3.main(){floatf=123.456;doubled1,d2;d1=1111111111111.111111111;d2=2222222222222.222222222;printf("%f,%12f,%12.2f,%-12.2f,%.2f\n",f,f,f,f,f);printf("d1+d2=%f\n",d1+d2);}

程序運行結(jié)果如下:123.456001,□□123.456001,□□□□□□123.46,123.46□□□□□□,123.46d1+d2=3333333333333.333010

第五章

選擇結(jié)構(gòu)程序設(shè)計2023/2/5415.1關(guān)系運算符和關(guān)系表達式1.關(guān)系運算符關(guān)系運算實際上是兩個量的比較,比較的結(jié)果只有兩種可能:真(1)、假(0)。例如:a>3?當(dāng)a=5時,比較的結(jié)果為真;當(dāng)a=1時,結(jié)果為假。

C語言提供6種關(guān)系運算符<(小于)<=(小于或等于)>(大于)>=(大于或等于)==相等!=不等2023/2/5422.關(guān)系表達式用關(guān)系運算符或者等式運算符將兩個表達式連接起來,叫關(guān)系表達式。合法的關(guān)系表達式:

a>b、a+b>b+c、(a=3)>(b=5)、(a==3)>(b==5)、‘a(chǎn)’<‘b’、(a>b)>(b<c)關(guān)系表達式的值是一個邏輯值,非真即假.

關(guān)系表達式5==3的值為假(在計算機中記為0);

5>=0的值為真(在計算機中記為1)。

例:a=3,b=2,c=1,

則:(1)a>b的值為1(2)(a>b)==c的值為真(即1)(3)b+c<a的值為0(4)d=a>b中d的值為a>b的值,為1。(5)f=a>b>c中f的值為1>c的值,為0。2023/2/543關(guān)系、等式和邏輯運算符關(guān)于優(yōu)先次序<,<=,>,>=為同一級別,==和!=為同一級別。在同一級別中,采取由左至右的結(jié)合方向。

算術(shù)運算符關(guān)系運算符賦值運算符高低[例]c>a+bc>(a+b)a>b!=c(a>b)!=ca==b<ca==(b<c)a=b>ca=(b>c)

等式運算符2023/2/5445.2邏輯運算符邏輯運算:產(chǎn)生真假值的運算。邏輯運算符:①

&&邏輯與(AND)②||

邏輯或(OR)③

!邏輯非(NOT)“&&”和“||”是雙目運算符?!?!”是一元運算符.

如:

a&&ba,b同時為真,則表達式為真a||ba,b只要有一個為真,表達式為真!aa為真,則表達式為假ab!a!ba&&ba||bTTFFTTTFFTFTFTTFFTFFTTFF2023/2/545關(guān)系、等式和邏輯運算符邏輯運算符的優(yōu)先級!&&||邏輯運算符“&&”和“||”低于關(guān)系運算符,“!”高于算術(shù)運算符

a>b&&x>y相當(dāng)于:(a>b)&&(x>y)a==b||x==y相當(dāng)于:(a==b)||(x==y)!a||a>b相當(dāng)于:(!a)||(a>b)!算術(shù)關(guān)系邏輯賦值2023/2/546邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量連接起來就是邏輯表達式。在C語言中,當(dāng)判斷一個量的真假時,一切非0數(shù)均被當(dāng)成‘真’來處理。

例如:若a=4,則!a的值為0若a=4,b=5,則a&&b的值為1

a||b的值為1

!a||b的值為14&&0||2的值為1區(qū)分下面的表達式中算術(shù)運算量,關(guān)系運算量和邏輯運算量:

5>3&&2||8<4-!0結(jié)果為1

5>3是兩個數(shù)值間的比較,結(jié)果為11&&2是兩個非0值(邏輯量)間的運算,結(jié)果為11||8<4-!0,根據(jù)優(yōu)先級,先計算!0,結(jié)果為12023/2/5475.3if語句if語句的三種形式if用來判斷給定的條件的真假,并決定執(zhí)行哪一種操作。1.if<表達式>語句條件滿足時執(zhí)行表達式后面的語句,然后繼續(xù)執(zhí)行以下的語句。條件不滿足時,越過if表達式后面的語句,往下執(zhí)行。表達式語句真(非0)假(0)例如:如果輸入的是正數(shù),則打印出來。if(x>0)printf("%d",x);2023/2/548選擇結(jié)構(gòu)程序設(shè)計

if語句if語句的三種形式2.if<表達式>語句1else語句2條件滿足時,執(zhí)行語句1,然后繼續(xù)執(zhí)行if以下的語句。條件不滿足時,執(zhí)行語句2,然后繼續(xù)執(zhí)行if以下的語句。表達式語句1語句2真假PYNAB例如:輸出兩個數(shù)中較大的一個。if(x>y)printf("%d",x);elseprintf("%d",y);2023/2/549選擇結(jié)構(gòu)程序設(shè)計

if語句if語句的第三種形式if<表達式1>語句1;

elseif<表達式2>語句2;elseif<表達式3>語句3;elseif<表達式4>語句4;else語句5

表達式1表達式2表達式3表達式4語句1語句2語句3語句4語句5假假假假真真真真2023/2/550選擇結(jié)構(gòu)程序設(shè)計

if語句例如:商場促銷,購物500元以上,8折;購物300元以上,85折;購物100元以上,9折;購物50元以上,95折;購物50元以下,不打折。根據(jù)消費量,計算優(yōu)惠率。

設(shè):消費量為money;折扣為cost;實際花費priceif(money>500)cost=0.2;elseif(money>300)cost=0.15;elseif(money>100)cost=0.1;elseif(money>50)cost=0.05;elsecost=0;price=money-(money*cost);2023/2/551選擇結(jié)構(gòu)程序設(shè)計

if語句If語句的嵌套嵌套的定義:在if語句中又包含一個或多個if語句。嵌套的一般形式:If()if()語句1else語句2Elseif()語句3else語句4(注意!!If與else的配對關(guān)系。)2023/2/552[例]比較兩個整數(shù)的關(guān)系。#include<stdio.h>main(){intx,y;printf("EnterintegerXandY:");scanf("%d%d",&x,&y);

if(x!=y)

if(x>y)printf("X>Y\n");

elseprintf("X<Y\n");

elseprintf("X=Y\n");}2023/2/553[例]輸入兩個數(shù),按數(shù)值大小次序排列輸出.main(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}

輸入為3.6,-3.2輸出為-3.20,3.602023/2/554[例]輸入三個數(shù),按由小到大次序排列并輸出。main(){flaota,b,c,t;scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f",a,b,c);}輸入為:3,7,1輸出為:1.00,3.00,7.002023/2/555選擇結(jié)構(gòu)程序設(shè)計

程序舉例[例]寫一程序判斷某一年是否是閏年.main(){intyear,leap;printf("輸入年份:");scanf("%d",&year);if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;if(leap)printf("%disleapyear\n",year);elseprintf("%disnotleapyear\n",year);}輸入年份:20042004isleapyear

2023/2/556選擇結(jié)構(gòu)程序設(shè)計

if語句條件運算符max=(a>b)?a:b;條件表達式當(dāng)(a>b)為真時,表達式取a的值當(dāng)(a>b)為假時,表達式取b的值條件運算符是三目運算符

表達式1?表達式2:表達式3條件運算符的結(jié)合方向為"從右向左"

例如:a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d)如果a=1,b=2,c=3,d=4,則條件表達式的值為4。2023/2/557選擇結(jié)構(gòu)程序設(shè)計

if語句main(){intx,y;scarf("%d",&x);if(x==0)y=0;elseif(x>0)y=1;elsey=-1;print("x=%d,y=%d\n",x,y);}[例]

-1(x<0)

y=0(x=0)1(x>0)開始輸出Y結(jié)束輸入XX<0X=0Y=-1Y=0Y=1YNYN輸入為:4輸出為:x=4,y=12023/2/558[例]輸入一個字符,判斷大小寫,如是大寫,則轉(zhuǎn)換成小寫,輸出。main(){charc;scanf("%c",&c);c=(c>='A'&&c<='Z')?(c+32):c;printf("%c",c)}選擇結(jié)構(gòu)程序設(shè)計

if語句2023/2/5595.4switch語句Switch語句是多分支選擇語句,也叫開關(guān)語句或者選擇語句。一般形式:

switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;

…………case常量表達式n:語句n;default:語句n+1;}功能:1.計算表達式的值,與常量表達式的值比較,等于第i個值時,順序執(zhí)行語句序列i、i+1、…、n+12.若與所有常量表達式值都不相等,執(zhí)行語句序列n+1。如:switch(a)

{case5:printf("&");break;case2:printf("#");break;default:printf("$");break;}如:switch(a)

{case5:printf("&");case2:printf("#");default:printf("$");}2023/2/560選擇結(jié)構(gòu)程序設(shè)計

switch語句[例]根據(jù)成績等級打出成績范圍.main(){chargrade;printf("Enteryourgrade\n");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");}}輸入為B輸出為70~842023/2/561例:給出百分制成績,要求輸出等級'A','B','C','D','E'。90分以上為'A',80—89分為'B',70—79分為'C',60—69分為'D',60分以下為'E'。main(){intscore,num;chargrade;scanf("%d",&score);

num=score/10;switch(num){case10:grade='A';

break;case9:grade='A';break;case8:grade='B':break;case7:grade='C';break;case6:grade='D';break;default:grade='E';}printf("%d%c",score,grade);}輸入為76輸出為76C2023/2/562選擇結(jié)構(gòu)程序設(shè)計

switch語句switch語句的說明條件表達式的類型和常量表達式的類型是整數(shù)、字符。當(dāng)表達式的值與某一個case后面的常量表達式的值相等時,就執(zhí)行此case

后面的語句,若所有的

case

中的常量表達式的值都沒有與表達式的值匹配,則執(zhí)行default

后面的語句。每一個case

的常量表達式的值必須互不相同。case常量表達式只起語句標(biāo)號作用;必須用break語句終止多個case連續(xù)執(zhí)行,否則只要有一個case滿足后,以下的語句全部無條件執(zhí)行。多個case可共用一組執(zhí)行語句。2023/2/5631概述2goto語句3while語句4do-while語句5for語句6循環(huán)的嵌套7break語句和continue語句8程序舉例

循環(huán)控制

2023/2/5646.1概述一般需要使用循環(huán)的情況是:有重復(fù)的動作(循環(huán)體)循環(huán)次數(shù)可以控制(循環(huán)條件)例如:1+2+3+….+100在C語言中可以用下列語句實現(xiàn)循環(huán):

goto

和if

結(jié)合

while

do-while

for2023/2/5656.2goto語句Goto語句的一般形式:goto

語句標(biāo)號;

……語句標(biāo)號:語句;

功能:無條件轉(zhuǎn)向語句。Goto語句的常用形式:1.與if語句構(gòu)成循環(huán);

2.從循環(huán)體中轉(zhuǎn)到循環(huán)體外。例:求1+2+3+…+100。main(){inti,sum=0;i=1;loop:if(i<=100){sum=sum+i;i++;gotoloop;}printf(“%d\n”,sum);}2023/2/5666.3while語句一般形式:While(表達式)語句功能:實現(xiàn)“當(dāng)型"循環(huán),"先判斷,后執(zhí)行"。表達式為真時(非0值),執(zhí)行while語句的內(nèi)嵌語句。說明:①<表達式>可以是關(guān)系表達式、邏輯表達式或其它類型,表達式后不允許有分號結(jié)尾;②語句可以是簡單的,也可以是復(fù)合的;③循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。表達式語句0非02023/2/567[例]求1+2+3+….+100。

main(){inti=1,sum=0;

while(i<=100)

{sum=sum+i;//累加器i++;}printf("%d",sum);}i=1,sum=0

i<=100

sum=sum+i

i=i+1輸出sum如果有一個以上的語句循環(huán),則必須用{}構(gòu)成復(fù)合語句。要有修改循環(huán)變量的語句。2023/2/568

6.4do-while語句一般形式:do

循環(huán)語句while(表達式);功能:實現(xiàn)“當(dāng)型"循環(huán)結(jié)構(gòu)。說明:①當(dāng)while后面的表達式的第一次的值為"真"時,兩種循環(huán)得到的結(jié)果相同。否則,二者結(jié)果不相同。②dowhile中的循環(huán)體至少執(zhí)行一次,而while語句中的循環(huán)語句可能一次都不執(zhí)行。表達式語句非0(真)0(假)2023/2/569[例]求1+2+3+….+100。

main(){inti,sum=0;i=1;do{sum=sum+i;i++;}while(i<=100);printf("%d",sum);}i=1,sum=0直到i>100

sum=sum+i

i++輸出sum2023/2/5706.5for語句在C語言中用for語句構(gòu)成的循環(huán)最為靈活。一般形式:for(表達式1;表達式2;表達式3)語句執(zhí)行過程:

例:for(i=1;i<=100;i++)sum=sum+i;從圖中可以看出FOR語句等價于下列程序:表達式1;While(表達式2){語句表達式3;}求解表達式1表達式2語句求解表達式3For語句的下一語句假真2023/2/571說明:①語句的一般形式中的"表達式1"可以省略,此時應(yīng)在語句之前給循環(huán)變量賦初值(注意!省略表達式1時,其后的分號不能省略);如:for(;i<=100;i++)sum=sum+i;②如果表達式2省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去;如:for(i=1;;i++)sum=sum+1;③表達式3也可以省略,但此時應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束;如:for(i=1;i<=100;){sum=sum+i;i++}④可以省略表達式1和表達式3,只有表達式2,即只給循環(huán)條件;

如:for(;i<=100;)

{sum=sum+i;i++}⑤for(;;)表示無限循環(huán),相當(dāng)于while(1)語句;2023/2/572循環(huán)控制

for語句說明:循環(huán)終止條件的種類:(邏輯)關(guān)系表達式:如:for(;a>b&&x<y;)如:for(;(c=getchar())!='\n';)printf("%c",c);由以上說明可以看出,C語言中for語句的功能比其它語言中的for語句功能要強、要靈活,它能替代while語句。[例]求n!=1×2×3×…nmain(){doubles=1;intk;for(k=1;k<=100;k++)s=s*k;printf("s=%f",s);}整數(shù)連乘結(jié)果一定是整數(shù),而本例中結(jié)果數(shù)值相當(dāng)大,用long型都無法存放,因此將存放累乘結(jié)果的變量s定義為double型。2023/2/574

6.6循環(huán)的嵌套嵌套的概念:一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。⑴while(){…while(){…}}(2)for(;;){for(;;){…}}(3)for(;;){…while(){}…}2023/2/575break語句用來從循環(huán)體里退出,中止循環(huán)Continue語句用來跳過剩下的語句,回到循環(huán)開始表達式1表達式2循環(huán)的下一個語句語句語句breaknyyn表達式1表達式2循環(huán)的下一個語句語句語句continuenyyn6.7break語句和continue語句2023/2/576[例]把100…200之間不能被3整除的數(shù)輸出。

main(){intn;for(n=100;n<=200;n++){if(n%3==0)continue;printf("%d",n);}}2023/2/577[例]判斷m是否是素數(shù)。操作:用2~m-1依次去除m,若其中有任意一個數(shù)被除盡,則沒有必要再判斷下去,它肯定不是素數(shù),跳出循環(huán);若所有數(shù)都不能被除盡,則循環(huán)可以自然完成。#include"math.h"main(){intm,i,k;scanf("%d",&m);k=m-1;for(i=2;i<=k;i++)if((m%i)==0)break;if(i>k+1)printf("%disprimenumber\n",m);elseprintf("%disnotaprime\n",m);}或一個數(shù)x在[2,sqrt(x)]范圍內(nèi)沒有因子,我們就稱其為素數(shù)(質(zhì)數(shù))。k=sqrt(m);2023/2/578[例]打印出100到200之間所有的素數(shù)。

#include"math.h"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\n",m);n=n+1;}if(n%10==0)printf(“\n”);}printf(“\n”);}2023/2/579[例]用/41-1/3+1/5-1/7+…的公式求的近似值,直到最后一項的絕對值小于10-6為止。

#include"math.h"main(){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);}t=1,pi=0,n=1,s=1當(dāng)|t|10-6pi=pi+tn=n+2s=-s;t=s/npi=pi*4輸出pi2023/2/580循環(huán)控制

本章總結(jié)三種循環(huán)語句:while,do---while和for建立循環(huán)通常有以下情況:1.給定次數(shù),for比較適用for(i=1;i<100;i++)2.給定條件,while比較適用while((x+y)<z)3.字符的情況通常以回車做結(jié)束符

while((c=getchar())!='\n')4.判斷字符范圍是否為英文字母

(c>'a'&&c<'z')||(c>'A'&&c<'Z')2023/2/581【例】編程序,輸出以下圖形。

****************一共有4行,每行由空格和星號組成:空格數(shù)按行增加,星號按行減少變量

i

控制輸出行數(shù),從1變化到4變量j控制輸出每行的空格和星號:j從1變化到

i,每次輸出一個空格j從1變化到8-2*i+1,每次輸出一個星號思路:2023/2/582總結(jié)for(…;…;…)while(){}do{}while()…continuebreakgoto2023/2/5837.1一維數(shù)組的定義和引用6.3字符數(shù)組

第七章數(shù)組2023/2/584

在c語言中,除了前面介紹的基本類型之外,還有另外一些數(shù)據(jù)類型---構(gòu)造類型。其中數(shù)組就屬于構(gòu)造類型中的一種。 數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的每一個元素都屬于同一個數(shù)據(jù)類型。用一個統(tǒng)一的數(shù)組名和下標(biāo)來唯一的確定數(shù)組中的元素。7.1一維數(shù)組的定義和引用一、定義一般形式:類型說明符數(shù)組名[常量表達式];

例如:inta[10];a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]

1204609398011502023/2/585二、一維數(shù)組元素的引用數(shù)組元素的引用形式:數(shù)組名[下標(biāo)]

每次可引用一個數(shù)組元素,不能引用整個數(shù)組一個數(shù)組元素就如同一個簡單變量[例]main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf("%d",a[i]);}

98765432102023/2/586數(shù)組

一維數(shù)組的定義和引用一維數(shù)組的初始化初始化方法:從數(shù)組的第一個元素開始依次給出初始值表;表中各值之間用逗號分開,并用一對大括號括起來。在定義數(shù)組時對數(shù)組元素賦予初值inta[10]={0,1,2,3,4,5,6,7,8,9};

只給一部分元素賦初值inta[10]={0,1,2,3,4};

欲使一個數(shù)組中全部元素初值為0,可以寫成

inta[10]={0,0,0,0,0,0,0,0,0,0,};或inta[10]={0};

在對全部數(shù)組元素賦初值時,可以不指定數(shù)組長度inta[]={0,1,2,3,4,5};2023/2/587數(shù)組

一維數(shù)組的定義和引用[例]求Fibonacci數(shù)列{1,1,2,3,5,8,13,21,...}main(){intf[20]={1,1};inti;for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];for(i=0;i<20;i++){if(i%5==0)printf("\n");printf("%12d",f[i]);}}2023/2/588[例]用冒泡法對10個數(shù)排序。第1次,a[0]和a[1]比較9854206137}

8954206137

8594206137

8549206137

85429

06137

8542096137

8542069

137

85420619

37

8542061397

8542061379第2次,a[1]和a[2]比較第i次,a[i]和a[i+1]比較{9895949297for(i=0;i<9;i++)for(j=0;j<9-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}2023/2/589main(){inta[11]inti,j,t;printf(“input10number:\n);for(i=1;i<11;i++)scanf(“%d”,&a[i]);//從鍵盤給數(shù)組元素賦值printf(“\n”);for(j=1;j<=9;j++)//排序for(i=1;i<=10-i;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}for(i=1;i<11;i++)//輸出數(shù)組元素printf("%3d",a[i]);}2023/2/590數(shù)組

二維數(shù)組的定義和引用[例]求出3*4矩陣中的最大值及其所在的行列號。分析:

1.設(shè)一個變量存放最大值max;2.設(shè)兩個變量row和column存放最大值在數(shù)組中的行列;3.遍歷數(shù)組中的每一個元素。

max=a[0][0]

forj=0to3a[i][j]>maxynmax=a[i][j]row=icolumn=j輸出max,row,columnfori=0to22023/2/591main(){inti,j,row,column,max;inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i;column=j;}printf(“max=%d,row=%d,colum=%d\n",max,row,column);}2023/2/592二、字符數(shù)組的初始化1.逐個元素初始化。

例如:charc[10]={'c','h','a','r'};2.說明:如果初值個數(shù)>數(shù)組長度,則作語法錯誤處理;如果初值個數(shù)<數(shù)組長度,則只將這些字符賦給數(shù)組中前面那些元素,其余元素自動定為空字符(即’\0’);如果初值個數(shù)=數(shù)組長度,則在定義時可省略數(shù)組長度。3.用字符串來初始化字符數(shù)組

chara[11]=”Iamaboy”;

char'\0''\0''\0''\0''\0''\0'2023/2/593例:輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。程序如下:#include<stdio.h>main(){charstring[81];inti,num=0,word=0;charc;gets(string);for(i=0;(c=string[i])!=‘\0’;i++)if(c==‘‘)word=0;elseif(word==0){word=1;num++;}printf(“thereare%dwordsintheline.\n”,num);}運行如下:Iamaboy.thereare4wordsintheline.解題思路:單詞的數(shù)目由空格出現(xiàn)的次數(shù)決定。若測出某一個字符為非空格,而它的前面的字符是空格,則表示“新的單詞出現(xiàn)了”,此時使num累加1.2023/2/594第八章函數(shù)

8.1概述模塊化程序設(shè)計:基本思想:將一個大的程序按功能分割成一些小模塊特點:各模塊相對獨立、功能單一、結(jié)構(gòu)清晰、接口簡單控制了程序設(shè)計的復(fù)雜性提高元件的可靠性縮短開發(fā)周期避免程序開發(fā)的重復(fù)勞動易于維護和功能擴充開發(fā)方法:自頂向下,逐步分解,分而治之2023/2/595例:打印圖形:******************

Howdoyoudo!************************************編程:

main(){printf("******************\n");printf("Howdoyoudo!\n");printf("******************\n");printf("******************\n");}三個語句一樣,可編寫成函數(shù):

printstar(){printf("******************\n");}則原程序可簡化為:main(){printstar();printf("Howdoyoudo!\n"):printstar():

printstar();

}2023/2/596函數(shù)分類從用戶角度標(biāo)準(zhǔn)函數(shù)(庫函數(shù)):由系統(tǒng)提供用戶自定義函數(shù)從函數(shù)形式無參函數(shù)有參函數(shù)2023/2/597函數(shù)的定義形式函數(shù)類型函數(shù)名(形式參數(shù)表){說明部分語句}

8.2函數(shù)的一般形式intmax(intx,inty)/*形式參數(shù)說明*/{intz;/*函數(shù)體內(nèi)部說明*/

z=x>y?x:y;return(z);/*返回值*/}2023/2/5988.3函數(shù)的參數(shù)和函數(shù)的值一、形式參數(shù)和實際參數(shù)在函數(shù)定義時指定的參數(shù)為形式參數(shù)(形參);在函數(shù)調(diào)用時給出的參數(shù)叫實際參數(shù)(實參)。main(){inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}max(intx,inty){intz;z=x>y?x:y;return(z);}2023/2/599說明:實參必須有確定的值形參與實參類型一致,個數(shù)相同參數(shù)傳遞方式為值傳遞方式:函數(shù)調(diào)用時,為形參分配單元,并將實參的值復(fù)制到形參中;調(diào)用結(jié)束,形參單元被釋放,實參單元仍保留并維持原值。特點:形參與實參占用不同的內(nèi)存單元;單向值傳遞。2023/2/5100[例]main(){inta,b;a=2;b=3;printf("%d%d",a,b);change(a,b);printf("%d%d",a,b);}change(inta,intb){a=10;b=20;printf("%d%d",a,b);}

2310202323ab32ab1020main空間change空間2023/2/5101二、函數(shù)的返回值形式:return(表達式);

return表達式;

功能:使程序控制從被調(diào)用函數(shù)返回到調(diào)用函數(shù)中,同時把返回值帶給調(diào)用函數(shù)說明:函數(shù)中可有多個return語句若無return語句,遇

}

時,自動返回調(diào)用函數(shù)若函數(shù)類型與return語句中表達式值的類型不一致,按前者為準(zhǔn),自動轉(zhuǎn)換----函數(shù)調(diào)用轉(zhuǎn)換void型函數(shù)用來明確表明函數(shù)不帶回任何值例無返回值函數(shù)voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}2023/2/5102說明:函數(shù)類型決定返回值類型;[例]main(){floata,b,c;scanf("%f,%f",&a,&b);c=max(a,b);printf("Maxis%f",c);}max(floatx,floaty){floatz;

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論