版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第3章順序結(jié)構(gòu)程序設計3.1C語言語句概述3.2數(shù)據(jù)輸入與輸出3.3順序結(jié)構(gòu)程序設計舉例順序結(jié)構(gòu)是結(jié)構(gòu)化程序設計的3種基本結(jié)構(gòu)之一,是最簡單、最常見的一種程序結(jié)構(gòu)。
順序結(jié)構(gòu)程序通常由3部分組成:數(shù)據(jù)的輸入、數(shù)據(jù)的處理和數(shù)據(jù)的輸出。
●數(shù)據(jù)的輸入是指把已知的數(shù)據(jù)(即計算機要處理的原始數(shù)據(jù))輸入到計算機中。
●數(shù)據(jù)的處理是指對輸入的數(shù)據(jù),依據(jù)某種算法進行相應的運算,得到問題的答案。
●數(shù)據(jù)的輸出是指把得到的答案以某種方式在輸出設備上輸出。
在C語言程序中,無論是數(shù)據(jù)的描述,還是操作的描述,都是以語句的形式表現(xiàn)出來的,程序的功能也是靠語句的執(zhí)行來實現(xiàn)的。
C語言語句共分為4類:簡單語句、復合語句、流程控制語句和空語句。3.1C語言語句概述3.1.1簡單語句
簡單語句包括變量定義語句、外部變量聲明語句、函數(shù)聲明語句和表達式語句。
1.變量定義語句
變量定義語句用來定義變量,也就是為變量分配存儲空間,使其能夠存儲相應的值,以便變量能在程序中使用。
變量定義語句的一般形式為
類型名變量名1[,變量名2,…,變量名n];
例如:
inta; /*定義a為整型變量。*/
longx,y; /*定義x、y為長整型變量。*/
unsignedp,q; /*定義p、q為無符號整型變量。*/
floatx,y,z; /*定義x、y、z為實型變量。*/
doublea,b,c; /*定義a、b、c為雙精度實型變量。*/
charch1,ch2; /*定義ch1、ch2為字符型變量。*/定義變量時,應注意以下幾點:
(1)允許在一個類型標識符后說明多個相同類型的變量,各變量名之間用逗號分隔。
(2)類型說明符與變量名之間至少用一個空格隔開。
(3)最后一個變量名之后必須以“;”結(jié)尾。
(4)變量定義必須放在變量使用之前,一般放在函數(shù)體的開頭部分。
(5)在同一程序中,變量不允許重復定義。
2.外部變量聲明語句
外部變量聲明語句用來擴展外部變量的作用域。
外部變量聲明語句的一般形式為
extern類型名變量名1[,變量名2,…,變量名n];
有關(guān)外部變量聲明語句的詳細內(nèi)容見后面章節(jié)。
3.函數(shù)聲明語句
函數(shù)聲明語句用來向編譯系統(tǒng)聲明將要調(diào)用此函數(shù),并將此函數(shù)的相關(guān)信息(函數(shù)名、函數(shù)類型、參數(shù)個數(shù)、參數(shù)類型)通知編譯系統(tǒng)。
函數(shù)聲明語句的一般形式為
類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,…,參數(shù)類型n);
或
類型名函數(shù)名(參數(shù)類型1參數(shù)名1,參數(shù)類型2參數(shù)名2,…,參數(shù)類型n參數(shù)名n);
有關(guān)函數(shù)聲明語句的詳細內(nèi)容見后面章節(jié)。
4.表達式語句
表達式語句由表達式加上分號組成。
表達式語句的一般形式為
表達式;
表達式語句就是在表達式的后面加了一個分號,分為運算符表達式語句和函數(shù)調(diào)用表達式語句。
1)運算符表達式語句
在C語言中,表達式的種類有很多種,只要在每種表達式后面加上分號就是相應的表達式語句。
例如:
2+3*4; /*算術(shù)表達式語句。*/
x+y; /*算術(shù)表達式語句。*/
i++; /*算術(shù)表達式語句。*/
a=2.34; /*賦值表達式語句。*/
a>b&&a<c /*邏輯表達式語句。*/
1+2,3+4,4+5; /*逗號表達式語句。*/在C語言程序中,執(zhí)行運算符表達式就是計算表達式的值,但并不是所有的運算符表達式語句都有意義,如上述的第1個、第2個、第5個、第6個表達式語句,雖然表達式都計算了,表達式的值也有了,但卻沒有保存下來,只有第3個、第4個表達式語句不僅計算了表達式,而且表達式的值也保存下來了。
在C語言中,最常用的表達式語句是賦值表達式語句、自增表達式語句、自減表達式語句,簡稱為賦值語句、自增語句、自減語句。
2)函數(shù)調(diào)用表達式語句
在C語言中,函數(shù)是能夠?qū)崿F(xiàn)一定功能的子程序,而函數(shù)調(diào)用就是通過調(diào)用該函數(shù)來實現(xiàn)這些功能。函數(shù)調(diào)用語句就是在所調(diào)用函數(shù)的后面加一個分號,它由函數(shù)名、實際參數(shù)和整個函數(shù)后面的分號組成。
例如:
sin(x);
printf("Hello,World!");
有關(guān)函數(shù)調(diào)用表達式語句的詳細內(nèi)容見后面章節(jié)。3.1.2復合語句
把多個單一語句用花括號括起來便組成了一個復合語句。復合語句在語法上只相當于一條語句,不要當成多條語句。
復合語句的一般形式為
{
語句1;
語句2;
語句n;
}注意:C語言允許一行寫幾個語句,也允許一個語句寫在幾行上,書寫格式無固定要求,只要計算機能正確識別就可以,但我們一般要求一行寫一個語句,而且整個程序在書寫時采用縮進格式,這便于我們閱讀理解程序。3.1.3流程控制語句
流程控制語句用于控制程序流程,以實現(xiàn)程序的各種控制結(jié)構(gòu),它們由特定的語句標識符組成。
C語言提供的流程控制語句共有9個,根據(jù)它們的功能可以分成3類,分別是:
(1)條件判斷語句:if語句、switch語句。
(2)循環(huán)控制語句:while語句、do…while語句、for語句。
(3)流程轉(zhuǎn)向語句:break語句、continue語句、return語句、goto語句。3.1.4空語句
空語句只有一個分號,即
;
它是什么也不執(zhí)行的語句。在C語言程序中,空語句常用來作轉(zhuǎn)向點和空循環(huán)體。
3.2.1格式輸入/輸出函數(shù)
C語言提供了兩個標準格式輸入/輸出函數(shù):scanf()和printf(),它們可以在標準輸入/輸出設備上以不同的格式讀/寫數(shù)據(jù)。3.2數(shù)據(jù)輸入與輸出
1.格式輸入函數(shù)scanf()
格式輸入函數(shù)scanf()的作用是在終端設備或系統(tǒng)隱含指定的輸入設備上,以指定的格式輸入一個或多個數(shù)據(jù)。
1)格式輸入函數(shù)scanf()的一般形式
格式輸入函數(shù)調(diào)用語句的格式為
scanf("格式控制串",輸入地址列表);說明:
(1)格式控制串。格式控制串是用雙引號括起來的字符串,也稱轉(zhuǎn)換控制字符串,由格式說明符和普通字符組成。
格式說明符由“%”和格式字符組成,如%d、%c、%f,其作用是指定輸入數(shù)據(jù)的格式。
普通字符是指格式說明符以外的字符,這些字符可以有也可以沒有。如果有,則在輸入數(shù)據(jù)時必須在對應的位置上原樣輸入這些字符。
(2)輸入地址列表。輸入地址列表是由若干個地址組成的列表,可以是變量的地址,也可以是字符串或數(shù)組的首地址。例如:若已經(jīng)定義n為整型變量,x為實型變量,則
scanf("%d%f",&n,&x);
該語句的含義就是要求用戶從鍵盤輸入一個整數(shù)和一個實數(shù),分別存儲到整型變量n和實型變量x的地址中。其中,&是地址運算符,&n和&x分別指變量n和x在內(nèi)存中的地址。我們在輸入數(shù)據(jù)時按如下形式輸入:
12356.78↙ /*兩個數(shù)之間用空格分隔,↙表示回車鍵。*/以上的格式輸入函數(shù)如果寫成這樣:
scanf("d=%d,x=%f",&n,&x);
則我們在輸入數(shù)據(jù)時就應該按如下形式輸入:
d=123,x=56.78↙
這是因為格式說明中有普通字符“d=”、“,”、“x=”,必須原樣輸入這些字符,否則,變量n和x無法獲得相應的數(shù)值。
2)常用格式字符和附加格式說明符
格式輸入函數(shù)scanf()中的格式說明符必須以%開始,以一個格式字符結(jié)束,并且要用雙引號括起來。
表3-1列出了格式輸入函數(shù)scanf()中常用的格式說明符及其功能。
表3-1格式輸入函數(shù)scanf()中常用的格式說明符及其功能
表3-2格式輸入函數(shù)scanf()中的附加格式說明符及其功能
3)使用scanf()函數(shù)應注意的事項
(1)用scanf()函數(shù)輸入數(shù)據(jù)時,輸入的數(shù)據(jù)只能是常量,而不能是表達式。
(2)用scanf()函數(shù)輸入數(shù)據(jù)時,最后一定要按回車鍵,否則scanf()函數(shù)接收不到輸入的數(shù)據(jù)。
(3)在格式控制串中,如果格式說明符的類型和輸入項的類型不匹配,系統(tǒng)不會給出錯誤信息,但可能得不到正確的結(jié)果。
(4)對unsigned型變量所需的數(shù)據(jù),可以用%u、%d、%o、%x格式輸入。
(5)輸入實數(shù)時可以是小數(shù)形式,也可以是指數(shù)形式。
(6)輸入字符串時,將字符串存儲到一個字符數(shù)組中或一個字符指針所指地址開始的一段連續(xù)存儲單元中,存儲的字符串以輸入的第一個非空格字符開始,以其后出現(xiàn)的第一個空格字符前的非空格字符結(jié)束,整個字符串以串結(jié)束標志“\0”作為其最后一個字符。
(7)關(guān)于域?qū)挼氖褂谩?/p>
①整型變量。
scanf("%4d%2d",&a,&b);
如果輸入123456↙,則系統(tǒng)自動將1234存儲到整型變量a中,將56存儲到整型變量b中。②字符型變量。
scanf("%4c%d",&ch,&n);
如果輸入ab12345↙,則系統(tǒng)自動將ab12存儲到字符型變量ch中(由于字符型變量ch只能存儲一個字符,所以ch中只存儲了字符a),345存儲到整型變量n中。
③如果實際輸入的數(shù)據(jù)寬度大于格式說明中指定的域?qū)挘瑒t系統(tǒng)自動從左到右按指定的數(shù)據(jù)域?qū)挾冉厝?shù)據(jù),多余的數(shù)據(jù)被丟掉。
scanf("%4d",&a);
如果輸入123456↙,則系統(tǒng)自動將1234存儲到整型變量a中,56被丟掉。
(8)關(guān)于“*”的使用。
①指定域?qū)挕?/p>
scanf("%c%*3d%f",&ch,&x);
如果輸入a12345.6↙,則系統(tǒng)將字符a存儲到字符型變量ch中,將整數(shù)123跳過,將實數(shù)45.6存儲到實型變量x中。
②不指定域?qū)挕?/p>
scanf("%c%*d%f",&ch,&x);
如果輸入:a12345.6↙,則系統(tǒng)將字符a存儲到字符型變量c中,將整數(shù)12345跳過,將實數(shù)0.6存儲到實型變量x中。
2.格式輸出函數(shù)printf()
格式輸出函數(shù)printf()的作用是在終端設備或系統(tǒng)隱含指定的輸出設備上,按格式說明中所指定的格式輸出數(shù)據(jù)。
1)格式輸出函數(shù)printf()的一般形式
格式輸出函數(shù)調(diào)用語句的格式為
printf("格式控制串",輸出項列表);說明:
(1)格式控制串。格式控制串是用雙引號括起來的字符串,由格式說明符、普通字符和轉(zhuǎn)義字符組成。
●格式說明符
格式說明符由“%”和格式字符組成,如%d、%c、%f,其作用是將要輸出的數(shù)據(jù)以指定的格式輸出。
●普通字符
普通字符是指格式說明符以外的字符,這些字符既可以有也可以沒有,如果有,則原樣輸出,其作用是為了提高輸出結(jié)果的可讀性,使人機交流變得更加容易。
●轉(zhuǎn)義字符
轉(zhuǎn)義字符是以“\”開頭的字符序列,其作用是在輸出時產(chǎn)生一個特殊字符或特殊操作。轉(zhuǎn)義字符的詳細內(nèi)容已在第2章字符型常量中做了介紹。
(2)輸出項列表。輸出項列表列出了所要輸出的數(shù)據(jù)。
例如:若有
inta,b,c;
a=12;
b=35;
c=a+b;
則
printf("a=%d,b=%d,a+b=%d\n",a,b,c);
其輸出結(jié)果為
a=12,b=35,a+b=47光標最后在輸出信息的下一行開始位置。其中,“%d”是格式說明符,表示輸出有符號十進制整數(shù);“a=”、“,”、“b=”、“a+b=”都是普通字符,所以原樣輸出;“\n”是轉(zhuǎn)義字符,表示輸出換行。
2)常用格式字符
格式輸出函數(shù)printf()中的格式說明符必須以“%”開始,以一個格式字符結(jié)束,并且要用雙引號括起來。
表3-3格式輸出函數(shù)printf()中常用的格式說明符及其功能
表3-4格式輸出函數(shù)printf()中常用的附加格式說明符及其功能
3)使用printf()函數(shù)應注意的事項
(1)用printf()函數(shù)輸出數(shù)據(jù)時,輸出的數(shù)據(jù)可以是常量、變量、表達式。
(2)用printf()函數(shù)輸出數(shù)據(jù)時,是否換行由格式控制串中是否包含轉(zhuǎn)義字符“\n”來決定,只要在格式控制串中遇到“\n”就換行。
(3)用printf()函數(shù)輸出數(shù)據(jù)時,格式說明符要與輸出項從左到右在個數(shù)和類型上相互匹配。如果不匹配,系統(tǒng)并不報錯,但將導致數(shù)據(jù)不能正確輸出。
(4)%x或%X:使用x時,輸出十六進制數(shù)的a~f時用小寫形式;使用X時,用大寫形式。
(5)
%e或%E:使用e時,指數(shù)以e表示;使用E時,指數(shù)以E表示。
(6)
%g或%G:使用g時,指數(shù)以e表示;使用G時,指數(shù)以E表示。
(7)若要輸出%,則應該在格式控制串中使用兩個“%”,即“%%”。
(8)關(guān)于域?qū)?m.n)的使用。
①輸出實數(shù)。
%m.nf(%-m.nf):指定輸出實數(shù)共占m列,其中整數(shù)部分占m-n-1列,小數(shù)部分占n列,小數(shù)點占1列,如果沒有“-”,域內(nèi)右對齊,否則,域內(nèi)左對齊。當輸出實數(shù)的整數(shù)部分長度小于m-n-1時,如果沒有“-”,則在左端補空格,否則,在右端補空格;當輸出實數(shù)的整數(shù)部分長度大于m-n-1時,輸出不受域?qū)抦的限制。
%mf(%-mf):指定輸出實數(shù)共占m列,其中整數(shù)部分原樣輸出,小數(shù)部分默認占6列,如果沒有“-”,域內(nèi)右對齊,否則,域內(nèi)左對齊。
當最后輸出實數(shù)的長度小于m時,如果沒有“-”,則在左端補空格,否則,在右端補空格;當最后輸出實數(shù)的長度大于m時,輸出不受域?qū)抦的限制。
%.nf(%-.nf):指定輸出實數(shù)的整數(shù)部分原樣輸出,小數(shù)部分占n列,最后輸出的實數(shù)按從左向右的順序輸出。②輸出字符串。
%m.ns(%-m.ns):指定輸出的字符串共占m列,但只輸出字符串中左端n個字符,如果沒有“-”,域內(nèi)右對齊,否則,域內(nèi)左對齊。
%ms(%-ms):指定輸出字符串的全部字符,共占m列,如果沒有“-”,域內(nèi)右對齊,否則,域內(nèi)左對齊。
當最后要輸出的字符串的長度小于m時,如果沒有“-”,則在左端補空格,否則,在右端補空格;當最后要輸出的字符串的長度大于m時,輸出不受域?qū)抦的限制。
當輸出字符串的長度小于n時,輸出字符串的全部字符。
%.ns(%-.ns):指定輸出字符串中左端n個字符,共占n列,最后輸出的字符串按從左向右的順序輸出。3.2.2字符輸入/輸出函數(shù)
C語言提供了兩個字符輸入/輸出函數(shù):getchar()和putchar()。它們可以在標準輸入/輸出設備上輸入和輸出單個字符。
1.字符輸入函數(shù)getchar()
getchar()函數(shù)的作用是從標準輸入設備上接收一個輸入的字符,標準輸入設備一般指
鍵盤。
1)字符輸入函數(shù)getchar()的一般形式
getchar()函數(shù)調(diào)用語句的格式為
getchar();例如:若有charch;,則
ch=getchar();
的含義就是從鍵盤輸入一個字符,并把此字符賦值給字符變量ch。
2)使用字符輸入函數(shù)getchar()的注意事項
(1)用getchar()函數(shù)輸入字符時,getchar()函數(shù)不需要參數(shù),它的返回值為輸入的字符。
(2)用getchar()函數(shù)輸入字符時,鍵入字符后一定要按回車鍵,可以連續(xù)鍵入多個字符再按回車鍵,但getchar()函數(shù)只接受第一個字符,其余的字符被丟掉。
(3)
getchar()函數(shù)的返回值可以作為表達式或表達式的一部分。實際上,ch=getchar();是一個賦值表達式加上分號而形成的賦值語句,getchar()是賦值表達式的一部分。例如:
printf("%c\n",getchar());
其中,getchar()是作為一個表達式來使用的。
(4)
getchar()函數(shù)每次只能輸入一個字符,若要輸入多個字符,必須多次調(diào)用。
2.字符輸出函數(shù)putchar()
putchar()函數(shù)的作用是向從標準輸出設備上輸出一個字符,標準輸出設備一般指顯
示器。
1)字符輸出函數(shù)putchar()的一般形式
putchar()函數(shù)調(diào)用語句的格式為
putchar(表達式);
例如:若有charch='a';,則
putchar(ch);
的含義就是將字符變量ch的值(字符a)在顯示器上輸出。
2)使用字符輸出函數(shù)putchar()的注意事項
(1)
putchar()函數(shù)的參數(shù)可以是字符常量、字符變量,還可以是別的表達式。
例如:
putchar('A'); /*輸出字符A。*/
putchar(ch); /*輸出字符變量ch的值所對應的字符。*/
putchar(ch+1); /*輸出字符變量ch的值加1后所對應的字符。*/
putchar(97); /*輸出ASCII值97所對應的字符,即字符a。*/
(2)
putchar()函數(shù)每次只能輸出一個字符,若要輸出多個字符,必須多次調(diào)用。
(3)
putchar()函數(shù)輸出字符后并不換行,若要換行,可以用putchar('\n')。
【例3.1】
編寫程序,輸入兩個整數(shù),輸出這兩個整數(shù)的和。
#include<stdio.h>
main()
{
intm,n,s;
printf("Inputm,n:");3.3順序結(jié)構(gòu)程序設計舉例
scanf("%d%d",&m,&n);
s=m+n;
printf("%d+%d=%d\n",m,n,s);
}
程序運行結(jié)果:
Inputm,n:123345↙
123+345=468
【例3.2】
編寫程序,輸入一個字符,輸出這個字符的后繼字符。
#include<stdio.h>
main()
{
charch;
printf("Inputch:");
ch=getchar();
ch=ch+1;
putchar(ch);
}程序運行結(jié)果:
Inputch:x↙
y
【例3.3】
編寫程序,輸入兩個整數(shù),交換它們的值后再輸出。
#include<stdio.h>
main()
{
intm,n,t;
printf("Inputm,n:");
scanf("%d%d",&m,&n);
t=m;
m=n;
n=t;
printf("%d,%d\n",m,n);
}
程序運行結(jié)果:
Inputm,n:123789↙
789,123
【例3.4】
編寫程序,輸入攝氏溫度數(shù),然后轉(zhuǎn)換為華氏溫度數(shù)。攝氏溫度與華氏溫度的轉(zhuǎn)換公式為 。
#include<stdio.h>
main()
{
floatc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度新能源汽車研發(fā)與生產(chǎn)合作合同3篇
- 二零二五年度建筑工程質(zhì)量保修及維修服務合同3篇
- 二零二五年度智慧城市公共服務平臺采購詢價合同3篇
- 交易磋商和合同的簽訂的畢業(yè)設計
- 二零二五年度新編基于業(yè)績的無底薪房產(chǎn)顧問合同6篇
- 二零二五年度房屋買賣合同補充協(xié)議(包含房屋買賣合同糾紛調(diào)解)3篇
- 二零二五年度圖書館圖書借閱積分兌換與購銷協(xié)議3篇
- 2025年度協(xié)議離婚訴訟全程指導及法律知識3篇
- 二零二五年度夫妻共有公司經(jīng)營權(quán)離婚協(xié)議3篇
- 綜合課程設計的原則是
- 《小學生良好書寫習慣培養(yǎng)的研究》中期報告
- 大學英語四級詞匯表(下載)
- 2025年四川成都市溫江區(qū)市場監(jiān)督管理局選聘編外專業(yè)技術(shù)人員20人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 手術(shù)室發(fā)生地震應急預案演練
- 初中數(shù)學新課程標準(2024年版)
- 高職院校專業(yè)教師數(shù)字素養(yǎng)架構(gòu)與提升路徑
- 售后服務人員培訓資料課件
- 2024-2030年中國薯條行業(yè)發(fā)展趨勢及投資盈利預測報告
- 生命智能學習通超星期末考試答案章節(jié)答案2024年
- 專項14-因式分解-專題訓練(50道)
- 中華傳統(tǒng)文化之戲曲瑰寶學習通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論