当前位置: 代码迷 >> C语言 >> [求助]关于2维数组找数变形问题(紧急)
  详细解决方案

[求助]关于2维数组找数变形问题(紧急)

热度:211   发布时间:2006-02-20 03:18:00.0
[求助]关于2维数组找数变形问题(紧急)

我身在国外,刚学编程半学期。老师出考试题刁难请求各位高手帮助
输入一个任意的2维数组A(X,Y)并用任意数字将此2维数组填满;再输入任意长度X2的1维数组B并用任意数字填满(但是2维数组与1维数组的对应项不能相等,如2维数组第2个数是3那么1维数组第2个数不能=3);要求输出如下:
将2维数组的每一个横行与X2中的数字比较,如果横行中的所有数字在1维数组X2中都有,那么将此横行中的所有数字显示为竖行,如果没有或不全则依然显示为横行。
如: 输入的2维数组 A(3,4) A={{1, 2, 3} ,{4,5,6},{7,8,9},{10,11,12}}
输入的1维数组B(5) B={2,8,7,11,9} 则输出 1 2 3
4 5 6
7
8
9
10 11 12

搜索更多相关的解决方案: 找数  

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

/*比较麻烦。希望大家指正*/
#include <stdio.h>
#include <conio.h>
#define M 4
#define N 3
#define L 5

void main()
{
int i,j,count=0,k;
int a[M][N],b[L];


printf("please input a[M][N]\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);

fflush(stdin); /*虽然有人对此有异议,但不加b[L]无法正常输入*/
printf("please input b[L]:\n"); /*已测试(XP,win-tc)*/
for(k=0;k<L;k++)
{

scanf("%d",&b[k]); /*此处输入要输入一次按一次回车,不可连续输入*/
count++;
j=(count%N)-1;
i=(count-j-1)/N;
if(b[k]==a[i][j])
{
k--;
count--;
printf("input the last one again:\n");
}

}

for(i=0;i<M;i++)
{
count=0;
for(j=0;j<N;j++)
for(k=0;k<L;k++)
if(a[i][j]==b[k])
{
count++;
break;
}
if(count!=N)
{
for(j=0;j<N;j++)
printf("%3d",a[i][j]);
printf("\n");
}
else
for(j=0;j<N;j++)
printf("%3d\n",a[i][j]);

}

getch();
}


楼主举例有问题,三行四列是那么赋值吗?你那是四行三列


----------------解决方案--------------------------------------------------------
以下是引用feng1256在2006-2-20 5:58:00的发言:

楼主举例有问题,三行四列是那么赋值吗?你那是四行三列

是很复杂,好像没有问题,高手


----------------解决方案--------------------------------------------------------
太感谢了,我将继续好好学习编程,在编程方面我还有很多东西都不懂以后还请大哥哥指点
----------------解决方案--------------------------------------------------------
  相关解决方案