1. 程式人生 > 其它 >小甲魚筆記C語言入門(二)——資料的輸入與輸出,putchar(),.getchar,printf,scanf,順序結構

小甲魚筆記C語言入門(二)——資料的輸入與輸出,putchar(),.getchar,printf,scanf,順序結構

技術標籤:C語言入門c語言

一、 C的基本語句

C程式的執行部分是由語句組成的。程式的功能也是由執行語句實現的
C語句課分為以下五類:

  • 表示式語句:由表示式加上分號“;“,其一般形式為:表示式;

  • 函式呼叫語句:由函式名、實際引數加上分號組成。

  • 控制語句:用於控制程式流程,以實現程式的各種結構方法。C語言有九種控制語句。

    • 條件語句:if語句,switch語句
    • 迴圈語句:do while、while、for語句
    • 轉向語句:break語句,goto語句,continue語句,return語句
    • 複合語句:把多個語句用花括號{}組成的一個語句稱為複合語句
  • 空語句:只有分號;組成的語句稱為空語句。

空語句案例,該語句功能為,只要從鍵盤輸入的字元不是回車則重新輸入

while (getchar()!='\n')
	{
		;
	}
}

二、 賦值語句

賦值語句是由賦值表示式再加上分號構成的表示式語句。
其一般形式為:變數=表示式;

賦值語句的功能和特點都與賦值表示式相同。它是程式中用最多的語句之一。
在賦值語句的使用中票要注意以下幾點:

1.由於在賦值符“=”右邊的表示式也可以又是一個賦值表的式,國此,下述形式:

變數=(變數=表示式);
是成立的,從而形成巢狀的情形,
其展開之後的一般形式為:
變數-變數-…=表示式;

2.注意在變數說明中給變數賦初值和賦值語句的區別
結果變數賦初直是變數說明的一部分,賦初值後的變數與其後的其它同類變數之間仍必用逗號間隔,而賦值語句則必用分號結尾。

例如: int a=5, b , c 

3. 在變數說明中,不允許連續結多個變數賦值
如下述說明是錯誤的:

int a = b =c=5必寫為 int a=5,b-5,c=5;

而賦值語句許連續賦值。

4. 注意賦值表示式和賦值語句的區別

賦值表示式是一種表示式,它可以出現在任何允許表示式出現的地方,而賦值語句則不能。

三、 資料的輸入輸出的概念

  • 所謂輸入輸出是以計算機為主體而言的。

  • 在 C 語言中,所有的資料輸入/輸出都是庫函式完成的。此都是函式語句。

  • 在使用 C 語言庫函式時,要用預編譯令# include 將有關“標頭檔案”包括到原始檔中。
    使用標準輸入輸出庫函式時要用到“ stdio . h ”檔案,因比原始檔開頭應有以下預編譯命令:

    include < stdio . h ># include stdio . h " stdio 是 standard input & outupt 的意思

  • 考慮到printf和scanf函式使用頻繁,系統允許在使用這兩個函式時可不加

1. putchar函式(字元輸出函式)

putchar函式是字元輸出函式,其功能是在顯示器上輸出單個字元
其一般形式為:

putchar(字元變數)

使用本函式前必須要用檔案包含命令:#include <stdio.h>

2. getchar函式(鍵盤輸入函式)

getchar函式的功能是從鍵盤上輸入一個字元
其一般形式為:

getchar();

通常把輸入的字元賦予一個字元變數,構成賦值語句。如

char c;
c=getchar();

3. printf函式(格式輸出函式)

print 函式稱為格式輸出函式,其關鍵字最未一個字母f 即為“格式”( format )之意。

其功能是按使用者指定的格式,把指定的資料顯示到顯示器螢幕上

3.1. printf 函式呼叫的一般形式

printf 函式是一個標準庫函式,它的函式原型在標頭檔案“ stdio . h ”中

作為一個特例,不要求在用 printf 函式之前包含 stdio . h 檔案

print 函式呼叫的一般形式為:

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

3.2. 格式控制輸出格式

格式控制字串用於指定輸出格式。

格式控制串可由格式字串和非格式字串兩種組成。

格式字串是以%開頭的字串。在%後面跟有各種格式字元,以說明輸出資料的型別,形式、長度、小數等

格式符含義
%d表示按十進位制整型輸出
%ld表示按十進位制長整型輸出
%c表示按字元型輸出等
%u表示以無正負號十進位制出書
%s表示以字串形式輸出
%e表示以浮點型指數形式輸出
%o表示按八進位制整型輸出

