C語言程序設(shè)計教程(第2版)-課件 第3章 順序程序設(shè)計_第1頁
C語言程序設(shè)計教程(第2版)-課件 第3章 順序程序設(shè)計_第2頁
C語言程序設(shè)計教程(第2版)-課件 第3章 順序程序設(shè)計_第3頁
C語言程序設(shè)計教程(第2版)-課件 第3章 順序程序設(shè)計_第4頁
C語言程序設(shè)計教程(第2版)-課件 第3章 順序程序設(shè)計_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章最簡單的C程序設(shè)計順序程序設(shè)計內(nèi)容提要:C語句概述

基本的數(shù)據(jù)輸入/輸出函數(shù)簡單的C程序設(shè)計著名計算機科學(xué)家沃思提出:數(shù)據(jù)結(jié)構(gòu)+算法=程序描述數(shù)據(jù)的類型、組織形式描述對數(shù)據(jù)的操作步驟3.1算法的概念

做事情都有---方法、步驟(順序)---決定事情成敗1、算法:計算機求解某一問題而采用的具體方法、步驟2、兩大類計算機算法:數(shù)值運算算法、非數(shù)值運算算法(求數(shù)值解、成熟)(事務(wù)管理、廣泛)3、算法的特性:有窮性、確定性、有效性等4、算法描述:描述算法的方法有多種歸納為二大類:①文字②圖形(符號)3.2算法的描述方法常用的算法描述方法:(1)帶序號的自然語言描述易懂卻不直觀,不嚴(yán)格(2)流程圖:靈活、自由、形象、直觀,可表示任何算法輸入/輸出處理判斷起止連接點流程線(3)N-S圖(盒圖):完全去掉了帶箭頭的流程線,算法的所有處理步驟都寫在一個大矩形框(表示簡單、符合結(jié)構(gòu)化思想)(4)偽代碼:用介于自然語言與計算機語言之間的文字及符號來描述算法(方便、易懂、便于向計算機語言過渡)例1:計算S=,寫出其算法。自然語言描述:流程圖描述:N-S圖描述:偽代碼描述:3.3結(jié)構(gòu)化程序設(shè)計方法一、結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)

1966年提出三種基本結(jié)構(gòu),用這三種基本結(jié)構(gòu)作為表示一種良好算法的基本單元:順序、選擇、循環(huán)任何復(fù)雜的算法都是由這三種基本結(jié)構(gòu)按一定規(guī)律組成。(1)順序結(jié)構(gòu)ABABa=3;b=4;c=a+b;操作步驟按書寫順序執(zhí)行(2)選擇結(jié)構(gòu)PABTFABTFPif(x!=0)y=sin(x)/x;elsey=1;

(3)循環(huán)結(jié)構(gòu)根據(jù)條件P決定是否重復(fù)執(zhí)行循環(huán)體中的操作。sum=0;i=1;while(i<=100){sum+=i;i++;}sum=0;i=1;do{sum+=i;i++;}while(i<=100);二、三種基本結(jié)構(gòu)的共同特點

(1)單入口單出口(2)結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行(3)不存在“死循環(huán)”三、結(jié)構(gòu)化程序設(shè)計的優(yōu)點用三種基本結(jié)構(gòu)組成的程序是結(jié)構(gòu)化程序優(yōu)點:易編、易讀、易懂、易維護(hù)強調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化核心思想:自頂向下、逐步細(xì)化,模塊化設(shè)計,結(jié)構(gòu)化編碼舉例:張丘建《算經(jīng)》中提出“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、母、雛各幾何?(體會編程步驟)分析:cocks+hens+chicks=1005*cocks+3*hens+chicks/3=100

其中:0≤cocks≤190≤hens≤330≤chicks≤100

思路:依次取cocks的值域中的值,然后求其余兩數(shù),看是否合乎題意算法描述:cocks=0當(dāng)cocks≤19時

