文章目錄
一、數據輸入
編寫程序的主要目的就是爲了處理數據。數據從哪裏來?數據的來源有很多種方式,如從磁盤文件中讀取數據、從數據庫中讀取數據、從網頁中抓取數據等,還有一種原始的方式就是從鍵盤輸入數據。
在C語言中,有三個函數可以從鍵盤獲得用戶輸入。
getchar:輸入單個字符,保存到字符變量中。
gets:輸入一行數據,保存到字符串變量中。
scanf:格式化輸入函數,一次可以輸入多個數據,保存到多個變量中。
二、數據輸出
在C語言中,有三個函數可以把數據輸出到屏幕。
putchar:輸出單個字符。
puts:輸出字符串。
printf:格式化輸出函數,可輸出常量、變量等。
三、斷章取義
三十年前,個人電腦還不流行的時候,軟件主要用C語言編寫,包括操作界面,數據的輸入和輸出函數都很重要。現在,數據的輸入和展示由網頁和APP等軟件去完成,C程序主要用於數據處理和網絡通信,程序運行在後臺,沒有操作界面。所以,getchar、gets、scanf這幾個函數幾乎不用。
各位是初學者,出於教學的需要,採用scanf從鍵盤輸入數據,便於演示程序的功能,所以我們只需要學習scanf函數的簡單用法即可,getchar和gets函數無需關注。
C語言的輸入函數已不重要,但輸出函數仍然非常重要。
putchar和puts函數沒什麼用,已經被淡忘,那就忘了吧。
printf函數非常重要,以後我們將深入學習,本章節只討論它的簡單用法。
現在,只剩下scanf和printf函數了。
四、printf輸出
printf函數是格式化輸出函數, 用於向屏幕輸出數據。
printf函數的調用方法是:
printf(格式化字符串,參數列表);
1、輸出描述性的文字
把輸出的文字用雙引號包含起來,文字中的\n表示換行,多個\n可以換多行。
printf("我心匪席,不可卷也,我心匪石,不可轉也。\n");
以上代碼將在屏幕上輸出文字:
我心匪席,不可卷也,我心匪石,不可轉也。
出輸文字之後,再輸出一個換行。
2、輸出整數
輸出整數型常量或變量用%d表示,在參數中列出待輸出的整數常量或變量。
printf("我年齡是%d歲。\n",18);
int age=18;
printf("我年齡是%d歲。\n",age);
3、輸出字符
輸出字符型常量或變量用%c表示,在參數中列出待輸出的字符常量或變量。
printf("我姓別是:%c。\n",'x'); // 姓別:x-男;y-女
char xb='x';
printf("我姓別是:%c。\n",xb);
4、輸出浮點數
輸出的浮點型常量或變量用%lf表示,在參數中列出待輸出的浮點型常量或變量。
printf("我體重是%lf公斤。\n",62.5);
double weight=62.5;
printf("我體重是%lf公斤。\n", weight);
5、輸出字符串
輸出字符串常量或變量用%s表示,在參數中列出待輸出的字符串常量或變量。
printf("我的姓名是%s。\n","西施");
char name[21];
memset(name,0,sizeof(name));
strcpy(name, "西施");
printf("我的姓名是%s。\n",name);
6、輸出多個內容
調用一次printf函數可以輸出多個常量或變量。
int age=18;
char xb='x';
double weight=62.5;
char name[21];
memset(name,0,sizeof(name));
strcpy(name, "西施");
printf("我的姓名是:%s,姓別:%c,年齡:%d歲,體重%lf公斤。\n",name,xb,age,weight);
注意,printf函數第一個參數(格式化字符串)的格式與後面的參數列表(常量或變量的列表)要一一對應,一個蘿蔔一個坑的填進去,不能多,不能少,順序也不能錯,否則會產生意外的結果。
7、示例(book12.c)
/*
* 程序名:book12.c,此程序演示printf函數輸出變量的內容
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>
int main()
{
int age=18;
char xb='y';
double weight=45.5;
char name[21];
memset(name,0,sizeof(name));
strcpy(name,"西施");
printf("我的姓名是:%s,姓別:%c,年齡:%d歲,體重%f公斤。\n",name,xb,age,weight);
return 0;
}
運行效果
五、scanf輸入
scanf函數是格式化輸入函數,用於接受從鍵盤輸入的數據,用戶輸入數據完成後,按回車鍵(Enter)結束輸入。
scanf函數的調用方法是:
scanf(格式化字符串,參數列表);
注意,不要在scanf的格式化字符串的最後加\n。
1、輸入整數
輸入整數的格式用%d表示,在參數中列出整數型變量名,用於保存輸入的數據。
在輸入數據之前,一般要先輸出一句話提示用戶。下同。
int age=0;
printf("請輸入您的年齡:"); // 提示文字不要換行,讓用戶在後面輸入,下同。
scanf("%d",&age); // 在變量名前要加符號&,先不要問原因,以後再介紹。
2、輸入字符
輸入字符的格式用%c表示,在參數中列出字符型變量名,用於保存輸入的數據。
char xb=0;
printf("請輸入您姓別:");
scanf("%c",&xb); // 在變量名前要加符號&
3、輸入浮點數
輸入浮點數的格式用%lf表示,在參數中列出浮點型變量名,用於保存輸入的數據。
double weight=62.5;
printf("請輸入您體重:");
scanf("%lf",&weight); // 在變量名前要加符號&。
4、輸入字符串
輸入字符串的格式用%s表示,在參數中列出字符串變量名,用於保存輸入的數據。
char name[21];
memset(name,0,sizeof(name));
printf("請輸入您姓名:");
scanf("%s",name); // 注意了,字符串變量名前可以不加符號&,不要問原因,以後再介紹。
5、輸入多個內容
調用一次scanf函數可以輸入多個數據,全部的數據輸入完成後按回車鍵結束輸入。
int age=0;
char xb=0;
double weight=0;
char name[21];
memset(name,0,sizeof(name));
printf("請輸入您的姓名、姓別(x-男;y-女),年齡和體重,中間用空格分隔:");
scanf("%s %c %d %lf",name,&xb,&age,&weight); // 只有name變量前沒加&。
scanf函數第一個參數(格式化字符串)的格式與後面的參數列表(變量的列表)要一一對應,一個蘿蔔一個坑的填進去,不能多,不能少,順序也不能錯,否則會產生意外的結果。
6、示例(book13.c)
/*
* 程序名:book13.c,此程序演示scanf函數輸入數據。
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <string.h>
int main()
{
int age=0;
char xb=0;
double weight=0;
char name[21];
memset(name,0,sizeof(name));
printf("請輸入您的姓名、姓別(x-男;y-女),年齡和體重,中間用空格分隔:");
scanf("%s %c %d %lf",name,&xb,&age,&weight); // 只有name變量前沒加&,其它的都加了。
printf("您的姓名是:%s,姓別:%c,年齡:%d歲,體重%lf公斤。\n",name,xb,age,weight);
return 0;
}
運行效果
六、注意事項
1)本章節只學習scanf和printf函數最簡單的用法。
2)scanf函數只是在C程序基本知識的學習中纔用到,在實際開發中基本上不用。
3)printf不是一個函數,是一系列函數,功能強大,變化很多,應用廣泛,極其重要,以後我們將深入的學習它。
4)scanf函數的變量列表,除了字符串,其它的變量前面都要加&,表示取地址,如果不加,程序編譯不會報錯,但運行時會出現意想不到的後果(1-賦值不成功;2-段錯誤Core dump)。
5)printf函數的變量列表,變量名前都不需要加&。
七、課後作業
編寫示例程序,從鍵盤輸入您喜歡的女(男)神的姓名、性別、年齡、身高(cm)、體重(kg)、和您最喜歡她的身體部位,把輸入的數據存放在變量中,然後在屏幕上把變量的值顯示出來。
要求:
1)姓名用字符串變量存放;
2)性別用一個字符變量存放(x-男,y-女);
3)年齡和身高用整數變量存放;
4)體重用浮點型變量存放;
5)身體部位用字符串存放。
八、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!