以下程序运行后,输出结果是( )
main()
{
int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
以上程序可以贴进去直接运行,程序运行还不会操作的 看这里 。
这是一道数组基本知识题,这是一个4行4列的数组,定义的并赋初值。数组下标从0开始,即第一行第一个元素是a[0][0],第四行第四个是a[3][3]。
赋初值的时候,大括号{}里面又有3对{},对应3行,还有一行没写出来默认都是0 。每行是4个,但是 {}里面不够4个,后面缺的也是0 。相当于:
int a[4][4]={ {1,3,5,0},
{2,4,6,0},
{3,5,7,0},
{0,0,0,0} };
延伸:
如果定义数组时候行数没有写,int a[][4]={{1,3,5},{2,4,6},{3,5,7}}; 那 {} 里面有3对{},对应3行,
这个数组相当于 int a[3][4] = { {1,3,5,,0}, {2,4,6,0}, {3,5,7,0} };
我们也会经常遇到这样的情况:int a[][3]={1,3,5,2,4,6,3,5,7}; 我们知道{}里面有9个数,每行3列,刚好是3行。如果{} 有10个数呢,11个数呢?
2017年上海市二级C语言就考了这样一道题目:
设有定义:int a[][3]={1,2,3,4,5,6,7,8,9,10}; 则数组a第一维的大小是:(______)
A.3
B.4
C.5
D.有语法错误,不能确定
题目很简单,3行放不下就4行,5行就多一行浪费了。很多同学以前看到的都是恰好整除算出来行数,看到这样的就一愣,要犹豫一下。4行够用恰好,缺的2个元素默认是0 。
如果是char类型的数组,没写的默认值是 '\0' (ASCII表上第一个,编号为0)。
如char a[6] = {'1','3','5',' ','0'};
相当于char a[6] = {'1','3','5',' ','0','\0'};
也相当于char a[6] = {"135 0"};或者char a[] = {"135 0"};
char a[7] = {'1','3','5',' ','0'}; 和上面几个就不等价了,因为这个后是2个 '\0',长度不一样。