1.一维数组是一行,而二维数组是多行(注意虽然多行,但每一行存储的元素数量是相同的)
2.二维数组的创建(注意:创建二维数组时,x可以省略,但y必须说明具体值)
例子:int a[x][y]; 其中x表示数组的行数,而y则表示每一行元素的个数
3.二维数组进行初始化时
(1)int [3][4]={1,2,3,4,5,6,7}
没有初始化的部分元素默认为0;
同时元素的赋值是按照顺序一个一个来的;
(2)int [3][4]={{1,2},{3,4,5},{6,7}}
这种写法可以打乱顺序,将赋值指定在某一行,如{1,2}是指定赋值在第一行(第一行剩余 的部分则默认为0)
4.二维数组中元素的访问
(1)二维数组的行数下标也和元素下标一样是从0开始
(2)由(1)可知二维数组元素的访问类似于一维数组,只不过需要多说明一个行数的下标
5.例子(打印一个二维数组)
(3)作答:
#include<stdio.h>
int main()
{
int a[3][4] = { 1,2,3,4,5,6,7,8,9,1,9,8 };//定义一个二维数组(数组3行4列)
int b, c;
for (b = 0;b < 3; b++)
{
for (c = 0; c < 4; c++)
{
printf("%d\n", a[b][c]);
}
}
return 0;
}
纠错,导致输出后的结果不理想的情况有两个原因
第一个:换行操作符选错了位置,题目是要打印四个元素后才换行,而此处是打印一次换一行
改后:
#include<stdio.h>
int main()
{
int a[3][4] = { 1,2,3,4,5,6,7,8,9,1,9,8 };//定义一个二维数组(数组3行4列)
int b, c;
for (b = 0;b < 3; b++)
{
for (c = 0; c < 4; c++)
{
printf("%d", a[b][c]); //问题二所在处
}
printf("\n"); //执行到此后换行
}
return 0;
}
第二个问题:由于输出的格式没有空格,这就导致输出的元素都是紧凑的
改后:
#include<stdio.h>
int main()
{
int a[3][4] = { 1,2,3,4,5,6,7,8,9,1,9,8 };//定义一个二维数组(数组3行4列)
int b, c;
for (b = 0;b < 3; b++)
{
for (c = 0; c < 4; c++)
{
printf("%d ", a[b][c]);
}
printf("\n");
}
return 0;
}
(4)
问题:由于输出的
补充有关printf()函数的知识点
printf("格式字符串", 参数 1, 参数 2,..., 参数 n);
格式字符串
:指定了输出的格式(如:"%d %d"指打印一个整数之后空一个格子再打印一个整数,而"%d%d"是连续的),包括要显示的文本(即字符串)、占位符以及其他特殊字符(如换行\n)。参数
:是要插入到格式字符串中的值,可以是常量、变量或表达式。
printf
函数根据格式字符串中的占位符来确定如何处理相应的参数。常见的占位符包括:
%d
:用于整数类型的输出。%f
:用于浮点类型(单精度或双精度)的输出。%s
:用于字符串类型的输出。%c
:用于单个字符类型的输出。