程序将编译无错误,但不会执行。什么';怎么了?(C)中

程序将编译无错误,但不会执行。什么';怎么了?(C)中,c,C,因此,出于某种原因,每当我尝试在gedit中编译这个程序时,它都不会出现任何问题(没有错误)。然而,当我尝试使用./prgram执行它时,它只是跳到终端中的下一行。我不确定是程序不起作用,还是与我的编译器有关。谢谢(这是一个家庭作业,没有额外的内容,因为它们是获得满分所必需的) #包括 常数双CEL=32; 常数双KEL=459.67; 双法氏管(双); 双发(双发); int main() { 双细胞; 双克尔; 双倍法伦; 字符i[1]=“a”; 而(i="a) { printf(“在far

因此,出于某种原因,每当我尝试在gedit中编译这个程序时,它都不会出现任何问题(没有错误)。然而,当我尝试使用./prgram执行它时,它只是跳到终端中的下一行。我不确定是程序不起作用,还是与我的编译器有关。谢谢(这是一个家庭作业,没有额外的内容,因为它们是获得满分所必需的)

#包括
常数双CEL=32;
常数双KEL=459.67;
双法氏管(双);
双发(双发);
int main()
{
双细胞;
双克尔;
双倍法伦;
字符i[1]=“a”;
而(i="a)
{
printf(“在farenheit中输入温度(输入s停止):\n”);
scanf(“%lf\n”、&faren);
printf(“%lf Farenheit等于%lf摄氏度,%lf开尔文”\n“,faren,FahToCel(cel),FahToCel(kel));

如果程序中的(kel=-274)&&&(kel=274)&&&(kel=281)&&&(kel,则
中的条件while(i==“a”)
的计算结果不为
TRUE
。因此,它不会进入while循环,程序返回0
并退出

要比较字符串,应使用
strcmp()


另外,
char i[1]=“a”
生成长度为1的字符数组,但您希望它的长度为2个字符。一个用于
'a'
,第二个用于
'\0'
,使其成为以NULL结尾的字符串。

在while循环条件中,您可以使用…这

 while (i[0] == 'a')
这样它将检查单个字符….

#包括
常数双CEL=32;
常数双KEL=459.67;
双法氏管(双);
双发(双发);
无效清洁标准(无效);
int main()
{
双细胞;
双克尔;
双倍法伦;
字符i='a';
而(i!=“N”)
{
printf(“\n输入法伦海特的温度:\n”);
scanf(“%lf”、&faren);
printf(“%lf Farenheit等于%lf摄氏度,%lf开尔文”\n“,faren,FahToCel(cel),FahToCel(kel));

如果(凯尔=-274)和&(凯尔=274)和&(凯尔=281)和(凯尔:你是怎么编译的?你肯定不是在gedit中编译的……@Val Gocan Paval,如果问题解决了,请告诉我……或者在这里发表评论……我会帮你解决家庭作业assignment@ValGocan Paval,你能告诉我你的程序定义吗……这样我就可以写一个程序,要求用户输入华氏温度程序应将温度读取为类型双倍数,并将其作为参数传递给两个函数:FahToCel()和FahToCel()。这些函数应分别计算摄氏当量和开尔文当量。然后,以小数点右侧两位的精度显示所有三个温度。您可以在每个模块内自由打印,也可以根据需要构造打印函数。打印时,您需要使用温度刻度标识每个值。使用Internet查找两个华氏度到Ce的转换公式lsius和华氏温度到开尔文。转换函数应使用常量创建转换公式中出现的常数的符号表示。main()函数应使用循环,允许用户重复输入温度,在输入q或其他非数值时停止。使用scanf()这一事实返回读取的项目数,因此如果读取一个数字,它将返回1,但如果用户输入q,它不会返回1。==运算符测试相等性,因此您可以使用它来比较scanf()的返回值使用1。在转换之前,不要忘记显示提示以确保用户输入正确的温度。最后,在计算开尔文温度时,根据计算值显示注释行。•小于-274:“原子运动停止”•-274至273:“水在此冻结”•274至280:“你需要一件毛衣”•281到294:“有点冷”•295+:“啊,那更好“在家庭作业作业中,当用户输入一个字母时,循环必须停止,因此我认为用一个字母初始化循环,而不是要求用户输入另一个字母,如果他们希望取消该程序,这样做是可行的。@ValGocan Paval重点是,在C中,测试
I==“a”
不测试
i
是否是字符串
“a”
@Val Gocan Paval,这是完美的解决方案?让我知道……你应该输入N来停止循环谢谢,这太完美了!我将自己找出如何隐藏其他小数点的方法。
 while (i[0] == 'a')
#include <stdio.h>
const double CEL = 32;
const double KEL = 459.67;

double FahToCel(double);
double FahToKel(double);
void clean_stdin(void);
int main()
    {
    double cel;
    double kel;
    double faren;
    char i = 'a';
    while (i != 'N')
    {
        printf("\nEnter a temperature in farenheit :\n"); 
        scanf("%lf", &faren);
        printf("%lf Farenheit is equal to %lf Celsius, and %lf Kelvin\n", faren, FahToCel(cel), FahToKel(kel));
        if (kel <= -274)
            printf("Atomic motion has stopped\n");
        else if ((kel >= -274) && (kel <= 273))
            printf("Water freezes here\n");
        else if ((kel >= 274) && (kel <= 280))
            printf("You'll need a sweater\n");
        else if ((kel >= 281) && (kel <= 294))
            printf("A bit chilly\n");
        else 
            printf("Ahh, that's better\n");
        printf("Do you want to Continue ? ( N : Stop) : \n"); 
        clean_stdin();
        scanf("%c",&i);
    }
    return 0;
}

double FahToCel(double faren)
{
    double cel;
    cel = (faren - CEL) * 5/9;
    return cel;
}

double FahToKel(double faren)
{
    double kel;
    kel = (faren + KEL) * 5/9;
    return kel;
}

void clean_stdin(void)
{
    int c;
    do {
        c = getchar();
    } while (c != '\n' && c != EOF);
}