第3章順序結構程序設計_第1頁
第3章順序結構程序設計_第2頁
第3章順序結構程序設計_第3頁
第3章順序結構程序設計_第4頁
第3章順序結構程序設計_第5頁
已閱讀5頁,還剩20頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章順序結構程序設計本

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

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

3.2程序的三種基本結構

3.3順序結構程序設計的思想

3.4實現順序結構程序設計的基本語句

3.5順序程序設計舉例

3.1C語句概述C語言的語句用來向計算機系統發出操作指令。一個語句經編譯后產生若干條機器指令。C語句是C語言源程序的重要組成部分,是用來完成一定操作任務的。

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

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

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

if語句

(條件語句)⑵

switch語句

(多分支選擇語句)⑶

while語句

(循環語句)⑷

do-while語句(循環語句)⑸

for語句

(循環語句)⑹

break語句(終止執行循環語句或switch語句)⑺

continue語句(結束本次循環語句)⑻

goto語句

(轉向語句)⑼

return語句

(從函數返回語句)

3.2程序的三種基本結構

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

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

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

A:輸入兩個整數;

B:計算兩數的和;

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

ABC3.4實現順序結構程序設計的基本語句

在C語言描述順序結構程序中,通常使用的語句有:賦值語句、輸入數據函數調用語句(scanf、getchar)、輸出數據函數調用語句(printf、putchar)等。

3.4.1賦值語句

3.4.2格式輸出函數(printf)

3.4.3格式化輸入函數(scanf)

3.4.4單字符輸出函數(putchar)

3.4.5單字符輸入函數(getchar)

3.4.1賦值語句

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

變量=表達式;例如:y=4; /*將整數4賦給變量y*/x=y*5+2;/*將表達式y*5+2的值賦給變量x*/說

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

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

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

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

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

明:①

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

,而%c表示以字符格式輸出變量ch的值。格式控制的對應關系如下:

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

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

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

2.格式說明符

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

%[標志][域寬][.精度][F|N|h|l|L]格式符

方括弧括起來的部分是可選的,被稱為修飾符。精度輸出字符最大數,對于整型值,為輸出最少數值個數。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再看看下面實數的格式修飾符情況:若定義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)輸出整型、長整型、無符號整型數據。%d,%md(%-md),

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

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

clrscr();/*清屏*/printf("%d,%ld,%u\n",y,a,b);/*以十進制按數據實際長度輸出變量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);/*以八進制按數據實際長度輸出變量y,a,b*/

printf("%x,%lx,%x\n",y,a,b);/*以十六進制按數據實際長度輸出變量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,左對齊*/}運行結果如下,其中的□表示空格。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】輸出字符和字符串數據main(){charch=‘a';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");}運行結果如下,其中的□表示空格。

a,a□□□□aprograming□□□□□programingprograming□□□□□□□□□□progrprogr□□□□□(3)輸出實型數據。%f,%m.nf【例3.4】輸出實型數據。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);}程序運行結果如下,其中的□表示空格。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.轉義字符

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

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

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

inta; floatb;

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

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

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

putchar()函數的一般調用形式為:

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

函數的功能是用于將一個字符輸出到顯示器上顯示.【例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);}運行結果:

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

3.5順序程序設計舉例

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

溫馨提示

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

評論

0/150

提交評論