我在C中运行此程序将华氏温度转换为摄氏温度,并且只需要接受用户的整数值。
请告诉我如何修改此内容?
int main() {
int x;
double y;
while(x>0) {
printf("Enter the temperature in Fahrenheit:");
scanf("%d", &x);
y=((x-32)/1.8)
printf("%f\n",y);
}
}
答案 0 :(得分:3)
您的代码无效的原因是有时scanf
没有读取任何内容,因此它不会修改x
。
您知道scanf
通过检查其返回值来读取内容。它返回“已扫描”项目的数量。在这种情况下,号码必须为1
。
当scanf
返回0
时,您应该读取并丢弃缓冲区中的数据。您可以通过提供%*[^\n]
格式说明符来实现,这意味着“读取并丢弃最多'\n'
个字符的输入。读取int
直到成功的完整代码段如下所示:
while (scanf("%d", &x) != 1) {
printf("Please enter a valid number:");
scanf("%*[^\n]");
}
注意:不言而喻,您应该在计算;
的行上使用缺少的分号y
修复语法错误。
答案 1 :(得分:-1)
您可以使用以下代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x;
double y;
char str1[5];
int num1,i;
bool yes = true;
while(x>0)
{
printf("Enter the temperature in Fahrenheit:");
scanf("%s",str1);
for(i=0;str1[i]!='\0';i++)
if(!(str1[i]>=48&&str1[i]<=56))
{
printf("The value is invalid \n");
yes = false;
}
num1 = atoi(str1);
if(yes == true)
{
printf("This Number is %d\n",num1);
y=((num1-32)/1.8);
printf("%f\n",y);
}
}
}