【发布时间】: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。投票结束是一个错字。