2重for循环,如何循环赋值,以及判定求和的条件

我这里先给个程序的样板,有可能是错误的啊,老铁,帮忙给看看啊。谢谢啦。
#include "stdafx.h"
#include
#include
int main()
{
int a, b, i = 0;
int sum = 0;
int b1[4] = {2,4,3 };
int b2[4] = { 3,4,2 };
for (a = 1; a <= 3; a++)
b1[a] = 2;
b1[a] = 4;
b1[a] = 3;
/*
这里是第一个for循环,就是希望能够循环赋值给一个数组,具体想要实现的功能是:
当a=1的时候,b1[1]=2,然后把这个数字存储到数组,方便下面做sum求和用。
当a=2的时候,b1[2]=4,然后把这个数字存储起来,方便下面做sum求和用。
当a=3的时候,b1[3]=3,然后把这个数字存储起来,方便下面做sum求和用。
/
for (b = 1; b <= 3; b++)
b2[b] = 3;
b2[b] = 4;
b2[b] = 2;
/

这里是第二个for循环,就是希望能够循环赋值给一个数组,具体想要实现的功能是:
当b=1的时候,b1[1]=3,然后把这个数字存储到数组,方便下面做sum求和用。
当b=2的时候,b1[2]=4,然后把这个数字存储起来,方便下面做sum求和用。
当b=3的时候,b1[3]=2,然后把这个数字存储起来,方便下面做sum求和用。
/
sum = b1[a] + b2[b] ; /
刚刚是希望能够循环给for 赋值,现在是希望能够根据刚刚的不同的值,来循环判定sum的和。*/
if (sum == 6)
{
printf("A:%2d B:%2d ", b1[a], b2[b]); /* 如果sum等于6,那么把b1[a],b2[b]的值打印出来。*/
i++;
if (i % 1 == 0)
printf("\n"); /* i用了统计次数,看看总共有多少种组合方法。每一种方法i都自动加1*/
}
printf("共有%d种办法\n", i);
return 0;
}
希望看见的运行结果是 :( b1[1] = 2 + b2[2] = 4 ) ==6 ==sum
( b1[3] = 3 + b2[1] = 3 ) ==6 ==sum
( b1[2] = 4 + b2[3] = 2 ) ==6 ==sum
......
共有x种办法;
注意:1 : 可以不用数组来赋值。也可以用变量,但是我要求的值是特定的值,比如当 b ==1的时候,某一个变量要等于3,然后要用这个变量来参与sum求和。判定为6的时候,把该变量打印出来。
2 :帮我看看sum 和那个等式有没有循环来判定,我是希望每一次循环都能判定一次sum求和
4:帮我看看我用for循环,循环赋值的时候是不是错啦?因为那个数组好像是从0开始的,我希望能够从1开始,如果要是从1开始,我给数组赋初值的时候是不是也赋值错啦。可以不用我的程序,我只是想演练一下自己的要实现的功能。
3 :小程序,也不难,希望能够帮我写一个完整的小程序。希望能够保留的功能是,有多少种办法也就是i能够算清楚。然后,sum=6所涉及的2个变量的值的全部组合情况能够全部打印出来。最后希望程序能够尽量简单一点,有个main函数就可以啦。最好是在我原来代码的基础上简单的改动一下。不要用count 这些编译器会报错。我用的是vs2015。希望用的包能够提醒一下。我好导入进去。
下面我把注释删掉:给一个完整程序,帮我修改一下:
#include "stdafx.h"
#include
#include
int main()
{
int a, b, i = 0;
int sum = 0;
int b1[4] = {2,4,3 };
int b2[4] = { 3,4,2 };
for (a = 1; a <= 3; a++)
b1[a] = 2;
b1[a] = 4;
b1[a] = 3;
for (b = 1; b <= 3; b++)
b2[b] = 3;
b2[b] = 4;
b2[b] = 2;
sum = b1[a] + b2[b] ;
if (sum == 6)
{
printf("A:%2d B:%2d ", b1[a], b2[b]);
i++;
if (i % 1 == 0)
printf("\n");
}
printf("共有%d种办法\n", i);
return 0;
}

有的朋友给出啦如下的解决方案:
#include "stdafx.h"
#include "windows.h"
int main()
{
int c = 0;
int sum = 0;
int b1[4] = { 2,4,3 };
int b2[4] = { 3,4,2 };
for (int i = 0; i<4; i++)
{
for (int j = 0; j<4; j++)
{
sum = b1[i] + b2[j];
if (sum ==6)
{
printf("A:%2d B:%2d \n ", b1[i], b2[j]);
c++;
}

    }
}
printf("共有%d种办法\n", c);

system("pause");
return 0;

}
运行结果为:
图片说明

但是我把参数修改成sum ==4的时候,运行结果为:
图片说明

4+0 ==4。这个不是我想要看到的结果,我只是希望能看到2+2==4,也就是说
sum要求的和值4,必须的出自b1[]和b2[]这两个数组。但是4是出自于数组b1[],0是从哪里跑出来的呀?我不需要这个0。

能不能不用数组来赋值,用变量。用数组的话,感觉数组很复杂。

1个回答

因为 你这里写了

int b1[4] = { 2,4,3 };
int b2[4] = { 3,4,2 };
也就是 b1[0]=2, b1[1]=4, b1[2]=3, b1[4]=0;
你数组长度是4,但是你只赋值了3个,默认为0;

qijixingzhe
qijixingzhe 厉害啦,老铁,双击666.给你点个赞
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!