第3章簡單程序設計_第1頁
第3章簡單程序設計_第2頁
第3章簡單程序設計_第3頁
第3章簡單程序設計_第4頁
第3章簡單程序設計_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章簡單程序設計§3.1

C語言的基本語句§3.2順序結構§3.3數(shù)據(jù)輸入與輸出§3.4程序舉例C語句可分為以下5種類型:1.表達式語句由表達式組成,其一般形式是:表達式;

典型例子:賦值語句x=5;

2.函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加上一個分號構成,其作用是完成特定功能。它的一般形式是:函數(shù)名(參數(shù)列表);

典型例子:printf(“%d”,x);3.1

C語言的基本語句3.控制語句用于完成一定的控制功能,以形成程序的各種結構和流程控制。C語言有9種控制語句,分三類:(1)條件判斷語句,構成選擇結構:

if語句、switch語句(2)循環(huán)語句,構成循環(huán)結構:

for語句、while語句、do-while語句(3)轉(zhuǎn)向控制語句

①限定轉(zhuǎn)向語句:break、continue、return語句

②無條件轉(zhuǎn)向語句:goto語句4.復合語句是用大括號{……}將若干語句組合在一起,在語法上相當于一條語句。用于if語句的一個分支或循環(huán)語句的循環(huán)體等。由于復合語句中還可以定義變量,因此又稱分程序。注意:復合語句外沒有分號,其中最后一個語句的分號不能省略。5.空語句只有一個分號沒有其他內(nèi)容的語句。其形式為:;常用于循環(huán)中,表示循環(huán)體什么都不做。

程序結構分為順序、選擇、循環(huán)三種。任何復雜的程序都是由這三種基本結構組成。3.2順序結構

順序結構,按語句出現(xiàn)先后順序依次執(zhí)行的程序結構。選擇結構,又稱選取或分支結構,根據(jù)給定條件是否成立,以決定程序的分支轉(zhuǎn)向的程序結構,詳見第4章。循環(huán)結構,又稱重復結構,根據(jù)條件反復執(zhí)行某一部分語句的程序結構,詳見第5章。順序結構是程序設計中最簡單、最基本的結構,其特點是程序運行時,按語句書寫的次序依次執(zhí)行,其結構如右圖所示。順序結構一般由函數(shù)調(diào)用語句、說明語句、表達式語句和輸入輸出語句組成。AB順序結構圖順序結構流程圖#include<stdio.h>main(){

inta,b,c;a=123;b=456;c=a+b;

printf("\nc=%d\n",c);}【例3-1】分析下面程序預處理命令變量a,b,c聲明a,b賦初值賦值語句c=a+b輸出變量c的值例3-1的流程從例3-1可以看出,順序結構的程序框架如下:#開頭的預編譯命令行

main()

{

局部變量聲明語句;

可執(zhí)行語句;

}3.3數(shù)據(jù)輸入與輸出

printf()函數(shù)的功能是向系統(tǒng)顯示器輸出若干個任意類型的數(shù)據(jù)。1.printf()函數(shù)調(diào)用形式

printf(格式控制字符串,輸出列表)

注意:調(diào)用輸入輸出函數(shù)時,一般在程序開頭加頭文件:#include<stdio.h>,printf()和scanf()可省略。3.3.1格式化輸出函數(shù)printf()

格式說明

一般字符按原樣輸出轉(zhuǎn)義字符作用:換行輸出列表printf("a=%d\n",a);printf函數(shù)簡例格式控制字符串和輸出列表都是函數(shù)的參數(shù),其中:(1)格式控制字符串,它包括兩個信息:①格式說明符。由“%”開頭,以格式字符結束的一串字符,最簡單的如%d,%c,%f等。它的作用是將要輸出的數(shù)據(jù)轉(zhuǎn)化成指定的格式輸出。②原樣輸出字符,含一般字符和轉(zhuǎn)義字符。一般起提示、分隔數(shù)據(jù)和換行等作用。如例3-1中printf(“\nc=%d\n”,c);中雙撇號內(nèi)的\n和c=。(2)輸出列表是需要輸出的常量、變量、函數(shù)、表達式?!菊f明】格式說明符的一般形式為:

