การทำงานของคำสั่ง do-while จะทำงานในลูป 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไขที่ while ถ้าผลการตรวจสอบเป็นจริงจะวนรอบทำงานในลูปอีกครั้ง แล้วจึงตรวจสอบเงื่อนไขที่ while ถ้าผลการตรวจสอบยังเป็นจริง ก็จะทำงานตามคำสั่งที่กำหนดไว้ในลูป แล้ววนกลับไปตรวจสอบเงื่อนไขอีก เป็นเช่นนี้ไปเรื่อย ๆ จนกว่า ผลการตรวจสอบจะเป็นเท็จ จึงจบการทำงาน สามารถสรุปได้ดังนี้
รูปแบบ
do
statement;
while ( condition );
โดยที่ condition คือ เงื่อนไขที่อยู่ในรูปของนิพจน์ที่สร้างขึ้นเพื่อใช้ตรวจสอบการทำซ้ำ โดยจะต้องเขียนเงื่อนไขภายในเครื่องหมาย ( )
statement คือ คำสั่งที่ต้องการให้ทำซ้ำ
ถ้าคำสั่งที่ต้องการให้ทำงานเมื่อผลการตรวจสอบเป็นจริง มีมากกว่า 1 คำสั่ง จะต้องเขียนชุดคำสั่งนั้นภายในเครื่องหมาย { } ดังนี้
รูปแบบ
do
{ statement 1;
statement 2;
:
statement n;
}
while (condition );
ตัวอย่างที่ 1 พิมพ์ Programming จำนวน 3 บรรทัด
#include <stdio.h>
#include <conio.h>
main()
{int i = 1;
do
{ printf("Programming\n");
i = i+1;
}
while(i <= 3);
getch();
}
ตัวอย่างที่ 2 โปรแกรมทายตัวเลข ถ้าผู้ใช้ป้อนตัวเลขที่ไม่ตรงกับเลขที่ผู้เขียนโปรแกรมกำหนดไว้คือเลข 8 โปรแกรมจะพิมพ์ข้อความ Try again และให้ผู้ใช้ป้อนตัวเลขอีกครั้ง แต่ถ้าผู้ใช้ป้อนเลข 8 ก็จะออกจากลูป และพิมพ์ข้อความ Congratulations
#include <stdio.h>
#include <conio.h>
main()
{int num;
do
{ printf("select number (0 - 10) : ");
scanf("%d",&num);
if (num != 8)
printf("Try again\n");
}
while(num != 8);
printf("\n** Congratulations **");
getch();
}
ตัวอย่างที่ 3 รายการเมนูให้เลือกแสดงข้อมูลประเทศพม่า
ถ้าผู้ใช้เลือก 1 แสดงชื่อเมืองหลวง และรอให้ผู้ใช้กดแป้นใด ๆ เพื่อกลับสู่เมนู
2 แสดงชื่อเมืองที่ใหญ่ที่สุด และรอให้ผู้ใช้กดแป้นใด ๆ เพื่อกลับสู่เมนู
3 แสดงชื่อดอกไม้ประจำชาติ และรอให้ผู้ใช้กดแป้นใด ๆ เพื่อกลับสู่เมนู
4 แสดงชื่ออาหารประจำชาติ และรอให้ผู้ใช้กดแป้นใด ๆ เพื่อกลับสู่เมนู
5 จบการทำงาน และรอให้ผู้ใช้กดแป้นใด ๆ เพื่อจบการทำงาน
แต่ถ้าผู้ใช้ป้อนตัวอักษรอื่น ๆ จะแสดงข้อความให้เลือกเฉพาะเลข 1-5 และรอให้ผู้ใช้กดแป้นใด ๆ เพื่อกลับสู่เมนู
ทั้งนี้โปรแกรมจะแสดงเมนูให้เลือกการทำงานไปเรื่อย ๆ จนกว่าผู้ใช้จะเลือก 5
#include <stdio.h>
#include <conio.h>
main()
{char ch;
do
{
clrscr();
printf("\n***** Myanmar *****\n");
printf("1.capital\n");
printf("2.lagest city\n");
printf("3.national flower\n");
printf("4.traditional foods\n");
printf("5.end\n");
printf("************************\n");
printf("select choice : ");
ch = getche();
switch(ch)
{ case '1' : printf("\n\nNaypyidaw");
printf("\npress any key back to menu");
getch();
break;
case '2' : printf("\n\nYangon (Rangoon)");
printf("\npress any key back to menu");
getch();
break;
case '3' : printf("\n\nBurmese Rosewood (Padauk or Padouk)");
printf("\npress any key back to menu");
getch();
break;
case '4' : printf("\n\nMohinga and Laphet");
printf("\npress any key back to menu");
getch();
break;
case '5' : printf("\n\npress any key to exit");
getch();
break;
default : printf("\n\n!! select 1 - 5 !!");
printf("\npress any key back to menu");
getch();
} // ปีกกา ปิดของ switch
}while(ch != '5'); // ปีกกาปิดของ do
} //ปีกกาปิดของ main