我一直在研究一些代码,但看起来我的逻辑不正确。 我正在尝试创建一个程序,将数字(a)分成相等的部分(b)(如果可能的话),然后将这些结果以及初始分割数保存到数组中。像这样:
所以我这是我的代码:
for (i=0; i<b; i++)
{
if (a%b)
{
array[i]=a/b;
}
else
{
array[0]=(a/b)+(a%b);
array[i+1]=a/b;
}
printf("\n\nIn range %d there are %d\n\n",i,Sub_arr_len[i]);
}
看起来第一种情况正在发挥作用,但第二种情况并非如此,我不知道为什么。有什么想法吗?
答案 0 :(得分:0)
在第
行 array[0]=(a/b)+(a%b);
您的第一个数组元素是整数除法,加上余数。对于任何具有余数的部门,您的计划将无法运作。它将整数除法存储在除第一个之外的所有元素中,其中它与余数相加。
为了解决这个问题,我会将大部分代码写入if语句,测试模数是否为0。我假设你不想保存任何数组,如果你的除法不会产生相等的部分,所以你应该只做你正在做的事情a%b = 0
。