%[-][+][0][#][整數(shù)1][.整數(shù)2][l或h]格式字符它是由“%”開頭,以格式字符(英文字母)結束的一串字符,用以說明輸出數(shù)據(jù)的類型、長度、位數(shù)等,其中[]表示可選項。因此,除了%以外,格式字符是格式說明符中必須要有的,它控制輸出列表里相應輸出項數(shù)據(jù)的輸出類型。表3-2給出了常用的格式字符及含義。注意:有符號整數(shù)按無符號格式將輸出其補碼;無符號整數(shù)按有符號格式將作為補碼輸出其數(shù)。格式說明符printf函數(shù)常用類型格式字符表格式字符格式字符含義d或i表示以十進制形式輸出一個帶符號的整數(shù)o表示以八進制形式輸出一個無符號的整數(shù)X,x表示以十六進制形式輸出一個無符號的整數(shù)u表示以十進制形式輸出一個無符號的整數(shù)f表示以小數(shù)形式輸出帶符號的實數(shù)(包括單、雙精度)E,e表示以指數(shù)形式輸出帶符號的實數(shù)G,g表示選擇%f或%e格式輸出實數(shù)(選擇占寬度較小的一種格式輸出)c表示輸出一個單字符s表示輸出一個字符串注:大寫字母表示輸出中的字母為大寫格式說明符各項的意義如下圖所示。[整數(shù)1.整數(shù)2]:整數(shù)1控制輸出長度(域?qū)?,整數(shù)2對不同格式符有不同含義,具體作用見上圖。1、兩者缺省情況下:對整數(shù)和字符串按實際字符數(shù)輸出;

(VC中)對實數(shù)(float和double):①小數(shù)型:整數(shù)部分原樣輸出,默認輸出6位小數(shù),多余小數(shù)舍入處理。②指數(shù)型:正數(shù)默認輸出1位整數(shù)、小數(shù)點、6位小數(shù)、4位指數(shù)(e或E、+或―號及3位整數(shù))共13個字符(負數(shù)12個字符)。2、有整數(shù)1無整數(shù)2:默認輸出(整數(shù)、字符串全部;實數(shù)同上)3、無整數(shù)1有整數(shù)2:按上圖說明輸出(實數(shù)整數(shù)部分全部輸出)【說明】4、域?qū)捛闆r(有整數(shù)1,有或無整數(shù)2)①指定域?qū)挷蛔?,按需增加域?qū)?。②指定域?qū)捀挥啵喝笔?―"右對齊:無"0"控制:前加空格;有"0"控制:數(shù)值型前加0填齊;其它類型前加空格。有"―"控制左對齊,按域?qū)捄竺婕涌崭瘛?/p>

[長度修正l]:長度修正l可與d、i、o、x、X、u、f、e、E、g、G配合使用,long型整數(shù)在基本整數(shù)范圍內(nèi)、double型實數(shù)在float型實數(shù)范圍內(nèi)可以不加l輸出,否則,必須加長度修正l才能正常輸出。【說明】【注意】(1)實數(shù)精度(有效數(shù)字)由輸出項類型控制(float7位double16位),對float型輸出項用%lf格式不能增加精度;增大“整數(shù)2”可增加實數(shù)輸出的小數(shù)位數(shù),但不能增加精度。(2)輸出項從右向左計算后,按格式說明的順序、類型和要求對應輸出。格式說明和輸出項的個數(shù)類型應相同,如不匹配系統(tǒng)不能正確輸出①格式說明的個數(shù)少于輸出項個數(shù),多余的輸出項將不輸出;②格式說明的個數(shù)多于輸出項個數(shù),多余的格式說明將輸出隨機的值。③整型數(shù)據(jù)按%f輸出或者實型數(shù)據(jù)按%d輸出,均出現(xiàn)輸出錯誤結果。(3)格式字符除X(表示輸出的十六進制數(shù)用大寫字母輸出)、E(表示輸出的指數(shù)e用大寫字母E輸出)、G(表示若選用指數(shù)形式輸出,則用大寫字母E輸出)外,必須是小寫字母。如%d不能寫成%D。(4)若想輸出字符“%”,則在格式字符串中用連續(xù)兩個%表示。如:printf(“%f%%”,1.0/4);則輸出:0.250000%【注意】#include<stdio.h>main(){

