【问题标题】:c language, extra message in stdout? [closed]c语言,标准输出中的额外消息? [关闭]
【发布时间】:2017-11-05 15:23:12
【问题描述】:

由于一些非常奇怪的原因,我的 c 程序在标准输出中打印了一条额外的消息,我不知道为什么会这样。 假设现在我为标准输入插入 0,0,30,标准输出中的消息应该是“auga”,但是如果你编译下面的代码,我敢打赌你会惊讶于出现额外的消息,我很震惊,我也没有我的同事也没有发现这是为什么。

代码如下

#include <stdio.h>
#include <math.h>
int main()
{
    system("chcp 1253");
    double a,b,g,temp,root1,root2;
    printf("Εισάγετε παρακαλω τιμες σταθερων α,β,γ για την εξίσωση αx^2+βx+γ=0 :\n");
    printf("Εισάγετε το α : ");
    scanf("%lf",&a);
    printf("Εισάγετε το β : ");
    scanf("%lf",&b);
    printf("Εισάγετε το γ : ");
    scanf("%lf",&g);
    if(a==0)
    {
        if((b==0)&&(g!=0))printf("auga\n");
        if((b==0)&&(g==0))
        {
            printf("Η συναρτηση είναι ταυτοτήτα καθώς α=0,β=0,γ=0 αρα αχ^2+βχ+γ=0 αφου 0+0+0=0");
        }
        else
        {
            temp=(float)g*-1;
            temp=(float)temp/b;
            printf("Η ριζα για την συναρτηση με α=0 ειναι : %.2lf ",temp);
        }
    }
    else
    {
        temp=(b*b)-4*a*g;
        if(temp>0)
        {   
        root1=((-b)+sqrt(temp))/(2*a);
        root2=((-b)-sqrt(temp))/(2*a);
        printf("οι ριζες που ισχυουν για αυτην την εξισωση ειναι οι αριθμοι : %.2lf,%.2lf ",root1,root2);
        }
        else if(temp==0)
        {
            root1=(-b)/(2*a);
            printf("Η ριζα που ισχυει για αυτην την εξισωση ειναι η : %.2lf  ",root1);
        }
        else
        {
            printf("Η Σύναρτηση ειναι αδύνατη καθώς η διακρίνουσα ειναι μικρότερη του 0");
        }
    }
    return 0;

}

【问题讨论】:

  • 不清楚你在问什么。我无法阅读您的消息。输出是什么,预期是什么?尝试使用调试器,您会感到惊讶。
  • 我知道你无法读取我的字符串,但问题是我同时收到了 if 和 else 消息,我在下面发布了我发现问题的消息,调试器没有显示任何内容,我确实试了一下。谢谢你的时间
  • 我假设你得到了 auga 这个词,然后是 "printf("Η ριζα για την συναρτηση με α=0 ειναι : %.2lf ",temp);" b 和 g 不都是零,所以取 else。
  • printf("auga\n"); 之后的 if 应该是 else if。投票结束是一个错字。

标签: c stdout


【解决方案1】:

我发现了实际的问题,原来我的导师在一个方面是错误的,你看他告诉我们,我有“else if”这行在 c 中不存在,它算作一个额外的 if,所以作为一个好的学生我听从了他的建议,唉,我发现问题出在实际的第二个如果,固定的代码如下,现在可以正常工作。 感谢您抽出宝贵时间,很抱歉打扰您。

#include <stdio.h>
#include <math.h>
int main()
{
    system("chcp 1253");
    double a,b,g,temp,root1,root2;
    printf("Εισάγετε παρακαλω τιμες σταθερων α,β,γ για την εξίσωση αx^2+βx+γ=0 :\n");
    printf("Εισάγετε το α : ");
    scanf("%lf",&a);
    printf("Εισάγετε το β : ");
    scanf("%lf",&b);
    printf("Εισάγετε το γ : ");
    scanf("%lf",&g);
    if(a==0)
    {
        if((b==0)&&(g!=0))printf("auga\n");
        else if((b==0)&&(g==0))
        {
            printf("Η συναρτηση είναι ταυτοτήτα καθώς α=0,β=0,γ=0 αρα αχ^2+βχ+γ=0 αφου 0+0+0=0");
        }
        else
        {
            temp=(float)g*-1;
            temp=(float)temp/b;
            printf("Η ριζα για την συναρτηση με α=0 ειναι : %.2lf ",temp);
        }
    }
    else
    {
        temp=(b*b)-4*a*g;
        if(temp>0)
        {   
        root1=((-b)+sqrt(temp))/(2*a);
        root2=((-b)-sqrt(temp))/(2*a);
        printf("οι ριζες που ισχυουν για αυτην την εξισωση ειναι οι αριθμοι : %.2lf,%.2lf ",root1,root2);
        }
        else if(temp==0)
        {
            root1=(-b)/(2*a);
            printf("Η ριζα που ισχυει για αυτην την εξισωση ειναι η : %.2lf  ",root1);
        }
        else
        {
            printf("Η Σύναρτηση ειναι αδύνατη καθώς η διακρίνουσα ειναι μικρότερη του 0");
        }
    }
    return 0;

}

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 2012-03-25
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2020-09-24
    • 2016-08-04
    • 2018-08-29
    相关资源
    最近更新 更多