目录
以下是今天所学的思维导图:
1.二维数组
有效解决行(column)和列(row)的队列数据处理,二维数组也可以叫做矩阵
- 定义二维数组:
类型名 数组名 [行常量表达式] [列常量表达式]
注意:数组名符合标识符规则
数组长度必须确定,即个数确定
常量表达式不能是变量(不确定的值)
- 初始化二维数组
定义全部元素赋予初值
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int arr[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
定义时一部分元素赋予初值,没被赋值的元素系统会默认赋0进行对二维数组的初始化
int arr[3][4] = {{0}, {1, 2}, {4}};
int arr[3][4] = {0};
如果数组都被赋予了初值,数组第一维长度可以省略,C语言会根据元素自行推导
int arr[][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
注意:列常量必须要写,不写程序会报错
下例子是简单的程序编辑:
#include<stdio.h>
int main()
{
//二维数组的定义和初始化
int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int i,j;
int sum = 0;
//从键盘输入的方式给二维数组赋值
// printf("请输入3*4的二维数组:\n");
// for(i=0;i<3;i++)
// {
// for(j=0;j<4;j++)
// {
// scanf("%d", &arr[i][j]);
// }
// }
//二维数组的打印
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
sum += arr[i][j];
}
}
printf("sum=%d",sum);
return 0;
}
以下是一个输出数组的函数,定义的时候就是像上个例子一样定义
做一个练习,求出3位同学的四科成绩的平均值,以及这些成绩的最大值和最小值
#include<stdio.h>
//从键盘输入二维数组中的每个元素的值
int print_arr(int arr[][4],int x,int y)
{
int i;
int j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
printf("%d\t",arr[i][j]);
}
printf("\n");
}
}
int scanf_arr(int arr[][4],int x,int y)
{
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
scanf("%d",&arr[i][j]);
}
}
return 0;
}
//求二维数组中的最大值和最小值
int maxmin_arr(int arr[][4],int x,int y)
{
int i,j;
int max= arr[0][0];
int min= arr[0][0];
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
if(max<arr[i][j])
{
max=arr[i][j];
}
if(min>arr[i][j])
{
min=arr[i][j];
}
}
}
printf("最大数为%d \n",max);
printf("最小数为%d \n",min);
return 0;
}
//求二维数组中每一行的平均值
int ave_arr(int arr[][4],int x,int y)
{
int i,j;
int sum[3]={0};//保存每个学生的总成绩的数组
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
sum[i]+= arr[i][j];
}
printf("平均数是%d\n",sum[i]/4);
}
printf("\n");
return 0;
}
int main()
{
int score[3][4];
printf("请输入成绩:\n");
scanf_arr(score,3,4);
print_arr(score,3,4);
maxmin_arr(score,3,4);
ave_arr(score,3,4);
return 0;
}
2.变量类型和作用域
- 定义变量有四种情况:
- 在函数的开头定义
- 在函数内定义
- 在复合语句中定义
- 在函数的外部定义
- 变量类型分为全局变量和局部变量
全局变量在函数外定义,在本文件中的所有函数都可以使用,定义范围从定义到文件结束
局部变量是在函数内定义的变量,只能在该函数使用
但是,不同的函数可以使用相同的变量名,他们代表不同的对象,互不干扰
- 全局变量和局部变量的区别