gpt4 book ai didi

c - Printf 输出一堆零

转载 作者:行者123 更新时间:2023-11-30 14:58:59 25 4
gpt4 key购买 nike

我是 C 语言新手,所以如果这个问题的答案非常明显,我深表歉意!我的意思是循环遍历两个 2D 数组,将相应的索引成员作为参数传递给 chineseRemainder 例程,即对于每次迭代, array1[i] 和 array2[i] 应传递给例程,其中 i = i。我期望 printf 调用的输出是一组特定的数字 - 相反,我得到的全是零。这是主例程,我在其中调用 CR 函数。 **编辑我给了 xp 和 xq 任意 int 值,因为它们似乎不是问题,并且给它们这样的值会给出相同的输出。

int main(){

int xp, xq, p = 61, q = 3;
int i, j;

reverseInteger();

for(i = 0; i < 32; ++i){
for(j = 0; j < 10; ++j){
xq = 4;
xp = 1;
printf("%i\n", chineseRemainder(xq, xp, p, q));
}
}


return 0;

}

为了进行故障排除,我转储了 xq 和 xp 的内容以确保这些分配正在完成:它们正在完成。问题一定出在 CR 例程上,因为即使我向它传递任何整数集,它也会打印零。所以,这是该函数及其依赖项:

float power(int base, int exp) {

int i;
float result = 1;

if (exp == 0)
result = 1;

else if (exp == 1)
result = base;

else if(exp > 1){
for (i = 0; i < exp; ++i)
result *= base;
}

else
result = 1/power(base, -exp);

return result;

}

float powerMod(int q, int e, int p){

float result;

result = (int)power(q, e) % p;

return result;

}

typedef struct arrayInside{

int array[30][10];

} arrayInside;

arrayInside codesInside;

struct arrayInside reverseInteger(){

int i, j, number;

for(i = 0; i < 30; ++i){
j = 10;
number = (aryConversion(q3[i], 3));
do {
codesInside.array[i][j-1] = number % 10;
--j;
number = number / 10;
}
while (number);
codesInside.array[i][0] = 0;

};

return codesInside;
}

int chineseRemainder(int xq, int xp, int p, int q){

int tp;
int ceiling = (p*q-1)/2;

tp = ((int)(q * (powerMod(q, -1, p))*xp + p * powerMod(p, -1, q) * xq) % (p*q));
if(tp > ceiling)
tp-=p*q;

return tp;

}

最佳答案

你的 chineseRemainder 实际上每次都返回 0。看看这个 -

((int)(q * (powerMod(q, -1, p))*xp + p * powerMod(p, -1, q) * xq) % (p*q));

powerMod(q, -1, p) 为零。所以乘法和加法也会得到零。你的函数实际上返回零。没有任何错误。您可能需要检查逻辑或更改数据类型。

关于c - Printf 输出一堆零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43060006/

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