?? 4.txt
字號:
4 最簡單的C程序設計—順序程序設計 1
4.1 C語句概述 1
4.2 賦值語句 3
4.3 數據輸入輸出的概念及在C語言中的實現 4
4.4 字符數據的輸入輸出 4
4.4.1 putchar 函數(字符輸出函數) 4
4.4.2 getchar函數(鍵盤輸入函數) 5
4.5 格式輸入與輸出 5
4.5.1 printf函數(格式輸出函數) 5
4.5.2 scanf函數(格式輸入函數) 8
4.6 順序結構程序設計舉例 12
4 最簡單的C程序設計—順序程序設計
從程序流程的角度來看,程序可以分為三種基本結構, 即順序結構、分支結構、循環結構。 這三種基本結構可以組成所有的各種復雜程序。C語言提供了多種語句來實現這些程序結構。 本章介紹這些基本語句及其在順序結構中的應用,使讀者對C程序有一個初步的認識, 為后面各章的學習打下基礎。
4.1 C語句概述
C程序的結構:
C程序的執行部分是由語句組成的。 程序的功能也是由執行語句實現的。
C語句可分為以下五類:
1) 表達式語句
2) 函數調用語句
3) 控制語句
4) 復合語句
5) 空語句
1. 表達式語句:表達式語句由表達式加上分號“;”組成。
其一般形式為:
表達式;
執行表達式語句就是計算表達式的值。
例如:
x=y+z; 賦值語句;
y+z; 加法運算語句,但計算結果不能保留,無實際意義;
i++; 自增1語句,i值增1。
2. 函數調用語句:由函數名、實際參數加上分號“;”組成。
其一般形式為:
函數名(實際參數表);
執行函數語句就是調用函數體并把實際參數賦予函數定義中的形式參數,然后執行被調函數體中的語句,求取函數值 (在后面函數中再詳細介紹) 。
例如:
printf("C Program");調用庫函數,輸出字符串。
3. 控制語句:控制語句用于控制程序的流程, 以實現程序的各種結構方式。它們由特定的語句定義符組成。C語言有九種控制語句。 可分成以下三類:
1) 條件判斷語句:if語句、switch語句;
2) 循環執行語句:do while語句、while語句、for語句;
3) 轉向語句:break語句、goto語句、continue語句、return語句。
4. 復合語句:把多個語句用括號{}括起來組成的一個語句稱復合語句。
在程序中應把復合語句看成是單條語句,而不是多條語句。
例如:
{ x=y+z;
a=b+c;
printf(“%d%d”,x,a);
}
是一條復合語句。
復合語句內的各條語句都必須以分號“;”結尾,在括號“}”外不能加分號。
5. 空語句:只有分號“;”組成的語句稱為空語句。空語句是什么也不執行的語句。在程序中空語句可用來作空循環體。
例如
while(getchar()!='\n')
;
本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。
這里的循環體為空語句。
4.2 賦值語句
賦值語句是由賦值表達式再加上分號構成的表達式語句。
其一般形式為:
變量=表達式;
賦值語句的功能和特點都與賦值表達式相同。 它是程序中使用最多的語句之一。
在賦值語句的使用中需要注意以下幾點:
1. 由于在賦值符“=”右邊的表達式也可以又是一個賦值表達式,
因此,下述形式
變量=(變量=表達式);
是成立的,從而形成嵌套的情形。
其展開之后的一般形式為:
變量=變量=…=表達式;
例如:
a=b=c=d=e=5;
按照賦值運算符的右接合性,因此實際上等效于:
e=5;
d=e;
c=d;
b=c;
a=b;
2. 注意在變量說明中給變量賦初值和賦值語句的區別。
給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結尾。
例如:
int a=5,b,c;
3. 在變量說明中,不允許連續給多個變量賦初值。
如下述說明是錯誤的:
int a=b=c=5
必須寫為
int a=5,b=5,c=5;
而賦值語句允許連續賦值。
4. 注意賦值表達式和賦值語句的區別。
賦值表達式是一種表達式,它可以出現在任何允許表達式出現的地方,而賦值語句則不能。
下述語句是合法的:
if((x=y+5)>0) z=x;
語句的功能是,若表達式x=y+5大于0則z=x。
下述語句是非法的:
if((x=y+5;)>0) z=x;
因為x=y+5;是語句,不能出現在表達式中。
4.3 數據輸入輸出的概念及在C語言中的實現
1) 所謂輸入輸出是以計算機為主體而言的。
2) 本章介紹的是向標準輸出設備顯示器輸出數據的語句。
3) 在C語言中,所有的數據輸入/輸出都是由庫函數完成的。 因此都是函數語句。
4) 在使用C語言庫函數時,要用預編譯命令
#include
將有關“頭文件”包括到源文件中。
使用標準輸入輸出庫函數時要用到 “stdio.h”文件,因此源文件開頭應有以下預編譯命令:
#include< stdio.h >
或
#include ”stdio.h”
stdio是standard input &outupt的意思。
5) 考慮到printf和scanf函數使用頻繁,系統允許在使用這兩個函數時可不加
#include< stdio.h >
或
#include ”stdio.h”
4.4 字符數據的輸入輸出
4.4.1 putchar 函數(字符輸出函數)
putchar 函數是字符輸出函數, 其功能是在顯示器上輸出單個字符。
其一般形式為:
putchar(字符變量)
例如:
putchar('A'); (輸出大寫字母A)
putchar(x); (輸出字符變量x的值)
putchar(‘\101’); (也是輸出字符A)
putchar('\n'); (換行)
對控制字符則執行控制功能,不在屏幕上顯示。
使用本函數前必須要用文件包含命令:
#include<stdio.h>
或
#include “stdio.h”
【例4.1】輸出單個字符。
#include<stdio.h>
main(){
char a='B',b='o',c='k';
putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');
putchar(a);putchar(b);
putchar('\n');
putchar(b);putchar(c);
}
4.4.2 getchar函數(鍵盤輸入函數)
getchar函數的功能是從鍵盤上輸入一個字符。
其一般形式為:
getchar();
通常把輸入的字符賦予一個字符變量,構成賦值語句,如:
char c;
c=getchar();
【例4.2】輸入單個字符。
#include<stdio.h>
void main(){
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
使用getchar函數還應注意幾個問題:
1) getchar函數只能接受單個字符,輸入數字也按字符處理。輸入多于一個字符時,只接收第一個字符。
2) 使用本函數前必須包含文件“stdio.h”。
3) 在TC屏幕下運行含本函數程序時,將退出TC 屏幕進入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。
4) 程序最后兩行可用下面兩行的任意一行代替:
putchar(getchar());
printf(“%c”,getchar());
4.5 格式輸入與輸出
4.5.1 printf函數(格式輸出函數)
printf函數稱為格式輸出函數,其關鍵字最末一個字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數據顯示到顯示器屏幕上。在前面的例題中我們已多次使用過這個函數。
1. printf函數調用的一般形式
printf函數是一個標準庫函數,它的函數原型在頭文件“stdio.h”中。但作為一個特例,不要求在使用 printf 函數之前必須包含stdio.h文件。
printf函數調用的一般形式為:
printf(“格式控制字符串”,輸出表列)
其中格式控制字符串用于指定輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數據的類型、形式、長度、小數位數等。如:
“%d”表示按十進制整型輸出;
“%ld”表示按十進制長整型輸出;
“%c”表示按字符型輸出等。
非格式字符串在輸出時原樣照印,在顯示中起提示作用。
輸出表列中給出了各個輸出項,要求格式字符串和各輸出項在數量和類型上應該一一對應。
【例4.3】
main()
{
int a=88,b=89;
printf("%d %d\n",a,b);
printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);
printf("a=%d,b=%d",a,b);
}
本例中四次輸出了a,b的值,但由于格式控制串不同,輸出的結果也不相同。第四行的輸出語句格式控制串中,兩格式串%d 之間加了一個空格(非格式字符),所以輸出的a,b值之間有一個空格。第五行的printf語句格式控制串中加入的是非格式字符逗號, 因此輸出
的a,b值之間加了一個逗號。第六行的格式串要求按字符型輸出 a,b值。第七行中為了提示輸出結果又增加了非格式字符串。
2. 格式字符串
在Turbo C中格式字符串的一般形式為:
[標志][輸出最小寬度][.精度][長度]類型
其中方括號[]中的項為可選項。
各項的意義介紹如下:
1) 類型:類型字符用以表示輸出數據的類型,其格式符和意義如下表所示:
格式字符 意 義
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴0)
x,X 以十六進制形式輸出無符號整數(不輸出前綴Ox)
u 以十進制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e,E 以指數形式輸出單、雙精度實數
g,G 以%f或%e中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字符
s 輸出字符串
2) 標志:標志字符為-、+、#、空格四種,其意義下表所示:
標 志 意 義
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)
空格 輸出值為正時冠以空格,為負時冠以負號
# 對c,s,d,u類無影響;對o類,在輸出時加前綴o;對x類,在輸出時加前綴0x;對e,g,f 類當結果有小數時才給出小數點
3) 輸出最小寬度:用十進制整數來表示輸出的最少位數。若實際位數多于定義的寬度,則按實際位數輸出,若實際位數少于定義的寬度則補以空格或0。
4) 精度:精度格式符以“.”開頭,后跟十進制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字符,則表示輸出字符的個數;若實際位數大于所定義的精度數,則截去超過的部分。
5.長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。
【例4.4】
main()
{
int a=15;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -