关于二维数组的程序 对与组二维字符数组中相同字符的输出
#include <stdio.h>
int main()
{
char a[]={ 'a ', 'b ', 'c ', 'd ', 'e '};
char b[]={ 'i ', 'o ', 'p ', 'd ', 'e ', 'a '};
char *pa,*pb;
int s=0;
pa=a;
while (*pa!= 'e ')
{
*pa++;
pb=b;
while (*pb!= 'a ')
{
{
*pb++;
}
if (*pa==*pb)
{
s++;
printf( "%c\n ",*pb);
}
}
}
printf( "%d\n ",s-1);
return 0;
}
这个是一维的
但是将a[]改为a[2][5]={ 'a ', 'b ', 'c ', 'd ', 'e ' 'f ', 'f ', 'g ', 'g '};
b[]改成b[2][8]={ 'i ', 'o ', 'p ', 'd ', 'e ', 'a ', 'f ', 'f ', 'g ', 'k '};
现在应该个怎么改
[解决办法]
a[2][5]={{ 'a ', 'b ', 'c ', 'd ', 'e '}, { 'f ', 'f ', 'g ', 'g '} };
b[2][8]={{ 'i ', 'o ', 'p ', 'd ', 'e ', 'a ', 'f ', 'f '},{ 'g ', 'k '} };
[解决办法]
说说你程序要完成什么功能吧,你那个程序printf( "%d\n ",s-1);为什么s要减一。
[解决办法]
#include <stdio.h>
二维数组在内存中也是顺序存放的,这里可以简单的转换为char指针顺序访问就行了
int main()
{
char a[2][5]={ 'a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'f ', 'g ', 'g '};
char b[2][8]={ 'i ', 'o ', 'p ', 'd ', 'e ', 'a ', 'f ', 'f ', 'g ', 'k '};
char *pa,*pb;
int s=0;
pa=(char*)a; //转换char*
while (*pa!= 'e ')
{
*pa++;
pb=(char*)b; //转换char*
while (*pb!= 'a ')
{
{
*pb++;
}
if (*pa==*pb)
{
s++;
printf( "%c\n ",*pb);
}
}
}
printf( "%d\n ",s-1);
return 0;
}