gpt4 book ai didi

c - c 中错误的浮点除法结果

转载 作者:行者123 更新时间:2023-11-30 20:21:18 27 4
gpt4 key购买 nike

void four_corners(float A[rows][columns]){
int up,down,right,left;
int x=2;
A[0][0]=(float)(up+left)/(float)(x);
A[0][19]=(float)(up+right)/(float)(x);
A[9][0]=(float)(down+left)/(float)(x);
A[9][19]=(float)(down+right)/(float)(x);}

当我在数组中插入四个值时,我没有得到它们的正确值。我的代码有什么问题吗?

最佳答案

试试这个:

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define W 10
#define H 20

void four_corners(float A[W][H], int up, int down, int right, int left) {
int x = 2;
A[0][0] = (float)(up + left) / (float)(x);
A[0][19] = (float)(up + right) / (float)(x);
A[9][0] = (float)(down + left) / (float)(x);
A[9][19] = (float)(down + right) / (float)(x);
}

void print_board(float A[W][H]) {
for (int i = 0; i < W; i++) {
for (int j = 0; j < H; j++) {
printf("%.1f ", A[i][j]);
}
}
}
int main(int argc, char *argv[]) {
float A[W][H];
memset(A, 0, W * H * sizeof(float));
four_corners(A, 1, 2, 3, 4);
print_board(A);
getch();
}

基本上,您在代码中遇到的问题是 updownrightleft 是它们都是局部变量,并且仅对 four_corners 函数可见。您认为在另一个作用域中执行 scanf 时它们已正确初始化,但实际上并非如此。如果您希望它们对 scanf 的作用域和 four_corners 作用域可见,您可以将它们作为参数传递给函数,也可以将它们设为全局。我建议您阅读更多有关 C scopes 的内容这对你来说将变得非常清楚。快乐编码!

关于c - c 中错误的浮点除法结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43145120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com