การวนลูปทำงานอย่างน้อยหนึ่งครั้งด้วยคำสั่ง do...while
คำสั่งวนซ้ำ do...while เป็นคำสั่งวนซ้ำการทำงานเดิม ๆ โดยโปรแกรมจะทำงานชุดคำสั่งภายใน Loop ก่อน 1 รอบ
จึงตรวจสอบเงื่อนไขที่กำหนด ถ้าเงื่อนไขเป็นจริง ให้กลับไปทำงานชุดคำสั่งภายใน Loop อีกครั้ง และตรวจสอบเงื่อนไขที่กำหนด
อีกครั้ง ถ้าเงื่อนไขเป็นเท็จ โปรแกรมจะออกจาก Loop การทำงานไปทำงานที่คำสั่งถัดไปทันที
คำสั่ง do...while ในภาษาซี มีรูปแบบคำสั่งดังนี้
ตัวอย่าง รับค่าจากแป้นพิมพ์แล้วเรียงลำดับจากหลังไปหน้า
บรรทัดที่ 1 คอมไพเลอร์ทำการค้นหาเฮดเดอร์ไฟล์ stdio.h จากไดเรกทอรี่ บรรทัดที่ 2 คอมไพเลอร์ทำการค้นหาเฮดเดอร์ไฟล์ conio.h จากไดเรกทอรี่ บรรทัดที่ 6 ประกาศตัวแปร number ชนิด long บรรทัดที่ 7 ประกาศตัวแปร id ชนิด int บรรทัดที่ 8 แสดงคำว่า Input number for backword ผ่านทางหน้าจอ บรรทัดที่ 9 รับค่าจากคีย์บอร์ดมาเก็บไว้ที่ตัวแปร number บรรทัดที่ 12 แสดงคำว่า This backword number is ผ่านทางหน้าจอ บรรทัดที่ 14-17 ทำงานชุดคำสั่งภายใน Loop ก่อน 1 รอบ
จึงตรวจสอบเงื่อนไขที่กำหนด ถ้าเงื่อนไขเป็นจริง ให้กลับไปทำงานชุดคำสั่งภายใน Loop อีกครั้งบรรทัดที่ 19 เงื่อนไขเป็นเท็จ โปรแกรมจะออกจาก Loop (ตรวจสอบได้ว่า number>0) บรรทัดที่ 21 จบโปรแกรม
ผลลัพธ์
ตัวอย่าง แสดงตัวเลข 1 - 10 ผ่านทางหน้าจอ
รรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง 1 #include <stdio.h> ห้แฟ้ม stdio.h ส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ 2 int main() { ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) 3 int i = 10; ประกาศตัวแปร i เป็นชนิดจำนวนเต็ม พร้อมกำหนดค่าเริ่มต้นเป็น 10 4 do { ขอบเขตให้เริ่มทำ คำสั่งที่ต้องการทำซ้ำ (มีคำสั่งย่อยมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย { }) 5 printf("%d\n" , i); แสดงข้อความ "%d" โดยแสดงค่า i ใน %d เสร็จแล้วขึ้นบรรทัดใหม่ 6 i--; ลดค่าตัวนับ i ครั้งละ 1 (ความหมายเดียวกับคำสั่ง i = i - 1 หรือ i -= 1) 7 } while (i >= 1); ตรวจสอบว่า ค่า i มากกว่าหรือเท่ากับ 1 จริงหรือไม่ ถ้าจริง วนกลับไปทำคำสั่งบรรทัดที่ 4 แล้วเริ่มทำ คำสั่งที่ต้องการทำซ้ำอีกครั้ง ถ้าเท็จ สิ้นสุดการวนซ้ำด้วยคำสั่ง do - while และไปทำคำสั่งบรรทัดที่ 8 8 return 0; คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ 9 } สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม)