C语言中,对于一个二维数组,我只想打印其中某一行的数据,可以吗?

#include"stdio.h"
int main()
{
int a[3][4] ={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
printf("%d\n",a[1]);
printf("%d\n",a[2]);
return 0;
}
如上,我只想打印第一行和第二行的数据,这样写可以吗,gcc编译通过,但是结果不对。

不可以! %d 代表int 型的数据,a[ 1 ] 这样是第二行的地址
只能以一个printf出来
#include"stdio.h"
int main()
{
int a[3][4] ={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
int i;
for ( i = 0; i < 4; i++ )
printf( "%d ", a[0][i] ); // a[ 0 ] 才是第一行
printf ( "\n" );
for ( i = 0; i < 4; i++ )
printf( "%d ", a[1][i] ); // a[ 1 ] 才是第二行
printf ( "\n" );
return 0;
}追问

是因为这样的,为看到另外一个程序 如下。
char str[3][20];
int i;
for (i=0;i<3;I++){
gets (str[i]);}
这里就是让我们输入三个字符串,在同一个数组里面,每行输入一串。
这样在一个数组里面,每行可以算作单独的一个字符串吗??这里的str[i]为什么就可以只写行数呢?

追答

i 是从0开始的没错呀,
恩, 字符数组可以一次性puts出来

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-08
可以单独打印某一行,但是你写的代码有错误,a【1】这样写是一维数组啊 可定不对的 按照二维数组的输出方式你编写就可以了 注意第一个【】就是你要打印的第几行追问

是因为这样的,为看到另外一个程序 如下。
char str[3][20];
int i;
for (i=0;i<3;I++){
gets (str[i]);}
这里就是让我们输入三个字符串,在同一个数组里面,每行输入一串。
这样在一个数组里面,每行可以算作单独的一个字符串啊??为什么这里可以用str[i],直接用i来代替一个行呢?这不也是一维了么~

追答

你的意思就是输入三行字符串,然后输出其中的一行是吧,那你可以特定的输出啊如输出第二行为 :for(int i=0;i<n;i++)
{
printf("%d",a[2][i]);
}

第2个回答  2013-04-08
肯定不可以!

for(int i = 0;i < N;i ++)
{
printf("%d ",arr[1][i]);

}

不知你明白了么?追问

请问一下,arr这个是什么意思呢?是自己定义的名字吗?

追答

arr是数组名,相当于你程序中的a,你好好复习一下二维数组的概念,你写的那个a[1]是第二行元素的地址,并非元素本身。

追问

是因为这样的,为看到另外一个程序 如下。
char str[3][20];
int i;
for (i=0;i<3;I++){
gets (str[i]);}
这里就是让我们输入三个字符串,在同一个数组里面,每行输入一串。
这样在一个数组里面,每行可以算作单独的一个字符串吗??这里的str[i]为什么就可以只写行数呢?书上说这里可以看成3个一维数组,也就是char str[3][20]这里。怎么理解哦

追答

每行是一个字符串,每行最多存储20个字符。str[i]表示的是第i行的地址,而第i行的地址又是一个一位数组的首地址,所以它可以存储。

第3个回答  2013-04-08
不可以
改一下
for(int i=0;i++;i<4)
printf("%d\n",a[1][i]);
a[2]那个一样的
第4个回答  2013-04-08
你的只能打印出a[1][0]的地址。
#include"stdio.h"
int main()
{
int x,y;
int a[3][4] ={{11,12,13,14},{21,22,23,24},{31,32,33,34}};
for(x=0;x<2;x++)
{
printf("\n");
for(y=0;y<4;y++)
{
printf("%d ",a[x][y]);
}
}
return 0;
}

这个可以。
相似回答