{找滿足題意hens,chicks數(shù)

cocks加1}cocks=0當(dāng)cocks≤19時{hens=0

當(dāng)hens≤33時

{chicks=100-cocks-hens

如果(5*cocks+3*hens+chicks/3=100)則輸出hens加1}cocks加1}cocks=0

當(dāng)cocks≤19時

{hens=0

當(dāng)hens≤33時

{找滿足題意的chicks數(shù)

hens加1}cocks加1}細(xì)化細(xì)化用計算機語言寫出程序

intmain(){intcocks=0,hens,chicks;while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5.0*cocks+3.0*hens+chicks/3.0==100)printf(“%d%d%d\n”,cocks,hens,chicks);hens++;}cocks++;}}025752077187813801181683124843.4C語句的概述一、語句用來對數(shù)據(jù)進(jìn)行加工(完成操作任務(wù)),是構(gòu)成程序的基本單位,通常一個C程序由若干個函數(shù)(系統(tǒng)、用戶提供)組成。每一函數(shù)由若干條語句組成。每條語句總是以“;”結(jié)束。二、C語句的分類(簡單語句、復(fù)合語句、空語句)(一)簡單語句1)表達(dá)式語句:由一個表達(dá)式后跟“;”組成如:a=3(賦值表達(dá)式)a=3;(賦值語句)i++i++;2)函數(shù)調(diào)用語句:函數(shù)調(diào)用表達(dá)式加一個“;”如:printf(“Hello,world!\n”);3)結(jié)構(gòu)控制語句:控制程序流程選擇語句:if…else…switch

循環(huán)語句:forwhiledo…while…

轉(zhuǎn)向語句:continuebreakreturngoto(二)復(fù)合語句:將一組語句括在一對{}中如:while(i<100){sum+=i;i++;}

說明:

1)復(fù)合語句的{}之后不能有“;”

2)復(fù)合語句中可以是簡單語句、復(fù)合語句、空語句(三)空語句:;/*僅有一個;*/

空語句什么也不做。有時用作被轉(zhuǎn)向點,或為循環(huán)語句提供空體。如:for(i=0;i<=10;i++);3.5字符數(shù)據(jù)的輸入輸出引言:C語言沒有輸入/輸出語句,I/O操作通過調(diào)用系統(tǒng)函數(shù)實現(xiàn)。在程序開頭要有:#include“stdio.h”

或#include<stdio.h>默認(rèn)的輸入設(shè)備——鍵盤默認(rèn)的輸出設(shè)備——顯示器一、字符輸出函數(shù)putchar()形式:putchar(c)作用:向顯示器上輸出一個字符(將c的值輸出到顯示器上,c可以是字符型和整型的常量、變量、表達(dá)式)#include<stdio.h>intmain(){charc1,c2;c1=‘b’;c2=98;putchar(c1);putchar(c2);putchar(‘b’);putchar(98);}#include<stdio.h>intmain(){putchar(‘\101’);putchar(‘\n’);putchar(‘\\’);}二、字符輸入函數(shù)getchar()形式:getchar()作用:從鍵盤緩沖區(qū)讀入一個字符注意:1)當(dāng)輸入多個字符時,多余字符作廢

(按回車后才開始接收字符)例:#include<stdio.h>intmain(){intc;printf(“Enteracharacter:”);c=getchar();printf(“%c:%d\n”,c,c);}Enteracharacter:aa:972)用getchar()得到的字符可以賦給字符型變量、整型變量,或作為表達(dá)式的一部分。如:c=getchar()+32;putchar(c);

若輸入是:A

則輸出是:a例:#include<stdio.h>intmain(){putchar(getchar());}aa3.6格式輸入輸出一、格式輸出函數(shù)printf作用:向終端輸出若干個類型任意的數(shù)據(jù)。形式:printf(格式控制符,輸出項列表)雙引號括起來的字符串要輸出的內(nèi)容(常量、變量、表達(dá)式等)格式控制字符串:

i=%3df=%5.1f%5.1f引導(dǎo)符寬度小數(shù)位數(shù)精度類型符#include<stdio.h>intmain(){inti=5;floatf=32.345;printf(“i=%3df=%5.1f\n”,i,f);printf(“End.\n”);}i=5f=32.3End.格式控制符完整的格式:

%-Om.nl/h格式字符說明:1、格式字符:指定輸出項的數(shù)據(jù)類型和輸出的格式

1)d——十進(jìn)制整數(shù)

2)o——無符號八進(jìn)制數(shù)

3)x——無符號十六進(jìn)制數(shù)

4)u——不帶符號的十進(jìn)制整數(shù)#include<stdio.h>intmain(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}a=-1,177777,ffff,65535b=-2,177776,fffe,65534有符號的整型數(shù)b可以用%u輸出無符號的整型數(shù)a可以用%d輸出5)c輸出一字符6)s輸出一字符串7)e以指數(shù)的形式輸出實型數(shù)8)f以小數(shù)的形式輸出實型數(shù)9)%輸出%#include<stdio.h>intmain(){floatt;charb=‘a(chǎn)’;inti=97;t=28.333;printf(“%f\n”,t);printf(“%c,%d\n”,b,b);printf(“%c,%d\n”,i,i);printf(“%s,%%\n”,“china”);}28.333000a,97a,97china,%

%-Om.nl/h格式字符2、長度修正符

l:對整型指長整型long

例:%ld,%lx,%lo,%lu

對實型指雙精度double

例:%lf3、域?qū)捈熬鹊拿枋?/p>

m:域?qū)?,即對?yīng)的輸出項在輸出設(shè)備上所占的字符數(shù)若實際數(shù)據(jù)寬度>m,按實際數(shù)據(jù)寬度輸出若實際數(shù)據(jù)寬度<m,左邊補空

n:精度,說明輸出的實型數(shù)的小數(shù)位數(shù)幾點說明:編譯程序只是檢查printf函數(shù)的調(diào)用形式,不分析格式控制字符串,如果格式字符與輸出項的類型不匹配,不進(jìn)行類型轉(zhuǎn)換;格式字符要用小寫字母;格式控制字符串中可以包含轉(zhuǎn)義字符;格式控制字符串中的普通字符則原樣輸出;輸出項的參數(shù)除了常數(shù)、變量外還可以是表達(dá)式、函數(shù)調(diào)用如:printf(“max=%d\ti=%d\n”,imax(a,b),i++);#include<stdio.h>intmain(){inti=321;floatf=123.456;printf(“%5d:”,i);

printf(“%5.2f\n”,i);

printf(“%5d:”,f);printf(“%5.2f\n”,f);}321:403022178.210:123.463.6格式輸入輸出二、格式輸入函數(shù)scanf作用:按格式控制符的要求將數(shù)據(jù)從終端傳送到變量地址所指定的內(nèi)存空間形式:scanf(格式控制符,變量地址列表)1、變量地址:通過對變量名“求地址”運算得到形式:&變量名#include<stdio.h>intmain(){inta;floatb;scanf(“%d%f”,&a,&b);printf(“%d,%f\n”,a,b);}

&a得到2字節(jié)空間的首地址&b得到4字節(jié)空間的首地址2、格式控制符(1)格式說明項例:#include<stdio.h>intmain(){inta,b,c,d;scanf(“%d%d”,&a,&b);printf(“%d,%d\n”,a,b);scanf(“%3d%3d”,&c,&d);printf(“%d,%d\n”,c,d);}123412,34111222111,222(2)輸入數(shù)據(jù)的分隔采用隱含的分隔符:空格、回車鍵、Tab鍵例:#include<stdio.h>intmain(){inta;floatb,c;printf(“inputa,b,c:”);scanf(“%d%f%f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}inputa,b,c:1234a=12,b=3.000000,c=4.000000根據(jù)格式中指定的域?qū)挿指魯?shù)據(jù)項(不提倡)采用用戶指定的分隔符例:#include<stdio.h>intmain(){inta;floatb,c;scanf(“%2d%3f%2f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}scanf(“%d,%f,%f”,&a,&b,&c);12,3,4a=12,b=3.000000,c=4.000000scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);a=12,b=3,c=4a=12,b=3.000000,c=4.000000注意:scanf中對unsigned型數(shù)據(jù)用u,o,x說明符輸入輸入數(shù)據(jù)時不能規(guī)定數(shù)據(jù)的精度如:scanf(“%4.2f”,&a);在“格式控制”字符串中,若有格式說明以外的其他字符,輸入時應(yīng)照原樣輸入如:scanf(“a=%d,b=%f”,&a,&b);