int

a,b,c;a=123;b=456;c=a+b;

printf("a+b=%d+%d=%d\n",a,b,c);

printf(“a+b=%hd+%hd=%hd\n”,a,b,c);

printf("a+b=%2d+%2d=%5d\n",a,b,c);

printf("a+b=%02d+%02d=%05d\n",a,b,c);}【例3-2】分析下面程序運行結果#include<stdio.h>main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“a=%d,%o,%x,%u\n”,a,a,a,a);}【例3-3】無符號數(shù)據(jù)的輸出

#include<stdio.h>main(){floatx,y,z;x=123.234;y=0.000345;z=-98.567;

printf("x=%.4f,x=%.2f,x=%+e\n",x,x,x);

printf("y=%f,y=%8.4f,y=%10.3e\n",y,y,y);

printf("z=%+f,z=%+e,z=%+g\n",z,z,z);}【例3-4】分析下面程序運行結果#include<stdio.h>main(){doublex,y,z;x=123.234;y=-0.000345;z=-98.567;

printf(“x=%lf,x=%.4lf,x=%2lf,x=%+e\n”,x,x,x,x);

printf("y=%lf,y=%+lf,y=%le\n",y,y,y);

printf("z=%f\n",z);}【例3-5】分析下面程序運行結果#include<stdio.h>main(){

printf("\n%c",'a');/*輸出單個字符*/

printf("\n%s","abc");/*輸出一個字符串*/}【例3-6】分析下面程序運行結果3.3.2格式化輸入函數(shù)scanfscanf()函數(shù)的功能是從鍵盤上將數(shù)據(jù)按用戶指定的格式輸入并賦給指定變量。1.scanf()函數(shù)調(diào)用形式

scanf(格式控制字符串,地址列表);格式控制字符串的定義與使用方法和printf函數(shù)相似,但不能顯示非格式字符串,即不能顯示提示字符串。地址列表是要賦值的各變量地址,地址是由地址運算符“&”后跟變量名組成,如&x表示變量x的地址。

格式說明符以%開始,后面跟一個格式符,中間可以有若干個附加字符,格式字符串一般形式為:

%[*][輸入數(shù)據(jù)寬度m][長度]類型其中:[]:表示可選項*:表示輸入的數(shù)值不賦給相應的變量,即跳過該數(shù)據(jù)不讀。[輸入數(shù)據(jù)寬度m]:表示按十進制正整數(shù)m的寬度輸入數(shù)據(jù)。[長度]:長度格式符為l和h,l表示輸入長整型數(shù)據(jù)或雙精度實型數(shù)據(jù);h表示輸入短整型數(shù)據(jù)。類型:是格式說明符中必須要有的,其格式符的意義與printf函數(shù)基本相同,具體如表3-3所示。2.格式說明符表3-3

scanf函數(shù)常用類型格式符表格式字符格式字符含義d(i)表示以十進制形式輸入一個整數(shù)o表示以八進制形式輸入一個整數(shù)x(X)表示以十六進制形式輸入一個整數(shù)u表示以十進制形式輸入一個無符號的整數(shù)f或e(E)表示輸入一個實數(shù),可以是小數(shù)形式或指數(shù)形式g(G)與f或e的作用相同c表示輸入一個字符s表示輸入一個字符串【注意】(1)scanf函數(shù)中的“格式控制字符串”后面應該是變量的地址,而不應是變量名。例如輸入語句scanf(“%d,%d”,a,b);是錯誤的,&不能少。(2)輸入數(shù)據(jù)時不能規(guī)定數(shù)據(jù)的精度。如scanf("%8.2f",&a);是不合法的。(3)在“格式控制字符串”中除了格式說明符外,還有其他字符,則在輸入數(shù)據(jù)時在對應位置上應輸入與這些字符相同的字符。例如

