有什么建议或改进吗?

时间:2015-05-07 13:17:31

标签: c loops for-loop do-while

我可以使用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;

3 个答案:

答案 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的任何值,将终止循环。否则,它将继续循环。