#include <stdio.h>
#define true 1
#define false 0
int main(int argc, char *argv[])
{
float celsius, fahrenheit;
while(true) {
printf("Please input a temperature in Celsius (type 'stop' to stop): " );
scanf("%f", &celsius);
fahrenheit = (1.8 * celsius) + 32;
printf("Temperature in Fahrenheit: %f ", fahrenheit);
}
return(0);
}
我试图在C中编写一个将摄氏温度转换为华氏温度的程序。我希望程序继续循环,直到用户输入“停止”。在C中退出while循环的最佳方法是什么?
答案 0 :(得分:1)
由于stop
不会转换为浮点数,因此您应该从scanf()
测试返回值,因此:
#include <stdio.h>
int main(void)
{
float celsius, fahrenheit;
while (1)
{
printf("Please input a temperature in Celsius (type 'stop' to stop): ");
if (scanf("%f", &celsius) != 1)
break;
fahrenheit = (1.8 * celsius) + 32;
printf("Temperature in Fahrenheit: %f\n", fahrenheit);
}
return(0);
}
break
语句实际上打破了循环。请注意,如果您键入'abracadabra'或其他任何不是浮点值的值,这将停止。使用换行符终止非提示输出。
答案 1 :(得分:1)
创建while循环的最简单方法,如果输入&#34; stop&#34;首先将输入作为字符串读取,然后检查输入是否等于&#34;停止&#34;如果不是,则将其转换为浮点变量。我对您的代码进行了一些更改。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFER_SIZE 0x20
int main ( int argc, char **argv )
{
char buffer [ BUFFER_SIZE ];
char *exitword = "stop";
float celsius, fahrenheit;
while ( 0x01 )
{
memset ( buffer, 0x00, BUFFER_SIZE );
printf("Please input a temperature in Celsius (type '%s' to stop): ", exitword );
if ( fgets ( buffer, BUFFER_SIZE - 0x01, stdin ) == NULL )
{
fprintf ( stderr, "Unable to read user input!\n" );
fprintf ( stderr, "Please try again\n" );
continue;
}
if ( strncmp ( buffer, exitword, strlen ( exitword )) == 0x00 )
{
printf ( "Good bye!\n" );
break;
}
if (( celsius = strtof ( buffer, NULL )) == 0 )
{
fprintf ( stderr, "Unable to convert user input to floating point number\n" );
fprintf ( stderr, "Please try again\n" );
continue;
}
fahrenheit = (1.8 * celsius) + 32;
printf("Temperature in Fahrenheit: %f\n", fahrenheit);
}
return EXIT_SUCCESS;
}
答案 2 :(得分:0)
这个程序可以正常使用一些约束。这适用于 整数两位数的celcius 值。一个用&#34; stop&#34;初始化的字符串。采用与用户输入的字符串进行比较。如果用户输入一个两位数的整数,则该字符串将转换为数字并进行进一步的计算
#include <stdio.h>
#include <string.h>
#define true 1
int main(int argc, char *argv[])
{
int celsius=0;
float fahrenheit;
char stop[]="stop";
char checkForStop[10];
int i;
int array[10];
while(true)
{
printf("Please input a temperature in Celsius (type 'stop' to stop): " );
gets(checkForStop);
if(strcmp(stop,checkForStop)==0)
{
break;
}
else
{
for(i=0;i<2;i++)
{
array[i]=checkForStop[i]-'0'; // converts character to integer
}
celsius = array[0]*10+array[1];
}
fahrenheit = (1.8 * celsius) + 32;`enter code here`
printf("Temperature in Fahrenheit: %f ", fahrenheit);
}
return(0);
}