C語言輸入和輸出

一、數據輸入

編寫程序的主要目的就是爲了處理數據。數據從哪裏來?數據的來源有很多種方式,如從磁盤文件中讀取數據、從數據庫中讀取數據、從網頁中抓取數據等,還有一種原始的方式就是從鍵盤輸入數據。

在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)
作者:碼農有道

如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章