C编程退出不起作用

时间:2015-08-31 13:47:47

标签: c

我退出程序时遇到问题。我只是希望程序在我输入5时退出,但会弹出此错误:

  

进程返回0(0x0)执行时间:3.179 s按任意键进入   继续。

截图: enter image description here

可能是什么问题?

#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#define p printf
#define s scanf

int main()
{
char ans='y', asc_desc;
signed char name[100];
int a, b, c, prog_num, num;
double product=1;
float ave, sum, count;

p("Please enter your name: ");
s(" %[^\n]s", &name);
system("cls");

do
{
p("%s, welcome to Menu Program\n", name);
p("\n1. Ascending/Descending\n\n2. Sum/Average\n\n3. Factorial\n\n4. Display the first 10 positive integers from the number entered.\n\n5. Exit");
p("\n\nPlease select the number of program: ");
s("%d", &prog_num);
system("cls");

if(prog_num==1)
{
    do
    {
        p("\t\t\t  *Ascending or Descending?*");
        p("\n\nPlease enter any three integers:\n\n");
        s("%d", &a);
        p("\n");
        s("%d", &b);
        p("\n");
        s("%d", &c);
        p("\n");
        p("Do you want your integers sorted ascending or descending? a/d\n\n");
        s(" %c", &asc_desc);
        if(asc_desc=='a'||asc_desc=='A')
        {
            if(c>b&&b>a)
                p("\nArranged numbers are: %d %d %d", a, b, c);
            else if(c<b&&b<a)
                p("\nArranged numbers are: %d %d %d", c, b, a);
            else if(a<c&&c<b)
                p("\nArranged numbers are: %d %d %d", a, c, b);
            else if(b<c&&c<a)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(c<a&&a<b)
                printf("\nArranged numbers are: %d %d %d", c, a, b);
            else if(b<a&&a<c)
                printf("\nArranged numbers are: %d %d %d", b, a, c);
            else if(c==b&&b>a)
                printf("\nArranged numbers are: %d %d %d", a, b, c);
            else if(c==b&&b<a)
                printf("\nArranged numbers are: %d %d %d", c, b, a);
            else if(a==c&&c<b)
                printf("\nArranged numbers are: %d %d %d", a, c, b);
            else if(b==c&&c<a)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(c==a&&a<b)
                printf("\nArranged numbers are: %d %d %d", c, a, b);
            else if(b==a&&a<c)
                printf("\nArranged numbers are: %d %d %d", b, a, c);
            else if(b==c&&c<a)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(a==b&&b>a)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(a==c&&c>b)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(a==b&&b>c)
                printf("\nArranged numbers are: %d %d %d", c, a, b);
            else if(a==b&&b==c)
                printf("\nArranged numbers are: %d %d %d", a, a, a);
            else printf("\nInvalid input!");
        }
        else if(asc_desc=='d'||asc_desc=='D')
        {
            if(c>b&&b>a)
                printf("\nArranged numbers are: %d %d %d", c, b, a);
            else if(c<b&&b<a)
                printf("\nArranged numbers are: %d %d %d", a, b, c);
            else if(a<c&&c<b)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(b<c&&c<a)
                printf("\nArranged numbers are: %d %d %d", a, c, b);
            else if(c<a&&a<b)
                printf("\nArranged numbers are: %d %d %d", b, a, c);
            else if(b<a&&a<c)
                printf("\nArranged numbers are: %d %d %d", c, a, b);
            else if(c==b&&b>a)
                printf("\nArranged numbers are: %d %d %d", c, b, a);
            else if(c==b&&b<a)
                printf("\nArranged numbers are: %d %d %d", a, b, c);
            else if(a==c&&c<b)
                printf("\nArranged numbers are: %d %d %d", b, c, a);
            else if(b==c&&c<a)
                printf("\nArranged numbers are: %d %d %d", a, c, b);
            else if(c==a&&a<b)
                printf("\nArranged numbers are: %d %d %d", b, a, c);
            else if(b==a&&a<c)
                printf("\nArranged numbers are: %d %d %d", c, a, b);
            else if(b==c&&c<a)
                printf("\nArranged numbers are: %d %d %d", a, c, b);
            else if(a==b&&b>a)
                printf("\nArranged numbers are: %d %d %d", a, c, b);
            else if(a==c&&c>b)
                printf("\nArranged numbers are: %d %d %d", a, c, b);
            else if(a==b&&b>c)
                printf("\nArranged numbers are: %d %d %d", b, a, c);
            else if(a==b&&b==c)
                printf("\nArranged numbers are: %d %d %d", a, a, a);
            else printf("\nInvalid input!");
        }
        else printf("\nInvalid input!");
        printf("\n\nDo you want to try again? y/n\n\n");
        scanf(" %c", &ans);
        system("cls");
    }
    while(ans=='y'||ans=='Y');
}
else if(prog_num==2)
{
    do
    {
        printf("Enter any numbers. I will stop only if you enter zero.\n");
        num=1;
        ave=0;
        count=0;
        sum=0;
        for(;num!=0;)
        {
            printf("\n");
            scanf("%d", &num);
            count++;
            sum=num+sum;
        }
        count--;
        ave=sum/count;
        printf("\nThe sum and average of the integers are: %0.2f and %0.2f respectively.", sum, ave);
        p("\n\nDo you want to try again? y/n\n\n");
        s(" %c", &ans);
        system("cls");
    }
    while(ans=='y'||ans=='Y');
}
else if(prog_num==3)
{
    do
    {
        printf("Please enter a number: ");
        scanf(" %d", &a);
        p("\n");
        for (b = 1; b<=a; b++)
        {
        product=product*b;
        if (b!=a)
        {

            printf("%d x ", b);
        }
        else
            printf("%d", b);
        }
printf("\n\nThe factorial of %d is %.0f", a, product);
printf("\n\nDo you want to try again? y/n\n\n");
scanf(" %s", &ans);
product=1;
system("cls");
}
while(ans=='y'||ans=='Y');
}
else if(prog_num==4)
{
    do
    {
        p("\t\t\t *First 10 Positive Integers*\n\n");
        printf("Please enter a number: ");
        scanf(" %d", &a);
        p("\n\nThe first 10 positive integer from %d is: \n\n", a);
        if(a>=0)
        {
           for (b = 1; b<=10; b++)
           {
                printf("%d ",a++);
           }
        }

        else if(a<0)
            p("1 2 3 4 5 6 7 8 9 10");
        printf("\n\nTry Again?(y/n):\t");
        scanf(" %s", &ans);
        system("cls");
    }
        while(ans=='y');
}
else if(prog_num=5)
{

}
}
while(ans=='n'||ans=='N');
}

2 个答案:

答案 0 :(得分:3)

程序正确退出并非错误。

答案 1 :(得分:0)

首先,下次向我们提供一个Minimal, Complete, and Verifiable example作为@Olaf提及。

您的代码太长而且难以阅读,但要替换您的代码

else if(prog_num=5)
{

}

else if(prog_num==5)
{
  printf("prog_num is 5, program will exit now.\n");
  break; // exit from the loop
}

并在程序结束时添加return 0;(就在最后}大括号之前)。除此之外,您可能在控制台中看到的文本不是错误,这意味着您的程序已经完成,没有任何问题。

您一定要阅读switch statement in C/C++