知识小程序

知识小程序,请教大家
                   1        2         3           4                5               6                 7
1                 1                                1
2                           1                                        1               1
3                                      1
4                                                                     1               1
5
6                  1                  1           1
7                                                                                      1                   1

比方说我定义一个num[i]表示1~7行,怎样表示1(1的位置是不固定的)出现的列数,最后输出num[1]=1,4        num[2]=2,5,6        num[3]=3……依次类推
我用的
for(int h=1;h<=7;h++)
{
if(MyExcel.GetCellString(i,h)=="1")
{
num[i] = MyExcel.GetCellString(0,h);
}
}

但是只能输出一个数,一行中有两个以上“1”的就不行了,请教大家了,该怎么写
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

需要个二维结构,像这样。

vector<vector<size_t>> num;
num[i].push_back(MyExcel.GetCellString(0,h));
问题是不知道是一个“1”还是多个“1”,如果都是多个的话还要判定个数,用push_back的话不知道后面有多少个字符串啊

有一个就加一个呗,push_back 不就干这个的吗。真不明白你困惑在哪里了,这么朴素的情况。
额,我这不是初学者么,好多不明白呢,我查了下push_back ,这输出直接就是字符串的拼接吧,没有中间的逗号

没有,push_back 不负责输出,只负责把各行中的 1 分别管理起来,全部存储后看起来像这样,每一个 num[i] 类似一个数组。
num[1]=1,4        num[2]=2,5,6        num[3]=3…
楼主还是先把基础打牢吧,虽说初学问题多可以理解,但技术不到位也不能霸王硬上弓啊。
------解决思路----------------------
仅供参考:
//      1  2  3  4  5  6  7
//1     1        1
//2        1        1  1
//3           1
//4                 1  1
//5
//6     1     1  1
//7                    1  1
//
//比方说我定义一个num[i]表示1~7行,
//怎样表示1(1的位置是不固定的)出现的列数,
//最后输出num[1]=1,4  num[2]=2,5,6  num[3]=3……依次类推
#include <stdio.h>
char s[8][26]={
"      1  2  3  4  5  6  7",
"1     1        1         ",
"2        1        1  1   ",
"3           1            ",
"4                 1  1   ",
"5                        ",
"6     1     1  1         ",
"7                    1  1",
};
int num[7],y,x,f;
int main() {
    for (y=0;y<7;y++) num[y]=0;
    for (y=0;y<7;y++) {
        for (x=0;x<7;x++) {
            if (s[y+1][6+x*3]=='1') num[y]
------解决思路----------------------
=1<<x;
        }
    }
    for (y=0;y<7;y++) {
        printf("num[%d]=",y+1);
        f=1;
        for (x=0;x<7;x++) {
            if ((1<<x)&num[y]) {
                if (f) {
                    printf("%d",x+1);
                    f=0;
                } else {
                    printf(",%d",x+1);
                }
            }
        }
        printf("\n");
    }
    return 0;
}
//num[1]=1,4
//num[2]=2,5,6
//num[3]=3
//num[4]=5,6
//num[5]=
//num[6]=1,3,4
//num[7]=6,7
//