第3章順序結(jié)構(gòu)程序設(shè)計_第1頁
第3章順序結(jié)構(gòu)程序設(shè)計_第2頁
第3章順序結(jié)構(gòu)程序設(shè)計_第3頁
第3章順序結(jié)構(gòu)程序設(shè)計_第4頁
第3章順序結(jié)構(gòu)程序設(shè)計_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章順序結(jié)構(gòu)程序設(shè)計本

導(dǎo)

C語言是結(jié)構(gòu)化程序設(shè)計語言,它提供了比其它高級語言更豐富的控制語句。從本章開始,將陸續(xù)介紹C語言的控制語句:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。本章將介紹三種基本結(jié)構(gòu)的概念,重點介紹順序結(jié)構(gòu)、C語言的標準輸入輸出函數(shù),并舉例說明順序程序設(shè)計的基本方法。

本章的教學(xué)目標:了解結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu);了解C語言的基本語句;掌握格式化輸入/輸出函數(shù);能進行簡單的程序設(shè)計。第3章順序結(jié)構(gòu)程序設(shè)計3.1C語句概述

3.2程序的三種基本結(jié)構(gòu)

3.3順序結(jié)構(gòu)程序設(shè)計的思想

3.4實現(xiàn)順序結(jié)構(gòu)程序設(shè)計的基本語句

3.5順序程序設(shè)計舉例

3.1C語句概述C語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一個語句經(jīng)編譯后產(chǎn)生若干條機器指令。C語句是C語言源程序的重要組成部分,是用來完成一定操作任務(wù)的。

C語言的語句可以分為五大類:1.函數(shù)調(diào)用語句。由一次函數(shù)調(diào)用加一個分號構(gòu)成的語句。例如:printf(“thisisabook”);2.表達式語句。表達式的后面加一個分號就構(gòu)成了一個表達式語句。例如:sum=a+b;/*賦值語句*/3.空語句,光有一個分號“;”,作為語句結(jié)束符,它表示什么也不做。4.復(fù)合語句。由“{”和“}”把一些變量說明和語句組合在一起。又稱語句塊(Block)

。例如,{inta=0,b=1,sum;sum=a+b;

printf(“%d”,sum);}5.控制語句,共九種。即⑴

if語句

(條件語句)⑵

switch語句

(多分支選擇語句)⑶

while語句

(循環(huán)語句)⑷

do-while語句(循環(huán)語句)⑸

for語句

(循環(huán)語句)⑹

break語句(終止執(zhí)行循環(huán)語句或switch語句)⑺

continue語句(結(jié)束本次循環(huán)語句)⑻

goto語句

(轉(zhuǎn)向語句)⑼

return語句

(從函數(shù)返回語句)

3.2程序的三種基本結(jié)構(gòu)

C語言是結(jié)構(gòu)化程序設(shè)計語言,結(jié)構(gòu)化程序設(shè)計的基本思想是,用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等三種基本結(jié)構(gòu)來構(gòu)造程序;限制使用無條件轉(zhuǎn)移語句(goto語句)。程序的三種基本結(jié)構(gòu)是:1.順序結(jié)構(gòu)順序執(zhí)行每個操作,即先執(zhí)行A操作,再執(zhí)行B操作,兩者之間是順序執(zhí)行的關(guān)系。圖3-1是順序結(jié)構(gòu)的流程圖。2.選擇結(jié)構(gòu)設(shè)P代表一個判斷條件,當(dāng)P成立(或稱“為真”)時,執(zhí)行A操作,否則執(zhí)行B操作。即A和B中只能選擇其中之一。圖3-2是選擇結(jié)構(gòu)的流程圖。3.循環(huán)結(jié)構(gòu)(1)當(dāng)型循環(huán)結(jié)構(gòu):如圖3-3所示,當(dāng)條件P成立時,反復(fù)執(zhí)行A操作,直到條件P不再成立時才跳出循環(huán)。(2)直到型循環(huán)結(jié)構(gòu):如圖3-4所示,先執(zhí)行A操作,再判斷條件P是否成立,若P成立,則再執(zhí)行A操作,如此反復(fù),直到條件P不成立時跳出循環(huán)。圖3-1圖3-2圖3-3圖3-43.3順序結(jié)構(gòu)程序設(shè)計的思想

在順序結(jié)構(gòu)程序中,程序的執(zhí)行是按照各語句出現(xiàn)的先后次序,順序執(zhí)行的,并且每個語句都會被執(zhí)行到。例如:由鍵盤輸入兩個整數(shù),然后計算其和,再將結(jié)果打印輸出。 算法設(shè)計: (1)輸入兩個整數(shù); (2)計算其和; (3)將和打印輸出。

解決該問題的算法可用傳統(tǒng)流程圖3-5描述。具有如下特性: (1)順序結(jié)構(gòu)由3部分組成:

A:輸入兩個整數(shù);

B:計算兩數(shù)的和;

C:輸出和數(shù)。 (2)按順序執(zhí)行,且都執(zhí)行一次;

ABC3.4實現(xiàn)順序結(jié)構(gòu)程序設(shè)計的基本語句

在C語言描述順序結(jié)構(gòu)程序中,通常使用的語句有:賦值語句、輸入數(shù)據(jù)函數(shù)調(diào)用語句(scanf、getchar)、輸出數(shù)據(jù)函數(shù)調(diào)用語句(printf、putchar)等。

3.4.1賦值語句

3.4.2格式輸出函數(shù)(printf)

3.4.3格式化輸入函數(shù)(scanf)

3.4.4單字符輸出函數(shù)(putchar)

3.4.5單字符輸入函數(shù)(getchar)

3.4.1賦值語句

C語言的賦值語句是由賦值表達式加一個分號“;”構(gòu)成,最簡單的一種形式為:

變量=表達式;例如:y=4; /*將整數(shù)4賦給變量y*/x=y*5+2;/*將表達式y(tǒng)*5+2的值賦給變量x*/說

明:(1)在上述賦值語句中,“=”是賦值符號,賦值符號的右邊是由常量、變量、運算符和函數(shù)組成的表達式。(2)因賦值語句是由賦值表達式加一個分號“;”構(gòu)成的,所以下面也是合法的賦值語句:

i++; x+=3;(3)賦值語句是將右邊的表達式的值賦給左邊的變量,因此,賦值語句要先對表達式計算求值,然后再將求得的值賦給左邊的變量,所以賦值語句兼有計算功能。在上例中,先計算表達式y(tǒng)*5+2,求得值為22,最后將22賦給變量x。3.4.2格式輸出函數(shù)(printf)1.一般形式:

printf(格式控制,[輸出表列]);

“格式控制”:用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”。它是由字符“%”、格式字符(如d、f、c等)和普通字符(原樣輸出的)組成。

“輸出表列”:是一些與“格式控制”中的格式字符一一對應(yīng)的需要輸出的數(shù)據(jù),可以是變量或表達式?!纠?.1】main(){inta=2,y;charch=’e’;floatx=2.4;printf("%d%c",a,ch);/*以十進制整數(shù)格式輸出變量a,以字符格式輸出變量ch*/printf("x=%f,y=%d",x,a+10);/*以浮點數(shù)形式輸出變量x,以十進制整數(shù)格式輸出表達式a+10的值*/printf("\nhelloworld");/*先換行,再輸出字符串helloword*/}運行結(jié)果:2ex=2.400000,y=12helloworld說

明:①

對于語句printf("%d%c",a,ch);,"%d%c"是格式控制,a,ch是輸出表列。執(zhí)行時,輸出變量a和ch中的值2和e。其中%d表示以十進制整數(shù)格式輸出變量a的值

,而%c表示以字符格式輸出變量ch的值。格式控制的對應(yīng)關(guān)系如下:

printf("%d%c",a,ch);

由于printf是函數(shù),所以,“格式控制”和“輸出表列”實際上是函數(shù)的參數(shù)。printf函數(shù)的一般形式可表示為:printf(“格式1格式2…格式n”,參數(shù)1,參數(shù)2,參數(shù)3,……參數(shù)n);其功能是將參數(shù)1,參數(shù)2,…,參數(shù)n分別按格式1,格式2,…,格式n輸出。②

對于語句printf("x=%f,y=%d",x,a+10);,“x=%f,y=%d”是格式控制,x,a+10是輸出表列。執(zhí)行時,x=和y=是原樣輸出,而語句中的%f和%d分別以后面輸出表列中變量x和表達式a+10的值代之,而%f表示以浮點數(shù)形式輸出變量x的值,%d表示以十進制整數(shù)格式輸出表達式a+10的值。

2.格式說明符

表3-1printf格式說明符表3-1printf格式說明符數(shù)據(jù)類型格式說明符功能描述整數(shù)(int)%d或%i以帶符號的十進制形式輸出整數(shù)(正數(shù)不輸出符號)%md(或%-md)以十進制數(shù)形式按給定的寬度m輸出int型數(shù)據(jù)。如數(shù)據(jù)的位數(shù)小于m,則左(或右)端補以空格,若大于m,則按實際位輸出%ld以十進制整數(shù)形式按數(shù)據(jù)的實際長度輸出long型數(shù)據(jù)%mld(或%-mld)以十進制數(shù)形式按給定的寬度m輸出long型數(shù)據(jù)。如數(shù)據(jù)的位數(shù)小于m,則左(或右)端補以空格,若大于m,則按實際位輸出%o以八進制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0)%x,%X以十六進制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0x)用x則輸出十六進制數(shù)的a-f時以小寫字母輸出;用X時,則以大寫字母輸出%u以無符號十進制形式輸出整數(shù)字符(char)%c以單個字符形式輸出字符數(shù)據(jù)%mc(或%-mc)按指定的寬度m和右(或左)對齊方式輸出char型數(shù)據(jù)%s輸出字符串形式%ms(或%-ms)按指定的長度和右(或左)對齊方式輸出字符串實數(shù)(float,double)%f以小數(shù)形式輸出實數(shù)(單、雙精度),小數(shù)位數(shù)為6%m.nf(或%-m.nf)指定輸出的數(shù)據(jù)共占m列,其中小數(shù)占n列,靠右(或左)對齊一般格式控制符“格式控制符”的完整格式為:

