一個程式,要能有輸入,才會有趣。
這是電玩遊戲比看電視影片受歡迎的原因。
正是遊戲有輸入的機制,可以依照玩家的輸入,作出相對應反應。
程式撰寫者可以在程式中,直接設定數值給變數;
也可以設計在執行時,讓使用者輸入來決定變數的數值,
這種設計是為輸入。
在一般標準(ANSI) C 函式裡,
提供了一個定義輸出入函式的檔 stdio.h
( Stan dard Input/ Output ),
專門處理鍵盤、螢幕、檔案和印表機的輸出入,
讓使用者以呼叫方式輕鬆使用,不必去辛苦撰寫與溝通硬體的低階工作。
- C語言常用輸入/輸出函式如下:
- 輸出入函式,如: scanf( )、printf(
)
- 單一字元輸出入函式,如:
getchar( )、putchar( )
- 字串輸出入函式,如: fgets( )、puts(
)
這先以簡單的scanf()、printf(),帶同學們來認識輸出入的用法!
- printf() 輸出函式
- 語法格式:
printf("欲顯示的字串");
printf("欲顯示的字串 或 對應變數型態之參數",
變數1, 變數2, ...);
- printf 變數輸出對應參數表:
資料型態與printf對應參數表
(使用gcc2.95.3版編譯所示)
資料型態 |
長度 |
數值範圍 |
精準
位數 |
對應參數 |
char |
1byte |
-128
~ +127 |
|
%c |
int |
4bytes |
-21億多 ~ 21億多 |
|
%d |
long
int |
4bytes |
-21億
~ 21億 |
|
%d |
unsigned
int |
4bytes |
0 ~
42億 |
|
%u |
long
long
int |
8bytes |
-9.2x1018~9.2x1018 |
|
%lld |
float |
4bytes |
10-38 ~ 10+38 |
7 |
%f |
double |
8bytes |
10-308 ~ 10+308 |
15 |
%lf |
long
double |
12bytes |
10-4932 ~104932 |
19 |
%Lf,
%llf |
轉換參數 |
輸出資料 |
備註 |
%c |
字元 |
char |
%d |
10進位[有號]整數 |
int |
%u |
10進位[正]整數 |
int |
%f |
浮點數 |
float, double |
%e
或 %E |
浮點數(以指數表示) |
float,
double |
%g
或 %G |
浮點數(指數或實數表示)
指數<-4 或
指數>6 %e輸出,
其他以%f輸出. |
float,
double |
%o |
8進位[正]整數 |
int |
%p |
指標 |
|
%s |
字串 |
char[] |
%x
或 %X |
16進位[正]整數 |
int |
- 控制字元
控制字元 |
功能說明 |
備註 |
\a |
噹 (Ring
PC bell) |
|
\b |
後退一格 (back
space) |
[<-] |
\f |
換頁 |
|
\n |
換行 |
[Enter] |
\r |
回此列
開頭 |
[Home] |
\t |
往右跳8空格 (Tab) |
[Tab] |
\, |
印出
' |
|
\" |
印出
" |
|
- 範例1
printf 輸出函式練習:
#include <stdio.h>
main( )
{
int x,z;
float
y;
x=3;
y=170.5;
z=2;
printf(" There are
%d people in my
family!\n",
x );
printf("
My father is %d
cm high and
%d-th
in our family!\n",
y ,
z );
printf(" \n");
}
執行後,結果為何?
請問如何修正對應參數,讓身高可以正確顯示?
- 範例2:
#include <stdio.h>
main( )
{
int x=3;
float y=170.5;
int z=2;
printf(" There are
%d people in my
family!\n",
x );
printf(" I
am %f
cm tall and was the
%d-th
tall in my family!\n",
y ,
z );
printf(" \n");
}
請問輸出結果為何?
請試試將x, y, z值更改,觀察輸出結果。
請試試將 %f 改成%.2f,請問.2的作用。
- scanf() 輸入函式
- 語法格式:(△表示空一格)
scanf("△變數對應
輸入參數列",
&變數1,
&變數2,...);
- 說明:
- 變數對應參數列順序要對應變數串列,且對應參數型態需與變數型態一致。
- 參數串列前,可空一格,會使 scanf 讀取時忽略空白的字元。
- 變數前需加上 & 符號,scanf 定義使用 & 符號來取變數的位址。
- 雙引號內不能加入字串。
例如:
- 常用的對應輸出參數(與printf相似),如下表:
轉換參數 |
輸入資料 |
資料型態 |
%c |
字元 |
char |
%d |
10進位[有號]整數 |
int |
%f |
單精倍浮點數 |
float |
%lf |
雙精倍浮點數 |
double |
%lld |
長長[有號]整數 |
long
long int |
%s |
字串 |
char[] |
%o |
8進位[正]整數 |
int |
%x |
16進位[正]整數 |
int |
- 範例1(單一變數輸入、輸出):
#include <stdio.h>
main( )
{
int x=3.14;
scanf(" %d", &x);
printf("x= %d \n", x);
}
- 執行後,請輸入2.456,觀察結果為何?
- 執行後,請輸入7.213,觀察結果為何?
-
請問,如何讓
x
能正確顯示出小數點以下部分?
-
如果需要提示使用者,程式碼應如何修正?
- 一致性
簡言之,一個變數,由宣告
→ 讀入
→ 計算或使用
→ 輸出,
變數在上述過程中,所使用的資料型態,都必須一致才行。
|
|