scanf("a=%d,b=%d",&a,&b);則輸入時應輸入:a=12,b=-2↙其他任何輸入形式都不正確。例3-7注意(4)輸入數(shù)據(jù)時,遇以下情況認為該數(shù)據(jù)輸入結束: ①按指定的寬度結束; ②遇空格,或“回車”鍵,或“Tab”鍵; ③

遇非法輸入。(5)在用“%c”格式輸入字符時,所有輸入的字符(包括空格字符和“轉(zhuǎn)義字符”)都作為有效字符。(6)當輸入的數(shù)據(jù)與輸出的類型不一樣時,雖然編譯沒有提示出錯,但結果將不正確。/*EX3-8.C*/#include<stdio.h>main(){

inta,b,c;scanf("%3d%3d%4d",&a,&b,&c);/*按長度m進行輸入*/

printf("\na=%d,b=%d,c=%d\n",a,b,c);}【例3-8】分析下面程序/*EX3-9.C*/#include<stdio.h>main(){doublea,b,c;

scanf("%lf,%lf",&a,&b);/*按雙精度進行輸入*/c=a*b;

printf("\na*b=%lf*%lf=%le\n",a,b,c);}【例3-9】分析下面程序/*EX3-10.C*/#include<stdio.h>main(){charch1,ch2;scanf("%c%c",&ch1,&ch2);printf("%c%c\n",ch1,ch2);

}【例3-10】閱讀下面程序/*EX3-11.C*/#include<stdio.h>main(){

intx,y;scanf("%2d%*3d%4d",&x,&y);/*注意%*3d的作用*/

printf("\nx=%d,y=%d\n",x,y);}【例3-11】分析下面程序#include<stdio.h>main(){

inta;

scanf(“%d”,&a);/*輸入輸出類型不一致*/

printf("\na=%ld\n",a);}【例3-12】分析下面程序3.3.3字符數(shù)據(jù)的輸入與輸出C語言為字符定義了兩個最基本的函數(shù):字符輸入函數(shù)getchar和字符輸出函數(shù)putchar。在使用這兩個函數(shù)時,程序的頭部一定要加上文件包含命令:

#include<stdio.h>1.字符輸入函數(shù)getchar()getchar()的功能是從標準設備(鍵盤)上讀入一個字符。其一般調(diào)用形式:getchar();

語句ch=getchar()和scanf(“%c”,&ch);功能相同#include<stdio.h>main(){charc1,c2;c1=getchar();/*從鍵盤上接收一個字符賦給字符變量c1*/c2=getchar();/*和scanf(“%c”,&c2)等價*/printf("%c,%c\n",c1,c2);}【例3-13】字符輸入函數(shù)的使用2.字符輸出函數(shù)putchar()字符輸出函數(shù)putchar()的功能是向標準輸出設備(顯示器)輸出一個字符。其一般調(diào)用形式:

putchar(c);其中:c是參數(shù),它可以是整型或字符型變量,也可以是整型或字符型常量。當是整型量時,輸出以該數(shù)值作為ASCII碼所對應的字符;當是字符型量時,直接輸出字符常量。

語名putchar(c)和printf(“%c”,c)功能相同/*EX3-14.C*/#include<stdio.h>main(){

