当前位置: 代码迷 >> C语言 >> [求助]关于二维数组
  详细解决方案

[求助]关于二维数组

热度:301   发布时间:2006-09-04 13:44:36.0
[求助]关于二维数组

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
00 00 00 00 00

怎样从上面的图换取下面的图,我用一个二维数组table[3][10]得到了上面的图,可是我不会从0换去1,从00换去11。
有那位高手可以帮帮我~~先谢拉~~
请输入需要从0换去1的个数:3
1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
00 00 00 00 00

然后是,请输入需要从00换去11的个数:2
显示为:
1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
11 11 00 00 00

这是我写的代码,可以得到第一个图。。。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define ROWS 3
#define COLS 10

int main(void)
{
int table[ROWS][COLS];
int num;
int i, j, k, l;

for(i = 0; i < ROWS; i++)
for(j = 0; j < COLS; j++)
table[i][j] = 0;

for(i = 0; i < ROWS-1; i++)
{
for(j = 0; j < COLS; j++)
{
printf("%2d", table[i][j]);
}
printf("\n");
}

for(i = 2; i < ROWS; i++)
{
for(j = 0; j < COLS-5; j++)
{
printf("%2d%d ", table[i][j], table[i][j+1]);
}
printf("\n");
}

printf("\请输入需要从0换去1的个数: ");
scanf("%d", &num);

......

printf("\请输入需要从00换去11的个数: ");
scanf("%d", &num);
.......
return 0;
}

拜托各位了~~

[此贴子已经被作者于2006-9-4 13:53:49编辑过]

搜索更多相关的解决方案: 二维  

----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define ROWS 3
#define COLS 10

int main(void)
{
int table[ROWS][COLS];
int num;
int i, j;

for(i = 0; i < ROWS; i++)
for(j = 0; j < COLS; j++)
table[i][j] = 0;

for(i = 0; i < ROWS-1; i++)
{
for(j = 0; j < COLS; j++)
{
printf("%2d", table[i][j]);
}
printf("\n");
}

for(i = ROWS-1; i < ROWS; i++)
{
for(j = 0; j < COLS/2; j++)
{
printf("%2d%d ", table[i][j], table[i][j+1]);
}
printf("\n");
}

INTER1:printf("\n请输入需要从0换去1的个数:");
scanf("%d", &num);
if(num<=COLS*2){
for(i=0;i<ROWS-1;i++){
for(j=0;j<num;){
table[i][j]=1;
j++;
if(j==COLS)
break;
else if(j==num)
break;
}
if(COLS<=num&&num<=COLS*2){
num=num-COLS;
continue;
}
else
break;
}
}
else {
printf ("\n输入的数太大,数字应该小于等于%d\n",2*COLS);
goto INTER1;
}
for(i = 0; i < ROWS-1; i++)
{
for(j = 0; j < COLS; j++)
{
printf("%2d", table[i][j]);
}
printf("\n");
}

for(i = ROWS-1; i < ROWS; i++)
{
for(j = 0; j < COLS-5; j++)
{
printf("%2d%d ", table[i][j], table[i][j+1]);
}
printf("\n");
}


INTER2:printf("\n请输入需要从00换去11的个数: ");
scanf("%d", &num);
if (num<=COLS/2){
for(j=0;j<num;j++){
table[ROWS-1][j]=1;
if(COLS/2==j)
break;
}
}
else {
printf ("\n输入的数太大,数字应该小于等于%d\n",COLS/2);
goto INTER2;
}
for(i = 0; i < ROWS-1; i++)
{
for(j = 0; j < COLS; j++)
{
printf("%2d", table[i][j]);
}
printf("\n");
}

for(i = ROWS-1; i < ROWS; i++)
{
for(j = 0; j < COLS/2; j++)
{
printf("%2d%d", table[i][j],table[i][j]);
}
printf("\n");
}

exit(0);
}


----------------解决方案--------------------------------------------------------

真是太感谢了~~
我想问一下那个num = num -COLS的值是什么。。我不太明白....

[此贴子已经被作者于2006-9-4 23:18:59编辑过]


----------------解决方案--------------------------------------------------------
怎么没人理我呢。。。
如果
输入需要从00换去11的个数:4
显示为:
1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
11 11 00 00 00

为什么和0换去1的方法不一样?区别在哪里?
----------------解决方案--------------------------------------------------------
[QUOTE]我想问一下那个num = num -COLS的值是什么。。我不太明白....[/QUOTE]
当数输入的数字大于列数,会继续替换,直到等于列数,因为这个矩阵的前两行是对称的,我把它当做一个2*10的矩阵处理。

[QUOTE]如果
输入需要从00换去11的个数:4
显示为:
1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
11 11 00 00 00
为什么和0换去1的方法不一样?区别在哪里?
[/QUOTE]

我把它当作一个一维行矩阵处理。
----------------解决方案--------------------------------------------------------

明白了。。。多谢~~~


----------------解决方案--------------------------------------------------------

不好意思,我再多问一个问题。。。。
如果
输入需要从00换去11的个数:4

1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
11 11 00 00 00

这样的话要怎样算,我用table[i][j]和table[i][j+1]做的总是少一个1或是多一个1
像是
11 10 00 00 00
或是
11 11 10 00 00

要怎么做呢。。。麻烦大家帮我一下。。。。

[此贴子已经被作者于2006-9-6 15:24:56编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案