我可以使用for循环替换此程序中的do ... while循环吗?有什么建议让这个程序更简单吗?该程序要求用户输入1到5的选项(如果选择是另一个程序将终止的号码) 我的代码:
int choice;
char option;
printf("You want to know what I'm thinking about you?\n");
printf("1. Add New Contact\n");
printf("2. Edit Existing Contact\n");
printf("3. Call Contact\n");
printf("4. Text Contact\n");
printf("5. Exit\n");
for (int i = 0; i < 5; i++)
{
printf("Please choose the above option:\n");
scanf(" %d", &choice);
switch (choice)
{
case(1) : printf("To add new contact, you need the contact's: First name, Last name and Number");
break;
case(2) : printf("To edit, enter new contact's number");
break;
case(3) : printf("Who do you wish to call");
break;
case(4) : printf("Who do you want to text");
break;
case(5) : exit(1);
default: printf("\n%d is not a valid choice!\n", choice);
break;
源代码:
do
{
printf("Enter your choice: ");
scanf(" %d", &choice);
switch (choice)
{
case (1): printf("\nTo add you will need the ");
printf("contact's\n");
printf("First name, last name, and number.\n");
break;
case (2): printf("\nGet ready to enter the name of ");
printf("name of the\n");
printf("contact you wish to change.\n");
break;
case (3): printf("\nWhich contact do you ");
printf("wish to call?\n");
break;
case (4): printf("\nWhich contact do you ");
printf("wish to text?\n");
break;
case (5): exit(1); //Exits the program early
default: printf("\n%d is not a valid choice.\n", choice);
printf("Try again.\n");
break;
}
} while ((choice < 1) || (choice > 5));
return 0;
答案 0 :(得分:2)
嗯,理论上你可以,但这没有任何意义。根据经验:
for
。 (通常认为最容易阅读,通常会生成最有效的代码。)while
。do while
,但必须在循环的第一圈后放置循环条件(例如,因为您需要评估用户输出)。答案 1 :(得分:2)
我不认为这个问题用“for”循环替换“do ... while”循环是好的。在第一个代码(for循环)中,如果用户选择了正确的答案,程序将进行相同操作的5次。当答案正确时,选择= 1 ... 2 .... 3 ... 4或5),在“do while”中保持循环停止。我认为第二个代码是正确的 问候
答案 2 :(得分:1)
我害怕,不。由于代码是当前编写的,主要的行为差异,除非输入是5
,
for
循环版本执行5
次,do...while
版本取决于每次迭代的输入值。对于小于1
或大于5
的任何值,将终止循环。否则,它将继续循环。