Text Formatting #2
โค๊ด
printf ("Characters: %c\n", 'a');

printf ("Decimals: %d %d\n", 1977, 6500000000);
printf ("Preceding with blanks: %7d \n", 1977);
printf ("Preceding with zeros: d \n", 1977);
printf ("Base number: %d %x %o\n", 427, 427, 427);
printf ("Floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
printf ("%s \n", "123 in this text is a String not a number");
ผลลัพธ์
Characters: a
Decimals: 1977 6500000000
Preceding with blanks: 1977
Preceding with zeros: 0001977
Base number: 427 1ab 653
Floats: 3.14 +3e+00 3.141600E+00
123 in this text is a String not a number
ข้อควรจำ
ตัวอักษร หรืออักขระ 1 ตัว (Character) ในภาษา C เราจะใช้เครื่องหมาย ' (Single qoute) คร่อม
ชุดตัวอักษร หรือสายอักขระ (String) ในภาษา C เราจะใช้เครื่องหมาย " (Double qoute) คร่อม
ตัวเลข สามารถใช้ได้เลย ไม่ต้องมีตัวคร่อม
เพิ่มเติม
%7d หมายความว่า แสดงเลขฐานสิบโดยมีความกว้างอย่างน้อย 7 ตัวอักษร
หากเลขนั้นมีจำนวนหลักน้อยกว่า 7 หลัก โปรแกรมจะใส่ช่องว่างด้านหน้าเลขนั้นจนครบ 7 ตัว
d หมายความว่า แสดงเลขฐานสิบโดยมีจำนวนหลักอย่างน้อย 7 หลัก
หากเลขนั้นมีจำนวนหลักน้อยกว่า 7 หลัก โปรแกรมจะใส่เลขศูนย์ด้านหน้าเลขนั้นจบครบ 7 หลัก
%+d หมายความว่า ปกติแล้วเลขจำนวนบวกจะไม่มีเครื่องหมายนำหน้า ใช้โค๊ดนี้เพื่อสั่งให้แสดง
%.2f หมายความว่า แสดงเลขจำนวนจริง โดยแสดงตำแหน่งทศนิยมเพียง 2 หลัก
หลักการด้านบน สามารถใช้พร้อมกันได้ด้วย เ่ช่น .3f %+3d เป็นต้น
คำถามผ่านด่าน
ทดลองใช้สิ่งต่างๆเกี่ยวกับ Text Formatting ของคำสั่ง printf() ให้คล่อง
ทดลองใช้โค๊ดผิดประเภท เช่น ใช้ %d กับ เลขทศนิยม ใช้ %e กับเลขจำนวนเต็ม สังเกตผลว่าเป็นอย่างไร
หลังจากนั้น ให้แก้โค๊ดโปรแกรมด้านล่างให้แสดงผลดังผลลัพธ์ถูกต้องเพื่อไปหน้าต่อไป
ผลลัพธ์
1668
1668.26
1668.258
1668.258
+422
0422
3.14
I'm eager to go to the next page
หมายเหตุ: ขอให้แก้เฉพาะในส่วน argument แรกของ print() เท่านั้น (นั่นหมายถึงแก้พวก % ชนิดต่างๆ ให้ถูกต้อง)
ทำไงสอบด่วน
โค๊ด
printf ("Characters: %c\n", 'a');
printf ("Decimals: %d %d\n", 1977, 6500000000);
printf ("Preceding with blanks: %7d \n", 1977);
printf ("Preceding with zeros: d \n", 1977);
printf ("Base number: %d %x %o\n", 427, 427, 427);
printf ("Floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
printf ("%s \n", "123 in this text is a String not a number");
ผลลัพธ์
Characters: a
Decimals: 1977 6500000000
Preceding with blanks: 1977
Preceding with zeros: 0001977
Base number: 427 1ab 653
Floats: 3.14 +3e+00 3.141600E+00
123 in this text is a String not a number
ข้อควรจำ
ตัวอักษร หรืออักขระ 1 ตัว (Character) ในภาษา C เราจะใช้เครื่องหมาย ' (Single qoute) คร่อม
ชุดตัวอักษร หรือสายอักขระ (String) ในภาษา C เราจะใช้เครื่องหมาย " (Double qoute) คร่อม
ตัวเลข สามารถใช้ได้เลย ไม่ต้องมีตัวคร่อม
เพิ่มเติม
%7d หมายความว่า แสดงเลขฐานสิบโดยมีความกว้างอย่างน้อย 7 ตัวอักษร
หากเลขนั้นมีจำนวนหลักน้อยกว่า 7 หลัก โปรแกรมจะใส่ช่องว่างด้านหน้าเลขนั้นจนครบ 7 ตัว
d หมายความว่า แสดงเลขฐานสิบโดยมีจำนวนหลักอย่างน้อย 7 หลัก
หากเลขนั้นมีจำนวนหลักน้อยกว่า 7 หลัก โปรแกรมจะใส่เลขศูนย์ด้านหน้าเลขนั้นจบครบ 7 หลัก
%+d หมายความว่า ปกติแล้วเลขจำนวนบวกจะไม่มีเครื่องหมายนำหน้า ใช้โค๊ดนี้เพื่อสั่งให้แสดง
%.2f หมายความว่า แสดงเลขจำนวนจริง โดยแสดงตำแหน่งทศนิยมเพียง 2 หลัก
หลักการด้านบน สามารถใช้พร้อมกันได้ด้วย เ่ช่น .3f %+3d เป็นต้น
คำถามผ่านด่าน
ทดลองใช้สิ่งต่างๆเกี่ยวกับ Text Formatting ของคำสั่ง printf() ให้คล่อง
ทดลองใช้โค๊ดผิดประเภท เช่น ใช้ %d กับ เลขทศนิยม ใช้ %e กับเลขจำนวนเต็ม สังเกตผลว่าเป็นอย่างไร
หลังจากนั้น ให้แก้โค๊ดโปรแกรมด้านล่างให้แสดงผลดังผลลัพธ์ถูกต้องเพื่อไปหน้าต่อไป
ผลลัพธ์
1668
1668.26
1668.258
1668.258
+422
0422
3.14
I'm eager to go to the next page
หมายเหตุ: ขอให้แก้เฉพาะในส่วน argument แรกของ print() เท่านั้น (นั่นหมายถึงแก้พวก % ชนิดต่างๆ ให้ถูกต้อง)