%[標志][域?qū)抅[.精度][F|N|h|l|L]格式符

方括弧括起來的部分是可選的,被稱為修飾符。精度輸出字符最大數(shù),對于整型值,為輸出最少數(shù)值個數(shù)。F|N|h|l|L

N :

近指針(nearpointer)F : 遠指針(farpointer)h : 短整型(shortint)l : 長型(long)L : 長雙精度型(longdouble)例:若定義inta=-316;則:printf(“a=%d”,a);輸出為a=-316printf(“a=%6d”,a);輸出為a=-316printf(“a=%-6d”,a);輸出為a=-316再看看下面實數(shù)的格式修飾符情況:若定義floatx=3.1415926535;則:printf(“x=%f”,x);輸出為x=3.141593printf(“x=%7.4f”,x);輸出為x=3.1416printf(“x=%9.2e”,x);輸出為x=3.14e+00(1)輸出整型、長整型、無符號整型數(shù)據(jù)。%d,%md(%-md),

%ld(%-ld),%mld,%o,%x【例3.2】輸出整型、長整型、無符號整型數(shù)據(jù)。

main(){inty=20;longa=1024;unsignedb=54321;

clrscr();/*清屏*/printf("%d,%ld,%u\n",y,a,b);/*以十進制按數(shù)據(jù)實際長度輸出變量y,a,b*/

printf("%8d,%8ld,%8u\n",y,a,b);/*以十進制按8位列寬輸出變量y,a,b,右對齊*/

printf("%-8d,%-8ld,%-8u\n",y,a,b);/*以十進制按8位列寬輸出變量y,a,b,左對齊*/

printf("%o,%lo,%o\n",y,a,b);/*以八進制按數(shù)據(jù)實際長度輸出變量y,a,b*/

printf("%x,%lx,%x\n",y,a,b);/*以十六進制按數(shù)據(jù)實際長度輸出變量y,a,b*/

printf("%8o,%8lo,%8o\n",y,a,b);/*以八進制按8位列寬輸出變量y,a,b,右對齊*/

printf("%-8x,%-8lx,%-8x\n",y,a,b);/*以十六進制按8位列寬輸出變量y,a,b,左對齊*/}運行結(jié)果如下,其中的□表示空格。20,1024,54321□□□□□□20,□□□□1024,□□□5432120□□□□□□,1024□□□□,54321□□□24,2000,15206114,400,d431□□□□□□24,□□□□2000,□□15206124□□□□□□,2000□□□□,152061□□(2)輸出字符和字符串---%mc,%ms(或%-ms),%m.ns(或%-m.ns)【例3.3】輸出字符和字符串?dāng)?shù)據(jù)main(){charch=‘a(chǎn)';printf("%c\n",ch);/*輸出變量ch(單個字符)*/printf("%-3c\n",ch);/*輸出變量ch,占3列,靠左對齊*/printf("%3c\n",ch);/*輸出變量ch,占3列,靠右對齊*/printf("%s\n","programing");/*按實際長度輸出字符串programing*/printf("%15s\n","programing");/*輸出字符串programing,占15列,靠右對齊*/printf("%-15s\n","programing");/*輸出字符串programing,占15列,靠左對齊*//*輸出字符串programing中的前5個字符,占10列,靠右對齊*/printf("%10.5s\n","programing");/*輸出字符串programing中的前5個字符,占10列,靠左對齊*/printf("%-10.5s\n","programing");}運行結(jié)果如下,其中的□表示空格。

a,a□□□□aprograming□□□□□programingprograming□□□□□□□□□□progrprogr□□□□□(3)輸出實型數(shù)據(jù)。%f,%m.nf【例3.4】輸出實型數(shù)據(jù)。main(){floatx,y;doublea;x=111111.111;y=123.468;a=2222222222222.222222222;printf("%f\n",x);printf("%f\n",a);printf("%10f,%10.2f,%.2f,%-10.2f\n",x,x,x,x);printf("%e\n",x);printf("%e\n",a);printf("%10e,%10.2e,%.2e,%-10.2e\n",a,a,a,a);printf(“%f,%e,%g”,y,y,y);}程序運行結(jié)果如下,其中的□表示空格。111111.1093752222222222222.222170111111.109375,□111111.11,111111.11,111111.11□1.11111e+052.22222e+122.22222e+12,□□□2.2e+12,2.2e+12,2.2e+12□□□123.468002,1.23468e+02,123.4683.轉(zhuǎn)義字符

以“\”開頭的字符序列。C語言常用的轉(zhuǎn)義字符見第2章表2-3。

【例3.5】轉(zhuǎn)義字符輸出形式舉例main(){chara,b,c;a=‘n’;b=‘e’;c=‘\167’;/*8進制數(shù)167代表的字符w*/printf(“%c%c%c\n”,a,b,c);/*以字符格式輸出*/printf(“%c\t%c\t%c\n”,a,b,c);/*每輸出一個字符跳到下一輸出區(qū)*/printf(“%c\n%c\n%c\n”,a,b,c);/*每輸出一個字符后換行*/}運行情況如下:newn e wnew3.4.3格式化輸入函數(shù)(scanf)

1.scanf函數(shù)的一般形式格式化輸入函數(shù)scanf的功能是用來從外部設(shè)備(通常是鍵盤),向程序中的變量輸入一個或若干個任意類型的數(shù)據(jù)。scanf函數(shù)的一般形式為:scanf(格式控制,地址表列);其中“格式控制”的含義同printf函數(shù);“地址表列”是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。例如,

inta; floatb;

scanf(“%d%f”,&a,&b);2.格式說明符

scanf函數(shù)中的格式說明符的使用與printf函數(shù)類似,必須用%開頭后面跟一個字母(也可以在其中間增加附加字符),它規(guī)定了輸入項對應(yīng)的輸入數(shù)據(jù)格式。同樣格式說明符要在個數(shù)和類型上與輸入項相匹配。scanf函數(shù)常用的格式說明符及附加字符見表3-2.

數(shù)據(jù)類型格式說明符功能描述整數(shù)%d%D用來輸入帶符號的十進制整數(shù)用來輸入帶符號的十進制長整數(shù)%i%I用來輸入帶符號的十、八、十六進制整數(shù)用來輸入帶符號的十、八、十六進制長整數(shù)%o%O用來輸入無符號的八進制整數(shù)用來輸入無符號的八進制長整數(shù)%x%X用來輸入無符號的十六進制整數(shù)用來輸入無符號的十六進制長整數(shù)%u%U用來輸入無符號的十進制整數(shù)用來輸入無符號的十進制長整數(shù)實數(shù)%f用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入。%e,%g%E,%G用來輸入單精度實數(shù)用來輸入雙精度實數(shù)字符%c用來輸入單個字符%s用來輸入字符串,將字符串送到一個字符數(shù)組中,以第一個空白字符結(jié)束。以“\0”作為串結(jié)束標志.【例3.6】用scanf函數(shù)輸入數(shù)據(jù)。main(){inta,b;clrscr();printf("pleaseinputtwonumbers:");scanf("%d%d",&a,&b);printf("a=%d,b=%d",a,b);}運行結(jié)果如下:pleaseinputtwonumbers:3□4↙(回車)a=3,b=43.4.4單字符輸出函數(shù)(putchar)

putchar()函數(shù)的一般調(diào)用形式為:

putchar(c);其中,c為一個字符型數(shù)據(jù)(普通字符或轉(zhuǎn)義字符)或整型數(shù)據(jù)(0~255)。

函數(shù)的功能是用于將一個字符輸出到顯示器上顯示.【例3.7】輸出單個字符。#include<stdio.h>main(){inta;charc1,c2;a=71;c1=‘o’;c2=‘y’;putchar(‘\102’);putchar(c1);putchar(c2);putchar(‘\n’);putchar(a);putchar(‘i’);putchar(‘r’);putchar(108);}運行結(jié)果:

BoyGirl3.4.5單字符輸入函數(shù)(getchar)getchar()函數(shù)的一般調(diào)用形式為:ch=getchar();getchar()函數(shù)的功能是從鍵盤上輸入一個字符?!纠?.8】從鍵盤輸入單個字符。#include“stdio.h”main(){inta;charch;ch=getchar();a=getchar();putchar(ch);putchar(a);}運行結(jié)果:DA↙(回車)DA(顯示變量ch的值)

3.5順序程序設(shè)計舉例

【例3.9】從鍵盤輸入一個兩個整數(shù),進行加、減、乘、除和模運算,并輸出其結(jié)果。main(){inta,b;clrscr();/*清除屏幕*/printf("pleaseinput

溫馨提示

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

評論

0/150

提交評論