輸入:a=123,b=45.678%c一次接收一個字符,無需單引號,空格字符是有效字符。思考:scanf(“Enteranumber?%d”,&n);的輸入格式?3.7程序舉例例:輸入一個小寫字母,打印該字母及其大寫字母,以及它們的后續(xù)字母分析:大寫字母的ASCII碼比對應(yīng)的小寫字母小32

后續(xù)字母的ASCII碼比該字母大1。#include<stdio.h>intmain(){charc;printf(“請輸入任意一個小寫字符:”);

c=getchar();printf(“%c,%c\n”,c,c+1);printf(“%c,%c\n”,c-32,c-31);}請輸入任意一個小寫字符:xx,yX,Y能否通過其他方法輸入、輸出?#include<stdio.h>intmain(){charc;printf(“請輸入任意一個小寫字符:”);

c=getchar();printf(“%c,%c\n”,c,c+1);printf(“%c,%c\n”,c-32,c-31);}可用putchar函數(shù)代替:putchar(c);putchar(c+1);若輸入一個非字母字符,輸出怎樣?例:求ax2+bx+c=0方程的根。a,b,c由鍵盤輸入,設(shè)b2-4ac>0。I處理O#include<stdio.h>

#include<math.h>

intmain()

{floata,b,c,disc,x1,x2,p,q;

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

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

p=-b/(2*a);

q=sqrt(disc)/(2*a);

x1=p+q;x2=p-q;

printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);

}運行情況:

a=1,b=3,c=2↙

x1=-1.00

x2=-2.00習(xí)題3-6#definePI3.14#include<stdio.h>intmain(){inth; floatr,l,s,s1,v1,v2; printf("請輸入圓半徑和圓柱高:\n"); scanf("%f,%d",&r,&h); l=2*PI*r; s=PI*r*r; s1=4*PI*r*r; v1=4*PI*r*r*r/3; v2=s*h; printf("圓周長=%.2f\n圓面積=%.2f\n圓球表面積=%.2f\n圓球體積=%.2f\n圓柱體體積=%.2f\n",l,s,s1,v1,v2);}雞兔同籠已知雞兔總頭數(shù)為h,總腳數(shù)為f,求雞兔各多少只?(要求通過輸入語句給h和f賦值,并且在輸入輸出時加上必要的提示語句)例如:請輸入總頭數(shù)h,總腳數(shù)f:2,6雞:1,兔:1#include<stdio.h>intmain(){ inth,f,x,y;printf(“請輸入總頭數(shù)和腳數(shù)h,f:”);scanf(“%d,%d”,&h,&f);y=f/2-h;x=h-y;printf(“雞有%d只,兔有%d只\n”,x,y);}1、若floatx=1.234,則printf(“%6.2f”,x)輸出的結(jié)果為()A.1.234 B.1.23C.1.23D.1.2342、已知I、j、k為int型變量,若從鍵盤輸入:1,2,3《回車》,使I的值為1、j的值為2、k的值為3,以下選項中正確的輸入語句是()A.scanf(“%2d%2d%2d”,&I,&j,&k);B.scanf(“%d%d%d”,&I,&j,&k);C.scanf(“%d,%d,%d”

溫馨提示

  • 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

提交評論