charx,y,z;x='a';y='+';z='b';putchar(x);putchar(y);putchar(z);;putchar('\132');putchar('\n');printf(“%c%c%c\132\n”,x,y,z);}【例3-14】字符輸出函數(shù)的使用【例3-15】從鍵盤上輸入兩個整數(shù)放入變量a,b中,編程將這兩個變量中的數(shù)據(jù)交換?!痉治觥績蓚€數(shù)據(jù)交換,不能直接寫成a=b;b=a;,因為當執(zhí)行a=b;后,變量a中的原值就被“沖”掉了,而與變量b中的值相等,因此不能實現(xiàn)交換。正確的做法是另定義一個變量(假設是c)作為暫存單元,在執(zhí)行a=b;之前,先將變量a的值放入c中保存起來,然后執(zhí)行a=b;,最后再執(zhí)行b=c;,由于c中保存的是a的值,這樣就將原來a的值賦給了b,從而實現(xiàn)了兩個變量中的數(shù)據(jù)交換。3.4程序舉例程序#include<stdio.h>main(){

inta,b,c;a=3;b=5;c=a;a=b;b=c;

printf("a=%d,b=%d\n",a,b);}

35a3c①②③b【例3-16】從鍵盤上輸入一個英文小寫字母,編程輸出該字母所對應的ASCII碼和所對應的大寫字母【分析】在ASCII字符集中,大寫字母A~Z是連續(xù)的(ASCII值從65~90),小寫字母a~z也是連續(xù)的(ASCII值從97~122)。因此每對字母的ASCII碼值差是相同的,都是32,即'a'-'A'、'b'-'B'、'c'-'C'、…、'z'-'Z'都是32。所以將小寫字母的ASCII碼值減去32,則得到的是所對應的大寫字母ASCII碼值。同理,將大寫字母的ASCII碼值加上32,則得到的是所對應的小寫字母ASCII碼值。程序#include<stdio.h>main(){charc1,c2;c1=getchar();/*從鍵盤獲得一個小寫字母*/c2=c1-32;/*將小寫字母轉(zhuǎn)化為大寫字母*/printf("%d,%c\n",c1,c1);putchar(c2);}

#include<stdio.h>#include<math.h>main(){floata,b,c,s,area;

scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("\na=%.2f,b=%.2f,c=%.2f\n",a,b,c);

printf("\narea=%.3f\n",area);}【例3-17】輸入三角形的三條邊,編程求該三角形的面積【例3-18】編程求解方程#include<stdio.h>#include<math.h>main(){floata,b,c,d,x1,x2;a=3;b=-5;c=-7;d=b*b-4*a*c;x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf("x1=%.4f,x2=%.4f\n",x1,x2);}【例3-19】分析下面程序的運行結果#include<stdio.h>main(){intx=1,y=5;

printf("x=%%d,y=%%d",x,y);}

【分析】本程序格式控制字符串中,有兩個連續(xù)的%%。前面已經(jīng)講過,兩個連續(xù)的%%表示輸出一個%,因此變量x,y沒有對應的輸出格式,只能輸出雙引號中的字符?!纠?-20】分析下面程序的運行結果#include<stdio.h>main(){inta,b;a=0x41;b=++a;

printf("%d,%d\n",a--,--b);

printf("%c,%c\n",++a,b++);}

本章介紹了順序程序結構、賦值語句、基本的輸入/輸出函數(shù)。重點講解了以下幾個方面的內(nèi)容:1.scanf、printf、getchar、putchar四個函數(shù)的使用:(1)scanf和getchar都是輸入函數(shù),其功能是接收鍵盤上輸入的數(shù)據(jù)。但scanf函數(shù)可以按指定的格式輸入任何類型的數(shù)據(jù),而getchar函數(shù)只能接收一個字符。(2)printf和putchar都是輸出函數(shù),其功能是向屏幕(顯示器)輸出數(shù)據(jù)。但printf函數(shù)可以按指定的格式輸出任何類型的數(shù)據(jù),而putchar函數(shù)只能輸出一個字符。(3)使用scanf函數(shù)或printf函數(shù)可以在程序中不包含頭文件stdio.h,而使用getc

溫馨提示

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

評論

0/150

提交評論