C語言自學攻略-輸入與輸出

更新於 發佈於 閱讀時間約 9 分鐘

上一章節中,我們了解了使用 printf() 印出數值,而輸入scanf()的語法其實和輸出有異曲同工之妙。

輸入與輸出格式表

raw-image

一樣,不用死記硬背,基本的熟悉就好,大不了就回來查。

使用範例:

#include <stdio.h>

int main() {
// 各種資料型別的變數
int a;
unsigned int b;
long int c;
long long int d;
unsigned long long int e;
short f;
unsigned short g;
float h;
double i;
long double j;
char k;
char str[100]; // 字元陣列(存放100個字元型態的空間)
int octal;
int hexadecimal;

// 輸入部分
printf("請依序輸入以下數據:\n");
printf("1. int: ");
scanf("%d", &a);
printf("2. unsigned int: ");
scanf("%u", &b);
printf("3. long int: ");
scanf("%ld", &c);
printf("4. long long int: ");
scanf("%lld", &d);
printf("5. unsigned long long int: ");
scanf("%llu", &e);
printf("6. short: ");
scanf("%hd", &f);
printf("7. unsigned short: ");
scanf("%hu", &g);
printf("8. float: ");
scanf("%f", &h);
printf("9. double: ");
scanf("%lf", &i);
printf("10. long double: ");
scanf("%Lf", &j);
printf("11. char: ");
scanf(" %c", &k); // 注意: 字元前加空格是為了避免不小心讀取到上次輸入的換行
printf("12. string: ");
scanf("%s", str);
printf("13. 8進制整數: ");
scanf("%o", &octal);
printf("14. 16進制整數: ");
scanf("%x", &hexadecimal);

// 輸出部分
printf("\n您輸入的數據如下:\n");
printf("1. int: %d\n", a);
printf("2. unsigned int: %u\n", b);
printf("3. long int: %ld\n", c);
printf("4. long long int: %lld\n", d);
printf("5. unsigned long long int: %llu\n", e);
printf("6. short: %hd\n", f);
printf("7. unsigned short: %hu\n", g);
printf("8. float: %f\n", h);
printf("9. double: %f\n", i);
printf("10. long double: %Lf\n", j);
printf("11. char: %c\n", k);
printf("12. string: %s\n", str);
printf("13. 8進制數: %o等於十進制的:%d\n", octal,octal);
printf("14. 16進制數: %x等於十進制的:%d\n", hexadecimal,hexadecimal);

return 0;
}
  • 上面的程式碼中,為什麼要加入&呢?
    • a 是一個變數名,我們要將數值寫入到這個變數裡,需要加入& ,表示取得 a 變數的記憶體位址
    • 其餘的程式碼以此類推。
  • 程式碼中有個例外,即str這個變數。
    • str 是一個 字元陣列,在 C 語言中,陣列變數的名稱本身就是一個指向陣列起始位址的指標。
    • scanf("%s", str); 需要知道 str 在記憶體中的位置時:str 本身就是位址,所以不需要 &
    • 這邊讀者大概了解這個概念即可。

程式碼可以直接運行,請讀者自行測試看看。

補充:科學記號

#include <stdio.h>

int main() {
// 各種資料型別的變數
float sci_num1;
double sci_num2;

// 輸入部分
printf("請輸入以下數據:\n");
printf("1. 輸入測試數值 (float, 例如: 3.14e2、3.14、314): ");
scanf("%e", &sci_num1);
printf("2. 輸入測試數值 (double, 例如: 2.71828E-3、0.271、271): ");
scanf("%le", &sci_num2);

// 輸出部分
printf("\n您輸入的科學記號數據如下:\n");
printf("1. 科學記號 (float, %%e 格式): %e\n", sci_num1);
printf("1. 科學記號 (float, %%E 格式): %E\n", sci_num1);
printf("2. 科學記號 (double, %%e 格式): %e\n", sci_num2);
printf("2. 科學記號 (double, %%E 格式): %E\n", sci_num2);

return 0;
}
//讀者可以自行測試

輸出的精度及格式控制

在 C 語言中,printf() 提供了多種格式控制符,可以控制輸出數據的 對齊、寬度、小數精度 等,這對於數值運算、表格輸出、報表等應用非常重要。

整理的使用範例如下:

#include <stdio.h>

int main() {
// 輸出整數 7,沒有指定格式(直接輸出數值)
printf("%d\n", 7); // 輸出: 7

// 輸出整數 7,右對齊,占 3 個欄位寬度(不足部分填空格)
printf("%3d\n", 7); // 輸出: 7 (前面補兩個空格)

// 輸出整數 7,右對齊,占 3 個欄位寬度(不足部分填 0)
printf("%03d\n", 7); // 輸出: 007 (前面補兩個 0)

// 輸出浮點數 1.2345,保留小數點後 2 位(四捨五入)
printf("%.2f\n", 1.2345); // 輸出: 1.23

// 輸出浮點數 1.2345,保留小數點後 2 位,占 5 個欄位寬度(右對齊,不足部分補空格)
printf("%5.2f\n", 1.2345); // 輸出: 1.23 (前面補空格)

// 輸出浮點數 1.2345,保留小數點後 2 位,占 5 個欄位寬度(不足部分補 0)
printf("%05.2f\n", 1.2345); // 輸出: 01.23 (前面補一個 0)

// 輸出整數 7,左對齊,占 3 個欄位寬度(不足部分補空格)
printf("%-3d\n", 7); // 輸出: 7 (後面補兩個空格)

// 輸出浮點數 1.2345,保留小數點後 2 位,左對齊,占 5 個欄位寬度(不足部分補空格)
printf("%-5.2f\n", 1.2345); // 輸出: 1.23 (後面補空格)

return 0;
}
//讀者可以自行測試
留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
8會員
206內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
本章節將探討左下三角稀疏矩陣。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
相信讀者現在對於鏈結串列有了更多的認識,所以我再進一步,示範更多關於鏈結串列的操作,這部分示範會將程式模組化。將鏈結串列的操作寫進一個標頭檔,並在主程式中引入。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
2025/03/07
本章節示範透過「陣列索引」和「指標運算」兩種方式來存取同一個二維陣列 a,並印出相同的數值以及對應的位址,以說明它們其實指向的是同一塊連續的記憶體空間。本文將依序解釋各段程式碼,並示範可能的執行結果與背後原理。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
User Input & Tables 的使用
Thumbnail
User Input & Tables 的使用
Thumbnail
註解 & Print & 變數型態
Thumbnail
註解 & Print & 變數型態
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
<iostream> ​在之前的文章有提到過,<iostream> 是專門處理程式的輸入 (input) 以及輸出 (output) 的函式庫。輸入輸出的對象是以電腦作為主角: 輸入指的是「把資料給電腦」,輸出指的是「從電腦那邊取得資料」。 在這個系列的文章中,程式輸入指的都是從鍵盤輸入資料給電
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News