| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 549 人关注过本帖
标题:[求助]关于二维数组
只看楼主 加入收藏
gonua
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-16
收藏
 问题点数:0 回复次数:6 
[求助]关于二维数组

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编辑过]

搜索更多相关主题的帖子: 二维 
2006-09-04 13:44
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 

#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);
}


由于工作,N久都没来了!
2006-09-04 16:33
gonua
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-16
收藏
得分:0 

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

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

2006-09-04 21:03
gonua
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-16
收藏
得分:0 
怎么没人理我呢。。。
如果
输入需要从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的方法不一样?区别在哪里?
2006-09-05 17:56
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
[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]

我把它当作一个一维行矩阵处理。

由于工作,N久都没来了!
2006-09-05 20:13
gonua
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-16
收藏
得分:0 

明白了。。。多谢~~~

2006-09-05 20:59
gonua
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-4-16
收藏
得分:0 

不好意思,我再多问一个问题。。。。
如果
输入需要从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编辑过]

2006-09-05 22:46
快速回复:[求助]关于二维数组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054941 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved