c语言中能不能用printf函数直接输出数组?如printf("%d",a[3][3]);
main(){inta[2][2]={1,2,3,4};printf("%d",a[2][2]);getch();}这个程序错在哪?为什么输出的是1393?而不是1234...
main()
{
int a[2][2]={1,2,3,4};
printf("%d",a[2][2]);
getch();
}
这个程序错在哪?为什么输出的是1393?
而不是12
34? 展开
{
int a[2][2]={1,2,3,4};
printf("%d",a[2][2]);
getch();
}
这个程序错在哪?为什么输出的是1393?
而不是12
34? 展开
5个回答
展开全部
限制在C语言中,利用printf直接输出数组是不可以的。
但是你的做法是可以的。只是问题出在你数组使用越界了。
解释一下:
printf不能直接用来输出数组。
例如:
#include<stdio.h>
int main(){
int a[3]={1,2,3};
int i;
for(i=0;i<3;i++)
printf("%d",a);
}
是错误的
所以要是输出数组的话,必须要借助其他的语句输出,要一个一个地输出,例如for语句的循环输出。
例如:
#include<stdio.h>
int main(){
int a[3]={1,2,3};
int i;
for(i=0;i<3;i++)
printf("%d",a[i]);
}
但是你这样的做法是可以:
因为你写的a[3][3]实际上已经指定了这个数字在这个二维数组中的横坐标和纵坐标,相当于一个int型的数据。但是不过你数组越界了。
额外引申一下:直接用scanf输入一个数组的量可以么?
#include<stdio.h>
int main(){
char a[3];
scanf("%c",&a);
int i;
for(i=0;i<3;i++)
printf("%c",a[i]);
}
这样输入3个字符,只能把输入的第一个字符放进a数组里面。因为a就是这个数组的地址,同时也表示这个数组的第一个。&a可以给数组的第一个放进一个字符,但是后面的就无能为力的。
代码均在Devc++测试。
展开全部
printf函数不能一次性输出数组里的内容。
你的printf中的a[2][2]不是代表一个数组,而是代表数组a的第三行第三个数,因为你的数组是从a[0][0]=1开始的,然后是a[0][1]=2,一直到a[1][1]=4。你定义的时候a[2][2]是代表整个a数组有两行两列。
printf里的a[2][2]这个位置已经超出了你定义的范围了。所以输出的是一个随机的数。
你的printf中的a[2][2]不是代表一个数组,而是代表数组a的第三行第三个数,因为你的数组是从a[0][0]=1开始的,然后是a[0][1]=2,一直到a[1][1]=4。你定义的时候a[2][2]是代表整个a数组有两行两列。
printf里的a[2][2]这个位置已经超出了你定义的范围了。所以输出的是一个随机的数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[2][2]这个数组里面下标最大只能取到1,也就是a[1][1].你输出a[2][2]这个已经超出数组范围,越界了。并且对于整数数组来说,一次只能输出一个元素。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a[0][0]=1
a[0][1]=2
a[1][0]=3
a[1][1]=4
a[2][2] 是没定义的。
a[0][1]=2
a[1][0]=3
a[1][1]=4
a[2][2] 是没定义的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你还是去多学习一下吧,你问的这个问题是最基本的,你却不知道!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询