普通网友 2018-03-11 02:33 采纳率: 100%
浏览 1904

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。
能不能不用数组来赋值,用变量。用数组的话,感觉数组很复杂。

  • 写回答

2条回答 默认 最新

  • 关注

    运行结果如图
    图片说明
    图片说明

    代码如下:

    #include "stdafx.h"
    #include "stdio.h"
    int main()
    {
        int a, b, i = 0;
        int sum = 0;
        int b1[4] = {2,4,3 };
        int b2[4] = { 3,4,2 };
        for (int a = 0; a<3; a++)
        {
            for (int b = 0; b<3; b++)
            {
                sum = b1[a] + b2[b] ;
                if (sum == 4)
                {
                    printf("A:%2d B:%2d \n", b1[a], b2[b]);
                    i++;
                }
            }
        }
        printf("共有%d种办法\n", i);
        return 0;
    }
    

    望采纳

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题