69,382
社区成员
发帖
与我相关
我的任务
分享
sum = b1[a] + b2[b] + b3[c] + b4[d] + b5[e];
这儿的sum的值是0,因为b1[a]。。。b5[e]都是0。因为下标是从0开始,而不是1开始。
所以上面的sum = b1[a] + b2[b] + b3[c] + b4[d] + b5[e];等价sum = b1[9] + b2[9] + ... + b5[9];
b1[9] ... b5[9]都是0。for (a = 1; a <= 8; a++)
{
b1[a] = 1;
b1[a] = 4;
b1[a] = 3;
b1[a] = 4;
b1[a] = 5;
b1[a] = 6;
b1[a] = 7;
b1[a] = 0;
}
这个循环有很多冗余的操作
等价与下面的
for (a = 1; a <= 8; a++)
{
b1[a] = 0;
}
所以要么你的循环写的有问题,要么就是逻辑考虑的有问题
下面的几个循环都是这样的问题
#include "stdafx.h"
#include<stdio.h>
#define MAX 8
int main(void)
{
int a, b, c, d, e, i = 0;
int sum = 0;
int b1[MAX] = { 1,4,3,4,5,6,7,0 };
int b2[MAX] = { 1,1,3,4,5,3,7,0 };
int b3[MAX] = { 1,7,3,4,5,6,7,0 };
int b4[MAX] = { 1,1,3,4,5,4,7,0 };
int b5[MAX] = { 1,1,3,4,5,6,7,0 };
for (a = 0; a < MAX; a++) {
for (b = 0; b < MAX; b++) {
for (c = 0; c < MAX; c++) {
for (d = 0; d < MAX; d++) {
for (e = 0; e < MAX; e++) {
sum = b1[a] + b2[b] + b3[c] + b4[d] + b5[e];
if (5 == sum) {
printf("A:%2d B:%2d C:%2d D:%2d E:%2d ", b1[a], b2[b], b3[c], b4[d], b5[e]);
i++;
if (i % 1 == 0)
printf("\n");
}
}
}
}
}
}
printf("共有%d种办法\n", i);
return 0;
}