【问题标题】:How to return on start program using while loop?如何使用while循环返回启动程序?
【发布时间】:2015-01-19 16:02:47
【问题描述】:

当我选择它时我遇到了问题,它总是退出我的程序,当我输入错误的选择时必须退出?

我的循环有什么问题?请帮助我,因为我遇到了严重的问题。这是一个基本概念,但我的大脑已经老了而且卡住了。

你能帮我理解循环返回程序的开头吗?

谢谢

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
    char choice,name[40],date[40],note[500],;
    int password;
    int ch;
    printf("\n\n\t\tMAIN MENU:");
    printf("\n\n\tADD RECORD\t[1]");
    printf("\n\tVIEW RECORD\t[2]");
    printf("\n\tEDIT RECORD\t[3]");
    printf("\n\tDELETE RECORD\t[4]");
    printf("\n\tEDIT PASSWORD\t[5]");
    printf("\n\tEXIT\t\t[6]");
    printf("\n\n\tENTER YOUR CHOICE:");
    scanf("%d",&ch);

    switch(ch)
        do{
            {
                opcase 1:
                    printf("\n\tEDIT RECORD\t[3]");
                    printf("\n\tEDIT RECORD\t[3]");
                    printf("\n\tEDIT RECORD\t[3]");
                    printf("\n\tEDIT RECORD\t[3]");
                    break;

                case 2:
                    printf("\n\tEDIT RECORD\t[3]");                      
                    break;

                case 3:
                    printf("\n\tEDIT RECORD\t[3]");
                    break;

                case 4:
                    printf("\n\tEDIT RECORD\t[3]");
                    break;

                case 5: 
                    printf("\n\tEDIT RECORD\t[3]");
                    break;

                case 6:
                    printf("\n\n\t\tTHANK YOU FOR USING THE SOFTWARE BY:\n\n\tBIJAY PURI\n\n\tBHANU POUDEL\n\n\tNRIPASH AYER...");
                    getch();
                    exit(0);

                default:
                    printf("\nYOU ENTERED WRONG CHOICE..");
                    printf("\nPRESS ANY KEY TO TRY AGAIN");
                    getch();
                    break;
                }     
            }
            while(ch!=6);          
  return 0; 
  getch();
}

【问题讨论】:

  • 请至少尝试合理地格式化您的代码。
  • 你的代码有很多错误,你的一些代码没有任何意义......
  • printf("\n\n\t\tTHANK YOU FOR USING THE SOFTWARE BY:\n\n\tBIJAY PURI\n\n\tBHANU POUDEL\n\n\tNRIPASH AYER...");...请告诉我这不是复制作业..

标签: c while-loop


【解决方案1】:

将您的 do..while 循环放在 switch 外壳之外。

提示:如果您正确缩进代码,您可能已经自己解决了。

正确的语法:

do 
  {

    //do something
        switch (variable)
        {
        //case 
        break;
        }
  }
while (condition)

编辑:

以下是您代码的 [on linux] 工作版本。请注意更改。

#include <stdio.h>
#include <stdlib.h>

int main()
{
        char choice,name[40],date[40],note[500];
        int password;
        int ch;

        printf("\n\n\t\tMAIN MENU:");
        printf("\n\n\tADD RECORD\t[1]");
        printf("\n\tVIEW RECORD\t[2]");
        printf("\n\tEDIT RECORD\t[3]");
        printf("\n\tDELETE RECORD\t[4]");
        printf("\n\tEDIT PASSWORD\t[5]");
        printf("\n\tEXIT\t\t[6]");


        do{
        printf("\n\n\tENTER YOUR CHOICE:");
        scanf("%d",&ch);
                switch(ch)

                {
                        case 1:
                            printf("\n\tEDIT RECORD\t[3]\n");
                            printf("\n\tEDIT RECORD\t[3]\n");
                            printf("\n\tEDIT RECORD\t[3]\n");
                            printf("\n\tEDIT RECORD\t[3]\n");

                                break;
                        case 2:    
                                printf("\n\tEDIT RECORD\t[3]");                      
                                break;
                        case 3:
                                printf("\n\tEDIT RECORD\t[3]");
                                break;
                        case 4:
                                printf("\n\tEDIT RECORD\t[3]");
                                break;
                        case 5:            
                                printf("\n\tEDIT RECORD\t[3]");
                                break;
                        case 6:
                                printf("\n\n\t\tTHANK YOU FOR USING THE SOFTWARE BY:\n\n\tBIJAY PURI\n\n\tBHANU POUDEL\n\n\tNRIPASH AYER...");
                                exit(0);
                        default:
                                printf("\nYOU ENTERED WRONG CHOICE..");
                                printf("\nPRESS ANY KEY TO TRY AGAIN");
                                break;
                }
        } while(1);          //no need to check conditions here, redundant.

        return 0 ; 
}

【讨论】:

  • 另外,如果是条件值之一(1-5),用户不能输入新值。
  • @jbutler483 正在编辑。在我的代码中解决了这个问题。 :-)
【解决方案2】:

您的do whileswitch 花括号缠在一起了。

这就是你所拥有的:

switch (variable)
{
    do {

    }
}
while (condition);

这是正确的方法:

do {
    switch (variable)
    {

    }
}
while (condition);

另外你必须把getch放在return指令之前,否则没有意义。

【讨论】:

  • 它总是关闭我的程序我清楚地检查和修改我的代码这是我的最后一个代码} } while(ch!=0);返回 0 ; getch(); } 但它并不总是关闭我的程序。
【解决方案3】:

你必须做类似的事情

do{
   //read your option
   scanf("%d",&ch);
   //do something with that option you get
   switch(option){
   }
}while(option != 6);

这是因为总是要思考,你需要重复哪些动作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2016-12-02
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多