在我设置*area = 2
或其他任何int的函数中,我的程序按预期工作。出于某种原因,我无法通过宽度计算长度并将其正确放置,我得到的只是0' s。我错过了什么?这是电话中的内容吗? %f
也是double
的适当转换,还是有更好的用途?我的代码如下:
#include <stdio.h>
void area_perimeter(double width, double length, double *area, double *perimeter);
int main(){
double width, length, are, peri;
printf("Enter the width of the rectangle: ");
scanf("%f",&width);
printf("Enter the length of the rectangle: ");
scanf("%f",&length);
area_perimeter(width, length, &are, &peri);
printf("The area of the rectangle is: %f\n",are);
printf("The perimeter of the rectangle is: %f\n",peri);
return 0;
}
void area_perimeter(double width, double length, double *area, double *perimeter){
*area = length * width;
*perimeter = (*area * 2);
}
答案 0 :(得分:4)
您通过将指针传递给%f
scanf()
float*
来自double*
的{{1}}对象来调用未定义行为,但是您通过了%lf
}。使用%f
读取双倍。
在printf()
中使用double
打印%lf
很不错。 C99编译器也将接受#include <stdio.h>
void area_perimeter(double width, double length, double *area, double *perimeter);
int main(void){
double width, length, are, peri;
printf("Enter the width of the rectangle: ");
if (scanf("%lf",&width) != 1) {
fputs("read error width\n", stderr);
return 1;
}
printf("Enter the length of the rectangle: ");
if (scanf("%lf",&length) != 1) {
fputs("read error length\n", stderr);
return 1;
}
area_perimeter(width, length, &are, &peri);
printf("The area of the rectangle is: %f\n",are);
printf("The perimeter of the rectangle is: %f\n",peri);
return 0;
}
void area_perimeter(double width, double length, double *area, double *perimeter){
*area = length * width;
*perimeter = (*area * 2);
}
。
试试这个:
d3.csv("../hello.csv", function(data) {
console.log(data);
var all = [];
data.map(function (d) {
Array.prototype.push.apply(all, d.description.split(" "));
});
console.log(all);
});