第3章--最簡單的C程序設(shè)計(jì)—順序程序設(shè)計(jì)課件.ppt
第3章 最簡單的c程序設(shè)計(jì)順序程序設(shè)計(jì),3.1 C語句概述3.2 程序的三種基本結(jié)構(gòu)3.3 賦值語句3.4 數(shù)據(jù)輸入輸出的概念及在語言中的實(shí)現(xiàn)3.5 字符數(shù)據(jù)的輸入輸出3.6 格式輸入與輸出3.7 順序結(jié)構(gòu)程序設(shè)計(jì)舉例習(xí)題,在上一章介紹了程序中用到的一些基本要素(常量、變量、運(yùn)算符、表達(dá)式等),它們是構(gòu)成程序的基本成分。在第1章中已經(jīng)介紹了幾個(gè)簡單的c程序。本章將介紹為編寫簡單程序所必需的一些內(nèi)容。,3.1 C語句概述,和其他高級(jí)語言一樣,c語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一個(gè)語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。一個(gè)實(shí)際的程序應(yīng)當(dāng)包含若干語句。應(yīng)當(dāng)指出,c語句都是用來完成一定操作任務(wù)的。聲明部分的內(nèi)容不應(yīng)稱為語句。如:int a;不是一個(gè)c語句,它不產(chǎn)生機(jī)器操作,而只是對(duì)變量的定義。從第1章已知,一個(gè)函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。c程序結(jié)構(gòu)可以用圖3.1表示。即一個(gè)c程序可以由若干個(gè)源程序文件(分別進(jìn)行編譯的文件模塊)組成,一個(gè)源文件可以由若干個(gè)函數(shù)和預(yù)處理命令以及全局變量聲明部分組成(關(guān)于“全局變量”見第7章,“預(yù)編譯命令”見第8章),一個(gè)函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句組成。,圖3.1,在第2章中已經(jīng)說明,程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分來實(shí)現(xiàn))和數(shù)據(jù)操作(由語句來實(shí)現(xiàn))。數(shù)據(jù)描述主要定義數(shù)據(jù)結(jié)構(gòu)(用數(shù)據(jù)類型表示)和數(shù)據(jù)初值。數(shù)據(jù)操作的任務(wù)是對(duì)已提供的數(shù)據(jù)進(jìn)行加工。C語句可以分為以下5類:(1) 控制語句,完成一定的控制功能。c只有9種控制語句,它們是: if()else (條件語句) for() (循環(huán)語句) hile() (循環(huán)語句) dohile() (循環(huán)語句) continue (結(jié)束本次循環(huán)語句), break (中止執(zhí)行switch或循環(huán)語句) sitch (多分支選擇語句) goto (轉(zhuǎn)向語句) return (從函數(shù)返回語句) 上面9種語句中的括號(hào)()表示中是一個(gè)條件,表示內(nèi)嵌的語句。例如:“if()else”的具體語句可以寫成: if(xy) z=x;else z=y;(2) 函數(shù)調(diào)用語句。由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語句,例如:printf(this is a c stateent);,(3) 表達(dá)式語句。由一個(gè)表達(dá)式構(gòu)成一個(gè)語句,最典型的是,由賦值表達(dá)式構(gòu)成一個(gè)賦值語句。a=3 是一個(gè)賦值表達(dá)式,而a=3; 是一個(gè)賦值語句??梢钥吹揭粋€(gè)表達(dá)式的最后加一個(gè)分號(hào)就成了一個(gè)語句。一個(gè)語句必須在最后出現(xiàn)分號(hào),分號(hào)是語句中不可缺少的一部分(而不像pascal語言那樣,分號(hào)只是語句間的分隔符號(hào))。例如:i=i+1(是表達(dá)式,不是語句)i=i+1;(是語句),任何表達(dá)式都可以加上分號(hào)而成為語句,例如i+;是一語句,作用是使i值加1。又如x+y;也是一個(gè)語句,作用是完成x+y的操作,它是合法的,但是并不把x+y的和賦給另一變量,所以它并無實(shí)際意義。 表達(dá)式能構(gòu)成語句是c語言的一個(gè)重要特色。其實(shí)“函數(shù)調(diào)用語句”也是屬于表達(dá)式語句,因?yàn)楹瘮?shù)調(diào)用(如sin(x)也屬于表達(dá)式的一種。只是為了便于理解和使用,我們把“函數(shù)調(diào)用語句”和“表達(dá)式語句”分開來說明。由于c程序中大多數(shù)語句是表達(dá)式語句(包括函數(shù)調(diào)用語句),所以有人把c語言稱作“表達(dá)式語言”。,(4) 空語句。下面是一個(gè)空語句:;即只有一個(gè)分號(hào)的語句,它什么也不做。有時(shí)用來做被轉(zhuǎn)向點(diǎn),或循環(huán)語句中的循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么也不做)。(5) 可以用把一些語句括起來成為復(fù)合語句,又稱分程序。如下面是一個(gè)復(fù)合語句。z=x+y;t=z/100;printf(%f,t); ,注意:復(fù)合語句中最后一個(gè)語句中最后的分號(hào)不能忽略不寫(這是和pascal不同的)。 C語言允許一行寫幾個(gè)語句,也允許一個(gè)語句拆開寫在幾行上,書寫格式無固定要求(fortran、cobol有嚴(yán)格要求)。3.2 程序的三種基本結(jié)構(gòu) 為了提高程序設(shè)計(jì)的質(zhì)量和效率,現(xiàn)在普遍采用結(jié)構(gòu)化程序設(shè)計(jì)方法。結(jié)構(gòu)化程序由若干個(gè)基本結(jié)構(gòu)組成。每個(gè)基本結(jié)構(gòu)可以包含 一個(gè)或若干個(gè)語句。有三種基本結(jié)構(gòu):(1) 順序結(jié)構(gòu),見圖3.2。先執(zhí)行a操作,再執(zhí)行b操作,兩者是順序執(zhí)行的關(guān)系。圖中(b)是NS結(jié)構(gòu)化流程圖(下同)。,圖3.2,圖3.3,(2) 選擇結(jié)構(gòu),見圖3.3。p代表一個(gè)條件,當(dāng)p條件成立(或稱為“真”)時(shí)執(zhí)行a,否則執(zhí)行b。注意,只能執(zhí)行a或b之一。兩條路徑匯合在一起然后出口。(3) 循環(huán)結(jié)構(gòu),有兩種循環(huán)結(jié)構(gòu): 當(dāng)型循環(huán)結(jié)構(gòu),見圖3.4。當(dāng)p條件成立(“真”)時(shí),反復(fù)執(zhí)行a操作。直到p為“假”時(shí)才停止循環(huán)。 直到型循環(huán)結(jié)構(gòu),見圖3.5。先執(zhí)行a操作,再判斷p是否為“假”,若p為“假”,再執(zhí)行a,如此反復(fù),直到p為“真”為止。,圖3.4,圖3.5,由選擇結(jié)構(gòu)可以派生出另一種基本結(jié)構(gòu): 多分支選擇結(jié)構(gòu),見圖3.6。 根據(jù)k的值(k1,k2,kn)不同而決定執(zhí)行a1,a2,an之一。 已經(jīng)證明,由以上基本結(jié)構(gòu)組成的程序能處理任何復(fù)雜的問題。上面圖3.2圖3.7中方框中的a,b,a1,an等可以是一個(gè)簡單的語句,也可以又是一個(gè)基本結(jié)構(gòu)。例如,圖3.7是一個(gè)順序結(jié)構(gòu),它由兩個(gè)操作順序組成。虛線框內(nèi)是一個(gè)當(dāng)型循環(huán)結(jié)構(gòu),可以用“b”表示,因此圖3.7就可以理解為圖3.2(a)所示的順序結(jié)構(gòu)。,圖3.6,圖3.7,關(guān)于三種基本結(jié)構(gòu)的特征以及結(jié)構(gòu)化程序設(shè)計(jì)方法,讀者可能已在學(xué)習(xí)其他高級(jí)語言程序設(shè)計(jì)時(shí)學(xué)習(xí)過,在此不再重復(fù)。只是應(yīng)當(dāng)強(qiáng)調(diào)說明,在今后的程序設(shè)計(jì)中應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法。在本章中,我們將介紹幾種最基本的語句,以及用它們構(gòu)成順序結(jié)構(gòu)的程序。在第4、第5章介紹選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)。,3.3 賦值語句 前已介紹,賦值語句是由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成。由于賦值語句應(yīng)用十分普遍,所以專門再討論一下。 C語言的賦值語句具有其他高級(jí)語言的賦值語句的一切特點(diǎn)和功能。但也應(yīng)當(dāng)注意到它們的不同:(1) C語言中的賦值號(hào)“=”是一個(gè)運(yùn)算符,在其他大多數(shù)語言中賦值號(hào)不是運(yùn)算符。(2) 關(guān)于賦值表達(dá)式與賦值語句的概念,其他多數(shù)高級(jí)語言沒有“賦值表達(dá)式”一概念。作為賦值表達(dá)式可以包括在其他表達(dá)式之中,例如:if(a=b)0)t=a;,按語法規(guī)定if后面的()內(nèi)是一個(gè)條件,例如可以是:“if(x0)”?,F(xiàn)在在x的位置上換上一個(gè)賦值表達(dá)式“a=b”,其作用是:先進(jìn)行賦值運(yùn)算(將b的值賦給a),然后判斷a是否大于0,如大于0,執(zhí)行t=a。在if語句中的“a=b”不是賦值語句而是賦值表達(dá)式,這樣寫是合法的。如果寫成if(a=b;)0)t=a;就錯(cuò)了。在if的條件中不能包含賦值語句。由此可以看到,c把賦值語句和賦值表達(dá)式區(qū)別開來,增加了表達(dá)式的種類,使表達(dá)式的應(yīng)用幾乎“無孔不入”,能實(shí)現(xiàn)其他語言中難以實(shí)現(xiàn)的功能.,3.4 數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)(1) 所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。從計(jì)算機(jī)向外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤等)輸出數(shù)據(jù)稱為“輸出” ,從外部向輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)輸入數(shù)據(jù)稱為“輸入”。(2) C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的。在c標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),例如,printf函數(shù)和scanf函數(shù)。讀者在使用它們時(shí),千萬不要誤認(rèn)為它們是C語言提供的“輸入輸出語句”。printf和scanf不是C語言的關(guān)鍵字,而只是函數(shù)的名字。,實(shí)際上完全可以不用printf和scanf這兩個(gè)名字,而另外編兩個(gè)輸入輸出函數(shù), 用其他的函數(shù)名。C提供的函數(shù)以庫的形式存放在系統(tǒng)中,它們不是c語言文本中的組成部分。 不把輸入輸出作為C語言提供的語句的目的是使C語言編譯系統(tǒng)簡單,因?yàn)閷⒄Z句翻譯成二進(jìn)制的指令是在編譯階段完成的,沒有輸入輸出語句就可以避免在編譯階段處理與硬件有關(guān)的問題,可以使編譯系統(tǒng)簡化,而且通用性強(qiáng),可移植性好,對(duì)各種型號(hào)的計(jì)算機(jī)都適用,便于在各種計(jì)算機(jī)上實(shí)現(xiàn)。各種版本的C語言函數(shù)庫是各計(jì)算機(jī)廠商(或軟件開發(fā)公司)針對(duì)某一類型計(jì)算機(jī)的情況編寫的,并且已編譯成目標(biāo)文件(.obj文件)。它們?cè)谶B接階段與由源程序經(jīng)編譯而得到的目標(biāo)文件相連接,生成一個(gè)可執(zhí)行的目標(biāo)程序。,如果在源程序中有printf函數(shù),在編譯時(shí)并不把它翻譯成目標(biāo)指令,而是在執(zhí)行階段中調(diào)用已被連接的函數(shù)庫中的printf函數(shù)。由于c編譯系統(tǒng)與c函數(shù)庫是分別進(jìn)行設(shè)計(jì)的,因此不同的計(jì)算機(jī)系統(tǒng)所提供函數(shù)的數(shù)量、名字和功能是不完全相同的。不過,有些通用的函數(shù)(如printf和scanf等),各種計(jì)算機(jī)系統(tǒng)都提供,成為各種計(jì)算機(jī)系統(tǒng)的標(biāo)準(zhǔn)函數(shù)。c語言函數(shù)庫中有一批“標(biāo)準(zhǔn)輸入輸出函數(shù)” ,它是以標(biāo)準(zhǔn)的輸入輸出設(shè)備(一般為終端設(shè)備)為輸入輸出對(duì)象的。其中有:putchar(輸出字符),getchar(輸入字符),printf(格式輸出),scanf(格式輸入), puts(輸出字符串),gets(輸入字符串)。在本章中介紹前面4個(gè)最基本的輸入輸出函數(shù)。,(3) 在使用c語言庫函數(shù)時(shí),要用預(yù)編譯命令“include”將有關(guān)的“頭文件” 包括到用戶源文件中。在頭文件中包含了與用到的函數(shù)有關(guān)的信息。例如使用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),要用到“stdio.h”文件。文件后綴“h” 是head的縮寫,#include命令都是放在程序的開頭,因此這類文件被稱為“頭文件” 。在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)有以下預(yù)編譯命令: #include 或#include studio.h studioh是standard input & output的縮寫,它包含了與標(biāo)準(zhǔn)i/o庫有關(guān)的變量定義和宏定義(有關(guān)預(yù)編譯,命令見第7章)??紤]到printf和scanf函數(shù)使用頻繁,系統(tǒng)允許在使用這兩個(gè)函數(shù)時(shí)可不加#include命令。3.5 字符數(shù)據(jù)的輸入輸出 我們先介紹c標(biāo)準(zhǔn)i/o函數(shù)庫中最簡單的、也是最容易理解的字符輸入輸出函數(shù)putchar()和getchar(),再介紹格式輸入輸出函數(shù)printf()和scanf()函數(shù)。3.5.1 putchar函數(shù)(字符輸出函數(shù)) putchar函數(shù)的作用是向終端輸出一個(gè)字符:例如putchar(c);它輸出字符變量c的值。c可以是字符型變量或整型變量。,例3.1 輸出單個(gè)字符。 #include main() char a,b,c; a=b;b=o;c=y; putchar(a);putchar(b);putchar(c); 運(yùn)行結(jié)果:boy 也可以輸出控制字符,如putchar(n)輸出一個(gè)換行符,使輸出的當(dāng)前位置移到下一行的開頭。,如果將例3.1程序最后一行改為putchar(a);putchar(n);putchar(b);putchar(n);putchar(c); putchar(n);則輸出結(jié)果為:b o y 也可以輸出其他轉(zhuǎn)義字符,如:putchar(101)(輸出字符a) putchar() (輸出單引號(hào)字符) putchar(015) (輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭),3.5.2 getchar函數(shù)(字符輸入函數(shù)) 此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)沒有參數(shù),其一般形式為getchar()函數(shù)的值就是從輸入設(shè)備得到的字符。例如:例3.2輸入單個(gè)字符#include main() charc; c=getchar(); putchar(c); ,在運(yùn)行時(shí),如果從鍵盤輸入字符a并按回車鍵,就會(huì)在屏幕上看到輸出的字符a。 請(qǐng)注意,getchar()只能接收一個(gè)字符。getchar函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。例如,例3.2第4、5行可以用下面一行代替:putchar(getchar(); 因?yàn)間etchar()的值為a,因此putchar函數(shù)輸出a。也可以用printf函數(shù)輸出: printf(”%c,getchar();請(qǐng)不要忘記,如果在一個(gè)函數(shù)中(今為main函數(shù))要調(diào)用getchar函數(shù),應(yīng)該在該函數(shù)的前面(或本文件開
編號(hào):30700474
類型:共享資源
大小:1.18MB
格式:PPT
上傳時(shí)間:2023-04-21
20
積分
積分
- 關(guān) 鍵 詞:
- 簡單 程序設(shè)計(jì) 順序 課件
- 資源描述:
-
第3章 最簡單的c程序設(shè)計(jì)順序程序設(shè)計(jì),3.1 C語句概述3.2 程序的三種基本結(jié)構(gòu)3.3 賦值語句3.4 數(shù)據(jù)輸入輸出的概念及在語言中的實(shí)現(xiàn)3.5 字符數(shù)據(jù)的輸入輸出3.6 格式輸入與輸出3.7 順序結(jié)構(gòu)程序設(shè)計(jì)舉例習(xí)題,在上一章介紹了程序中用到的一些基本要素(常量、變量、運(yùn)算符、表達(dá)式等),它們是構(gòu)成程序的基本成分。在第1章中已經(jīng)介紹了幾個(gè)簡單的c程序。本章將介紹為編寫簡單程序所必需的一些內(nèi)容。,3.1 C語句概述,和其他高級(jí)語言一樣,c語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一個(gè)語句經(jīng)編譯后產(chǎn)生若干條機(jī)器指令。一個(gè)實(shí)際的程序應(yīng)當(dāng)包含若干語句。應(yīng)當(dāng)指出,c語句都是用來完成一定操作任務(wù)的。聲明部分的內(nèi)容不應(yīng)稱為語句。如:int a;不是一個(gè)c語句,它不產(chǎn)生機(jī)器操作,而只是對(duì)變量的定義。從第1章已知,一個(gè)函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分即由語句組成。c程序結(jié)構(gòu)可以用圖3.1表示。即一個(gè)c程序可以由若干個(gè)源程序文件(分別進(jìn)行編譯的文件模塊)組成,一個(gè)源文件可以由若干個(gè)函數(shù)和預(yù)處理命令以及全局變量聲明部分組成(關(guān)于“全局變量”見第7章,“預(yù)編譯命令”見第8章),一個(gè)函數(shù)由數(shù)據(jù)定義部分和執(zhí)行語句組成。,圖3.1,在第2章中已經(jīng)說明,程序應(yīng)該包括數(shù)據(jù)描述(由聲明部分來實(shí)現(xiàn))和數(shù)據(jù)操作(由語句來實(shí)現(xiàn))。數(shù)據(jù)描述主要定義數(shù)據(jù)結(jié)構(gòu)(用數(shù)據(jù)類型表示)和數(shù)據(jù)初值。數(shù)據(jù)操作的任務(wù)是對(duì)已提供的數(shù)據(jù)進(jìn)行加工。C語句可以分為以下5類:(1) 控制語句,完成一定的控制功能。c只有9種控制語句,它們是: if()else (條件語句) for() (循環(huán)語句) hile() (循環(huán)語句) dohile() (循環(huán)語句) continue (結(jié)束本次循環(huán)語句), break (中止執(zhí)行switch或循環(huán)語句) sitch (多分支選擇語句) goto (轉(zhuǎn)向語句) return (從函數(shù)返回語句) 上面9種語句中的括號(hào)()表示中是一個(gè)條件,表示內(nèi)嵌的語句。例如:“if()else”的具體語句可以寫成: if(xy) z=x;else z=y;(2) 函數(shù)調(diào)用語句。由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語句,例如:printf(this is a c stateent);,(3) 表達(dá)式語句。由一個(gè)表達(dá)式構(gòu)成一個(gè)語句,最典型的是,由賦值表達(dá)式構(gòu)成一個(gè)賦值語句。a=3 是一個(gè)賦值表達(dá)式,而a=3; 是一個(gè)賦值語句。可以看到一個(gè)表達(dá)式的最后加一個(gè)分號(hào)就成了一個(gè)語句。一個(gè)語句必須在最后出現(xiàn)分號(hào),分號(hào)是語句中不可缺少的一部分(而不像pascal語言那樣,分號(hào)只是語句間的分隔符號(hào))。例如:i=i+1(是表達(dá)式,不是語句)i=i+1;(是語句),任何表達(dá)式都可以加上分號(hào)而成為語句,例如i+;是一語句,作用是使i值加1。又如x+y;也是一個(gè)語句,作用是完成x+y的操作,它是合法的,但是并不把x+y的和賦給另一變量,所以它并無實(shí)際意義。 表達(dá)式能構(gòu)成語句是c語言的一個(gè)重要特色。其實(shí)“函數(shù)調(diào)用語句”也是屬于表達(dá)式語句,因?yàn)楹瘮?shù)調(diào)用(如sin(x)也屬于表達(dá)式的一種。只是為了便于理解和使用,我們把“函數(shù)調(diào)用語句”和“表達(dá)式語句”分開來說明。由于c程序中大多數(shù)語句是表達(dá)式語句(包括函數(shù)調(diào)用語句),所以有人把c語言稱作“表達(dá)式語言”。,(4) 空語句。下面是一個(gè)空語句:;即只有一個(gè)分號(hào)的語句,它什么也不做。有時(shí)用來做被轉(zhuǎn)向點(diǎn),或循環(huán)語句中的循環(huán)體(循環(huán)體是空語句,表示循環(huán)體什么也不做)。(5) 可以用把一些語句括起來成為復(fù)合語句,又稱分程序。如下面是一個(gè)復(fù)合語句。z=x+y;t=z/100;printf(%f,t); ,注意:復(fù)合語句中最后一個(gè)語句中最后的分號(hào)不能忽略不寫(這是和pascal不同的)。 C語言允許一行寫幾個(gè)語句,也允許一個(gè)語句拆開寫在幾行上,書寫格式無固定要求(fortran、cobol有嚴(yán)格要求)。3.2 程序的三種基本結(jié)構(gòu) 為了提高程序設(shè)計(jì)的質(zhì)量和效率,現(xiàn)在普遍采用結(jié)構(gòu)化程序設(shè)計(jì)方法。結(jié)構(gòu)化程序由若干個(gè)基本結(jié)構(gòu)組成。每個(gè)基本結(jié)構(gòu)可以包含 一個(gè)或若干個(gè)語句。有三種基本結(jié)構(gòu):(1) 順序結(jié)構(gòu),見圖3.2。先執(zhí)行a操作,再執(zhí)行b操作,兩者是順序執(zhí)行的關(guān)系。圖中(b)是NS結(jié)構(gòu)化流程圖(下同)。,圖3.2,圖3.3,(2) 選擇結(jié)構(gòu),見圖3.3。p代表一個(gè)條件,當(dāng)p條件成立(或稱為“真”)時(shí)執(zhí)行a,否則執(zhí)行b。注意,只能執(zhí)行a或b之一。兩條路徑匯合在一起然后出口。(3) 循環(huán)結(jié)構(gòu),有兩種循環(huán)結(jié)構(gòu): 當(dāng)型循環(huán)結(jié)構(gòu),見圖3.4。當(dāng)p條件成立(“真”)時(shí),反復(fù)執(zhí)行a操作。直到p為“假”時(shí)才停止循環(huán)。 直到型循環(huán)結(jié)構(gòu),見圖3.5。先執(zhí)行a操作,再判斷p是否為“假”,若p為“假”,再執(zhí)行a,如此反復(fù),直到p為“真”為止。,圖3.4,圖3.5,由選擇結(jié)構(gòu)可以派生出另一種基本結(jié)構(gòu): 多分支選擇結(jié)構(gòu),見圖3.6。 根據(jù)k的值(k1,k2,kn)不同而決定執(zhí)行a1,a2,an之一。 已經(jīng)證明,由以上基本結(jié)構(gòu)組成的程序能處理任何復(fù)雜的問題。上面圖3.2圖3.7中方框中的a,b,a1,an等可以是一個(gè)簡單的語句,也可以又是一個(gè)基本結(jié)構(gòu)。例如,圖3.7是一個(gè)順序結(jié)構(gòu),它由兩個(gè)操作順序組成。虛線框內(nèi)是一個(gè)當(dāng)型循環(huán)結(jié)構(gòu),可以用“b”表示,因此圖3.7就可以理解為圖3.2(a)所示的順序結(jié)構(gòu)。,圖3.6,圖3.7,關(guān)于三種基本結(jié)構(gòu)的特征以及結(jié)構(gòu)化程序設(shè)計(jì)方法,讀者可能已在學(xué)習(xí)其他高級(jí)語言程序設(shè)計(jì)時(shí)學(xué)習(xí)過,在此不再重復(fù)。只是應(yīng)當(dāng)強(qiáng)調(diào)說明,在今后的程序設(shè)計(jì)中應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法。在本章中,我們將介紹幾種最基本的語句,以及用它們構(gòu)成順序結(jié)構(gòu)的程序。在第4、第5章介紹選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)。,3.3 賦值語句 前已介紹,賦值語句是由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成。由于賦值語句應(yīng)用十分普遍,所以專門再討論一下。 C語言的賦值語句具有其他高級(jí)語言的賦值語句的一切特點(diǎn)和功能。但也應(yīng)當(dāng)注意到它們的不同:(1) C語言中的賦值號(hào)“=”是一個(gè)運(yùn)算符,在其他大多數(shù)語言中賦值號(hào)不是運(yùn)算符。(2) 關(guān)于賦值表達(dá)式與賦值語句的概念,其他多數(shù)高級(jí)語言沒有“賦值表達(dá)式”一概念。作為賦值表達(dá)式可以包括在其他表達(dá)式之中,例如:if(a=b)0)t=a;,按語法規(guī)定if后面的()內(nèi)是一個(gè)條件,例如可以是:“if(x0)”。現(xiàn)在在x的位置上換上一個(gè)賦值表達(dá)式“a=b”,其作用是:先進(jìn)行賦值運(yùn)算(將b的值賦給a),然后判斷a是否大于0,如大于0,執(zhí)行t=a。在if語句中的“a=b”不是賦值語句而是賦值表達(dá)式,這樣寫是合法的。如果寫成if(a=b;)0)t=a;就錯(cuò)了。在if的條件中不能包含賦值語句。由此可以看到,c把賦值語句和賦值表達(dá)式區(qū)別開來,增加了表達(dá)式的種類,使表達(dá)式的應(yīng)用幾乎“無孔不入”,能實(shí)現(xiàn)其他語言中難以實(shí)現(xiàn)的功能.,3.4 數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)(1) 所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。從計(jì)算機(jī)向外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤等)輸出數(shù)據(jù)稱為“輸出” ,從外部向輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)輸入數(shù)據(jù)稱為“輸入”。(2) C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的。在c標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),例如,printf函數(shù)和scanf函數(shù)。讀者在使用它們時(shí),千萬不要誤認(rèn)為它們是C語言提供的“輸入輸出語句”。printf和scanf不是C語言的關(guān)鍵字,而只是函數(shù)的名字。,實(shí)際上完全可以不用printf和scanf這兩個(gè)名字,而另外編兩個(gè)輸入輸出函數(shù), 用其他的函數(shù)名。C提供的函數(shù)以庫的形式存放在系統(tǒng)中,它們不是c語言文本中的組成部分。 不把輸入輸出作為C語言提供的語句的目的是使C語言編譯系統(tǒng)簡單,因?yàn)閷⒄Z句翻譯成二進(jìn)制的指令是在編譯階段完成的,沒有輸入輸出語句就可以避免在編譯階段處理與硬件有關(guān)的問題,可以使編譯系統(tǒng)簡化,而且通用性強(qiáng),可移植性好,對(duì)各種型號(hào)的計(jì)算機(jī)都適用,便于在各種計(jì)算機(jī)上實(shí)現(xiàn)。各種版本的C語言函數(shù)庫是各計(jì)算機(jī)廠商(或軟件開發(fā)公司)針對(duì)某一類型計(jì)算機(jī)的情況編寫的,并且已編譯成目標(biāo)文件(.obj文件)。它們?cè)谶B接階段與由源程序經(jīng)編譯而得到的目標(biāo)文件相連接,生成一個(gè)可執(zhí)行的目標(biāo)程序。,如果在源程序中有printf函數(shù),在編譯時(shí)并不把它翻譯成目標(biāo)指令,而是在執(zhí)行階段中調(diào)用已被連接的函數(shù)庫中的printf函數(shù)。由于c編譯系統(tǒng)與c函數(shù)庫是分別進(jìn)行設(shè)計(jì)的,因此不同的計(jì)算機(jī)系統(tǒng)所提供函數(shù)的數(shù)量、名字和功能是不完全相同的。不過,有些通用的函數(shù)(如printf和scanf等),各種計(jì)算機(jī)系統(tǒng)都提供,成為各種計(jì)算機(jī)系統(tǒng)的標(biāo)準(zhǔn)函數(shù)。c語言函數(shù)庫中有一批“標(biāo)準(zhǔn)輸入輸出函數(shù)” ,它是以標(biāo)準(zhǔn)的輸入輸出設(shè)備(一般為終端設(shè)備)為輸入輸出對(duì)象的。其中有:putchar(輸出字符),getchar(輸入字符),printf(格式輸出),scanf(格式輸入), puts(輸出字符串),gets(輸入字符串)。在本章中介紹前面4個(gè)最基本的輸入輸出函數(shù)。,(3) 在使用c語言庫函數(shù)時(shí),要用預(yù)編譯命令“include”將有關(guān)的“頭文件” 包括到用戶源文件中。在頭文件中包含了與用到的函數(shù)有關(guān)的信息。例如使用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),要用到“stdio.h”文件。文件后綴“h” 是head的縮寫,#include命令都是放在程序的開頭,因此這類文件被稱為“頭文件” 。在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),文件開頭應(yīng)有以下預(yù)編譯命令: #include 或#include studio.h studioh是standard input & output的縮寫,它包含了與標(biāo)準(zhǔn)i/o庫有關(guān)的變量定義和宏定義(有關(guān)預(yù)編譯,命令見第7章)??紤]到printf和scanf函數(shù)使用頻繁,系統(tǒng)允許在使用這兩個(gè)函數(shù)時(shí)可不加#include命令。3.5 字符數(shù)據(jù)的輸入輸出 我們先介紹c標(biāo)準(zhǔn)i/o函數(shù)庫中最簡單的、也是最容易理解的字符輸入輸出函數(shù)putchar()和getchar(),再介紹格式輸入輸出函數(shù)printf()和scanf()函數(shù)。3.5.1 putchar函數(shù)(字符輸出函數(shù)) putchar函數(shù)的作用是向終端輸出一個(gè)字符:例如putchar(c);它輸出字符變量c的值。c可以是字符型變量或整型變量。,例3.1 輸出單個(gè)字符。 #include main() char a,b,c; a=b;b=o;c=y; putchar(a);putchar(b);putchar(c); 運(yùn)行結(jié)果:boy 也可以輸出控制字符,如putchar(n)輸出一個(gè)換行符,使輸出的當(dāng)前位置移到下一行的開頭。,如果將例3.1程序最后一行改為putchar(a);putchar(n);putchar(b);putchar(n);putchar(c); putchar(n);則輸出結(jié)果為:b o y 也可以輸出其他轉(zhuǎn)義字符,如:putchar(101)(輸出字符a) putchar() (輸出單引號(hào)字符) putchar(015) (輸出回車,不換行,使輸出的當(dāng)前位置移到本行開頭),3.5.2 getchar函數(shù)(字符輸入函數(shù)) 此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。getchar函數(shù)沒有參數(shù),其一般形式為getchar()函數(shù)的值就是從輸入設(shè)備得到的字符。例如:例3.2輸入單個(gè)字符#include main() charc; c=getchar(); putchar(c); ,在運(yùn)行時(shí),如果從鍵盤輸入字符a并按回車鍵,就會(huì)在屏幕上看到輸出的字符a。 請(qǐng)注意,getchar()只能接收一個(gè)字符。getchar函數(shù)得到的字符可以賦給一個(gè)字符變量或整型變量,也可以不賦給任何變量,作為表達(dá)式的一部分。例如,例3.2第4、5行可以用下面一行代替:putchar(getchar(); 因?yàn)間etchar()的值為a,因此putchar函數(shù)輸出a。也可以用printf函數(shù)輸出: printf(”%c,getchar();請(qǐng)不要忘記,如果在一個(gè)函數(shù)中(今為main函數(shù))要調(diào)用getchar函數(shù),應(yīng)該在該函數(shù)的前面(或本文件開展開閱讀全文
匯文網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請(qǐng)勿作他用。
關(guān)于本文
本文標(biāo)題:第3章--最簡單的C程序設(shè)計(jì)—順序程序設(shè)計(jì)課件.ppt
鏈接地址:http://zhizhaikeji.com/p-30700474.html
鏈接地址:http://zhizhaikeji.com/p-30700474.html