3.3輸出最小寬度

用十制整數來表示輸出的最少位數。若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或 O 。

3.4 精度

精度格式以".”開頭,後跟十制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字元,則表示輸出字元的個數;若實際位數大於所定義的精度數,則截去超過的部分。

3.5 長度

長度格式符為 h,l 兩種, h 表示短整型量輸出,l表示按長整型量輸出。

3.6一個printf和多個printf

void main() {
	int i = 8;
	printf("%d\n%d\n%d\n%d\n%d\n%d\n%d",i,++i,--i,++i,i--,-i++,-i--);
}

輸出結果:88888-7-8

void main() {
	int i = 8;
	printf("%d\n",++i);
	printf("%d\n", --i);
	printf("%d\n", i++);
	printf("%d\n", i--);
	printf("%d\n", -i++);
	printf("%d\n", -i--);
}

輸出結果:9 8 8 9 -8 -9

因為程式執行是以“;“結尾才進行一個賦值。所以第一個語句只比較一條語句,也就是自有向左賦值。從最後一個-i—開始

4. scanf函式(格式輸入函式)

scant 函式稱為格式輸入函式,即使用者指定的格式從鍵盤上數琚輸入到定的變數之中。

4.1. scanf 函式的一般形式 scanf 函式

  • scanf是一個標準庫函式,它的函式原型在標頭檔案“ stdio ”中,與 printf 函,C 語言也允許在使用 scant 函式之之前不必包含 stdio . h 檔案。

  • scanf 函式的一般形式為:

scanf (“格式制字串”,地址表列)
  • 其中,格式制字串的作用與 printf 函式相同,但不能顯示非格式字串,也就是不能顯示提示字串。地地表列中結出各變數的地址。地址是由地址運算子”&”後跟變數名組成的

4.2.&a,&b

分別表示變數a和變數b的地址
這個地址就是編譯系統在記憶體中給 a . b 變數分配的地址。

在 C 語言中.使用了地址這個概念,變數的值和變數的地址這兩個不同的概念區別開來。

  • 變數的地址是 編譯系統分配的,使用者不必關心本身的地址是多少。

  • 變數的地址和變數值的關係如下:

    在賦值表示式中給變數賦值,

: a =567, a 為變數名,567是變數的值,& a 是變數 a 的地址

賦值號左邊是變數名,不能寫地址,而 scanf 函式在本質上也是給變數賦直,但要求寫變數的地址,
如& a 。&是一個取地址運算子,& a 是一個表示式,其功能是求變數的地址

void main() {
	int a, b, c;
	printf("input a b c\n");
	scanf("%d%d%d",&a,&b,&c);
	printf("%d,%d,%d",a,b,c);
}

4.3 “ * “符

用以表示該輸入項,讀入後不賦予相應的變數,即跳過該輸入值

scanf(%d%*d%d”&a,&b);
當輸入為:1 2 3 時,把1賦予a,2被跳過,3賦予b

4.4寬度

用十進位制整數指定輸入的寬度(即字元)

scanf(%5d”,&a);
輸入“12345678 時,只把12345賦予變數a,其餘部分被截去

4.5長度

長度格式符為1和h,1表示輸入長整型資料(如%1d)和雙精度浮點數(如%1f)。
h表示輸入短整型資料。

4.6注意點

  • scan 函式中沒有精度控制
    如: scanf ("%5.2f".&a);是非法的。不能企圖用此語句輸入小數為2位的實數。

  • scanf 中要求結出變數地址,如給出變數名則會出錯

如 scanf ("% d “, a );是非法的,應己改為 scanf (”% d ".& a );才是合法的。

  • 在輸入多個數直資料時,若格式控制串中沒有非格式字元作輸入資料之間的間隔則可用空格,TAB或回車作間隔。

  • C 編譯在碰到空格, TAB ,回車或非法資料(如對“% d "輸入“ I 2A”時, A 即為非法資料)時即認為該資料結束。

  • 在輸入字元資料時,若格式控制串中無非格式字元,則認為所有輸入的字元均為有效字元

scanf(%c%c%c”,&a,&b&c)
當輸入 a b c 時,中間的空格’ ’均會存放進去

所以如果我們需要加空格,只需要在

scanf(%c %c %c”,&a,&b&c)
在每個%c之間加入空格即可,

由此可以引申。我們可以

scanf(%c,%c,%c”,&a&b&c)
去固定的讓使用者去輸入必須每輸入一個數字加一個逗號