一般来说,这是编程的新手,它使用VisualStudio在C中创建一个程序,该程序会从用户处获取一个浮点,然后返回是否为负数,然后将其作为整数获取,最后返回整数的第一位。代码看起来像这样:
double extractDigit1(x){
double userFloatValue = x;
(userFloatValue >= 0) ? printf(" %f is a positive value.", userFloatValue) :
printf(" %f is a negative value.", userFloatValue);
}
int main(){
double userValue;
scanf_s("%lf", &userValue);
extractDigit1(userValue);
}
输入1234.345可让我:
"1202590843.000000 is a positive value."
代替:
"1234.345 is a positive value."
答案 0 :(得分:3)
根本问题是
double extractDigit1(x)
不是正确的函数原型,应为double extractDigit1(double x)
根据您的写法,x被认为是int
,与其余代码不兼容。
请注意
您的函数不返回任何内容,而其原型说明了
这是一种不确定的行为,可能导致任何后果
最后
scanf_s
函数,其功能几乎与scanf
类似,但处理字符串的方式不同,并且移植性较差(请参见Difference between scanf and scanf_s)。我建议您不要使用它。更正的代码:
#include <stdio.h>
double extractDigit1(double x){
double userFloatValue = x;
(userFloatValue >= 0) ?
printf(" %f is a positive value.", userFloatValue) :
printf(" %f is a negative value.", userFloatValue);
return 0;
}
int main(){
double userValue;
scanf("%lf", &userValue);
extractDigit1(userValue);
return 0;
}
答案 1 :(得分:-2)
double userFloatValue = x;
int my_var = (int)userFloatValue ;
(userFloatValue >= 0) ? printf(" %d is a positive value.", my_var ) :
printf(" %d is a negative value.", my_var ) ;
使用scanf而不是scanf_s scanf(“%f”,&a);