C 以非零状态退出

C 以非零状态退出,c,C,我是编程新手,尝试自己学习,我的代码中有一个错误,我不明白这是语法错误,或者我做错了smth。我使用了3个方程和它的条件,并将其用于iscontraction,while,do-while,if-else,with-switch。在引入变量a后,它向我显示了一个错误“以非零状态退出” #包括 #包括 int main(){ 浮球a,x,b; 浮子L; int m; printf(“输入变量a、x、b:”); 扫描(“%f%f%f,&a,&x,&b”); printf(“用于指令(输入1)”; p

我是编程新手,尝试自己学习,我的代码中有一个错误,我不明白这是语法错误,或者我做错了smth。我使用了3个方程和它的条件,并将其用于iscontraction,while,do-while,if-else,with-switch。在引入变量a后,它向我显示了一个错误“以非零状态退出”

#包括
#包括
int main(){
浮球a,x,b;
浮子L;
int m;
printf(“输入变量a、x、b:”);
扫描(“%f%f%f,&a,&x,&b”);
printf(“用于指令(输入1)”;
printf(“用于使用while指令(输入2)”;
printf(“用于使用do while指令(输入3)”;
printf(“用于使用ef指令(输入4)”;
scanf(“%d,&m”);
开关(m){
案例1:
对于(x=0;x=1.2&&x3.9;x++)
{
L=fabs(x/2*a)+powf(sin(x+1),2);
}
打破
案例2:
而(x=1.2&&x3.9)
{
L=fabs(x/2*a)+powf(sin(x+1),2);
}
打破
案例3:
做
{
L=2*cos(x-(3.14/6));
}
而(x=1.2&&x3.9);
打破
案例4:
如果(x=1.2&&x3.9)
{
L=fabs(x/2*a)+powf(sin(x+1),2);
}
其他的
{
printf(“第三项声明为虚假”);
}
打破
违约:
printf(“\n没有正确的选择\n”);
}
printf(“您的答案是:L=%.3f,L”);
}

您缺少返回0;主函数末尾的语句。由于c main函数是intmain()

您的问题是
scanf
参数的格式不正确

而不是
scanf(“%f%f%f,&a,&x,&b”)使用
scanf(“%f%f%f”、&a、&x和&b)。在第二个
scanf
中相同

变量地址是参数,不是字符串的一部分

调用它时,
scanf
会找到第一个
%f
,但它没有任何可将值放入的地址。或者更准确地说,它会从垃圾中找到它需要的值(读取堆栈和参数的动态数量),因为您没有插入它。

scanf(“%f%f%f,&a,&x,&b”)
;应该是这样的
scanf(“%f%f%f”,&a,&x,&b)。请更正您使用scanf的位置。由于语法错误,您的代码没有从用户处获取输入。我已经编译并试过了,它运行正常。请随时随地更改scanf语法

  • scanf(“%f%f%f,&a,&x,&b”)
    to
    scanf(“%f%f%f,&a,&x,&b)
  • scanf(“%d,&m”)
    scanf(“%d”和&m)
  • printf(“你的答案是:L=%.3f,L”)
    printf(“你的答案是:L=%.3f”,L)

  • 执行结束了吗?欢迎来到堆栈溢出!请使用您的代码将其简化为您的问题的一部分。您当前的代码包含了许多与您的问题无关的内容—一个最小的样本通常看起来类似于一个好的单元测试:只执行一个任务,输入值指定用于再现性。@Tomkarze不正确。见C标准第1段5.1.2.2.3程序终止。“…到达终止
    main
    函数的
    }
    时,返回的值为0。”(这确实假设正在使用的编译器符合C99(或更高版本)的要求。)正如@Neo所暗示的,您可能会得到异常终止,可能是由除零错误造成的。使用调试器逐步检查代码。您还可以在每次完成后将
    stdout
    刷新到
    printf()
    fflush(stdout),IIRC。旁白:如果缩进样式一致,那么任何代码都更容易理解-将一些代码放在单独的行上,然后将一些代码填充在
    {
    }
    之间的一行上是令人困惑的。您的
    scanf
    不是为我编译的-结尾双引号应该在第一个逗号之前。否。根据5.1.2.2.3程序终止,第1段:“…到达终止
    main
    函数的
    }
    时返回的值为0”。@AndrewHenle AFAIK一些旧实现可能不会隐式返回0。这不是问题所在。删除答案。
    #include <stdio.h>
    #include <math.h>
    
    int main() {
        float a,x,b;
        float L;
        int m;
    
        printf("Enter variables a,x,b:");
        scanf("%f%f%f,&a,&x,&b");
        printf("For using for instruction (enter 1)");
        printf("For using while instruction (enter 2)");
        printf("For using do-while instruction (enter 3)");
        printf("For using ef instruction (enter 4)");
        scanf("%d,&m");
        switch(m){
            case 1:
                for (x=0;x<1.2;x++)
                {
                    L=2*cos(x-(3.14/6));
                }
                for (x=0;x>= 1.2 && x<=3.9;x++)
                {
                    L=x*x/(a+cos(powf((x+b),3)));
                }
                for (x=0;x>3.9;x++)
                {
                    L=fabs(x/2*a)+powf(sin(x+1),2);
                }
                break;
            case 2:
                while (x<1.2)
                {
                     L=2*cos(x-(3.14/6));
                }
                while (x>= 1.2 && x<=3.9)
                {
                     L=x*x/(a+cos(powf((x+b),3)));
                }
                while (x>3.9)
                {
                     L=fabs(x/2*a)+powf(sin(x+1),2);
                }
                break;
           case 3:
                do 
                {
                    L=2*cos(x-(3.14/6));
                }
                while (x<1.2);
                do 
                {
                    L=x*x/(a+cos(powf((x+b),3)));
                }
                while (x>= 1.2 && x<=3.9);
                do
                {
                    L=fabs(x/2*a)+powf(sin(x+1),2);
                }
                while (x>3.9);
                break;
           case 4:
               if (x<1.2)
               {
                   L=2*cos(x-(3.14/6));
               }
               else
               {
                   printf("First statement is false");
               }
               if(x>= 1.2 && x<=3.9)
               {
                   L=x*x/(a+cos(powf((x+b),3)));
               }
               else
               {
                   printf("Second statement is false");
               }
               if(x>3.9)
               {
                   L=fabs(x/2*a)+powf(sin(x+1),2);
               }
               else
               {
                   printf("Third statement is false");
               }
               break;
           default:
               printf("\nNo right choices\n");
       }
       printf("Your answer is: L = %.3f,L");
    }