C程序中的鍵盤輸入和屏幕輸出都是通過 調用輸入/輸出函數 實現的。
一、數據的格式化 屏幕輸出
函數printf()的一般格式 (有兩種)
(1)第一種:
printf(格式控制字符串);
printf ( “請輸入a的值” );
(2)第二種
printf(格式控制字符串 , 輸出值時參數表);// 就是變量名字
printf(“您輸入的a的值是:%d”, a );
格式控制字符串(format string)是 用雙引號括起來的字符串,也稱 轉換控制字符串,
輸出值參數表可有多個輸出值,也可沒有(只輸出一個字符串時)。
*** 格式控制字符串包括兩部分:
需原樣輸出的普通字符 和 格式轉換說明(Format Specifier) %d %f %c
printf( “您輸入的a的值是:%d”, a );
如表4—2所示,格式轉換說明有%開始,並以轉換字符(Conversion Character)結束,用於指定各輸出值參數的輸出格式。
這里,下面兩條語句的作用是等價的。
printf(“%c”,ch);
putchar(ch);
而下面兩條語句的作用也是等價的。
printf(“\n”);
putchar(‘\n’);
二、數據的格式化鍵盤輸入
(1) 函數scanf( )的一般格式
scanf(格式控制字符串,參數地址表);
scanf (“%d”, &a);
Scanf(“%d %d” , &a , &b)
其中,格式控制字符串是用雙引號括起來的字符串,它包括格式轉換說明符和分隔符兩個部分。
參數地址表是 由若干變量的地址組成的列表, 這些參數之間用 逗號 分隔。
函數scanf( )要求必須指定 用來接收數據的變量的地址,否則數據不能正確讀入指定的內存單元。
必須有 & 符號 ****
- 1. 函數scanf()中的格式修飾符
與prinf()類似,在函數scanf()的%和格式符中間也可插入格式修飾符。
在用函數scanf()輸入數值型數據時,遇到以下幾種情況都認為數據 輸入結束:
(1)遇空格符,回車符,制表符(TAB)
(2)達到輸入域寬;
(3)遇非法字符輸入。
注意,
如果函數scanf( )的格式控制字符串存在 除格式說明符 以外的其他字符,
那么這些字符必須在輸入數據時由 用戶從鍵盤原樣輸入。********
代碼講解:
void main()
{
int a;
printf("請輸入a的值");
scanf("此處是a %d",&a);
printf("你好,你輸入的a的值是%d",a);
}
使用函數scanf()時忘記在 變量前面加上取地址運算符& ,
以指定用來接收數據的變量的地址,
這是一個初學者常犯的錯誤。
三、轉義字符
函數scanf()的格式轉換說明符(如表4-4所示)通常由%開始,並以一個格式字符結束,用於指定各參數的輸入格式。
格式轉換說明 |
用法 |
%d |
輸入十進制整數 |
%c |
輸入一個字符,空白字符(包括空格、回車、制表符)也是有效字符 |
%s |
輸入字符串,遇到空白字符(包括空格、回車、制表符)時,系統認為讀入結束。 |
%f |
輸入實數、以小數或指數形式輸入均可 |
%% |
輸出百分號%% |
常用函數printf( ) 的格式轉換說明
格式轉換說明 |
用法 |
%d |
輸出帶符號的十進制整數,正數的符號省略 |
%c |
輸出一個字符 |
%s |
輸出字符串 |
%f |
以十進制小數形式輸出實數 |
%% |
輸出百分號% |
四、單個字符的輸入/輸出 *****
(多個字符的輸入輸出,需要用到字符數組,這個知識會在C語言精髓里面學習)
- 1. 字符常量
C語言中的
字符常量是用單引號括起來的一個字符。
例如,‘a’是字符常量, 而a則是一個標識符。
再如,‘3’表示一個字符常量,而3則表示一個整數。
C語言中還引入了 另外一種特殊形式的字符常量 轉義字符(Escape Character),
它是以反斜線(\)開頭的字符序列,它有特定的含義,用於描述特定的控制字符,
使用時 同樣要放到一對單引號內。常用的轉義字符如’\n’,’\t’
轉義字符表如下表。
字符 |
含義 |
字符 |
含義 |
‘\n’ |
換行 |
‘\a’ |
響鈴報警提示聲 |
‘\r’ |
回車(不換行) |
‘\“‘ |
一個雙引號 |
‘\0’ |
空字符,通常用做字符串結束標志 |
‘\’’ |
單引號 |
‘\t’ |
水平制表 |
‘\\’ |
一個反斜線 |
‘\v’ |
垂直制表 |
‘\?’ |
問號 |
‘\b’ |
退格 |
‘\ddd’ |
1到3位八進制ASCII碼值所代表的字符 |
‘\f’ |
走紙換頁 |
‘\xhh’ |
1到2位十六進制ASCII碼值所代表的字符 |
與’\n’不同的是的,’\r’則表示回車,但不換行,即將廣播移到當前行的起始位置。
而’\t’為水平制表符,相當於按下TAB鍵。
另外值得注意的是:轉義序列 出現在字符串中時,是按單個字符計數的。
例如,字符串”abc\n“的長度是4而非5 因為字符’’\n’代表1個字符。
例如,字符’A’在內存中存儲的是其ASCII碼65的二進制值,存儲形式與整型數65類似,只是在內存中所占的字節數不同而已。
char型數據占1個字節。
在ASCII碼取值范圍內,對char型數據和int型型數據進行相互轉換不會丟失信息,二者可以進行混合運算。同時,一個char型數據既能以字符型格式輸出,也能以整型格式輸出,以整型格式輸出時就是直接輸出其ASCII碼的十進制值。
- 2. 字符的輸入/輸出
getchar() putchar() 是C標准 函數庫中 專門用於 字符輸入/輸出的函數。
函數putchar( )的作用是把 一個字符 輸出到 屏幕的當前廣播位置。
函數getchar( )的作用是從 系統隱含指定的輸入設備(即鍵盤) 輸入一個字符,
按回車鍵表示輸入結束, 讀入的字符會自動被回顯到屏幕上。
即小寫英文字母的ASCII碼值比相應的大寫英文字母的ASCII碼值大32,
注意,函數getchar()沒有參數 , 函數的返回值就是從終端鍵盤讀入的字符。
函數putchar()的參數就是待輸出的字符,這個字符既可以是可打印字符,也可以是轉義字符。
查看下方代碼,找出代碼輸出的是什么?
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i,g,s,b,q,x,y=0,sum=0;//i是一個5000一下的自然 for (i=1000;i<+5000;i++) { g=i%10; s=i%100/10; b=i%1000/100; q=i/1000; x=q+b;//千位與百位之和 if(x==s+g&&x==10*(g-q)) { y=y+1; }} printf("共有符合條件的數%d個。\n",y); printf("分別為:\n"); for (i=1000;i<+5000;i++) { g=i%10; s=i%100/10; b=i%1000/100; q=i/1000; x=q+b;//千位與百位之和 if(x==s+g&&x==10*(g-q)){ printf("%d\t",i); sum+=i; } } printf("\n其和為:%d",sum); }