int main(void)
{
float height,inches;
int feet;
feet = height / CMFEET;
inches = height * CMinch;
printf("enter a height(cm)\n");
scanf("%f",&height);
while (height>0)
{
printf("%f cm = %d feet,%f inches\n", height, feet, inches);
printf("enter next height");
scanf("%f", &height);
}
printf("done!");
return 0;
}
最开始这段代码,在vs2022上无法运行,报如下错误,最主要的是局部变量未初始化
后来,在站内人工智能助手“C知道”那里得知,height未初始化时用于随后的运算语句中,会导致编译器报错,无法运行代码,人工智能的解决方法是
但是我没有按这方法重写代码,只是调整了下原来代码的顺序,把运算语句放到while循环体中
/*编写程序提示用户输入一个身高(厘米),并分别以厘米和英寸为单位显示该值,允许有小数,
可重复输入身高,直至输入一个非正值*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define CMFEET 30.48
#define CMinch 2.54
int main(void)
{
float height,inches;
int feet;
printf("enter a height(cm)\n");
scanf("%f",&height);
while (height>0)
{
feet = height / CMFEET;
inches = height * CMinch;
printf("%f cm = %d feet,%f inches\n", height, feet, inches);
printf("enter next height\n");
scanf("%f", &height);
}
printf("done!");
return 0;
}
然后代码运行正常了
其实输出也不正确,下面这个才正却的
/*编写程序提示用户输入一个身高(厘米),并分别以厘米和英寸为单位显示该值,允许有小数,
可重复输入身高,直至输入一个非正值*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define CMFEET 30.48//1英尺=30.48厘米
#define CMinch 2.54//1英寸=2.54厘米
int main(void)
{
float height,inches;
int feet;
printf("enter a height(cm)\n");
scanf("%f",&height);
while (height>0)
{
feet = height / CMFEET;//截断
//inches = height * CMinch;
inches = (height - CMFEET * feet) / CMinch;//截断后的feet*进率 要比height小,用二者差值可算出丢失的部分
printf("%1f cm = %d feet,%1f inches\n", height, feet, inches);
printf("enter next height\n");
scanf("%f", &height);
}
printf("done!");
return 0;
}