小小白学习C语言课后总结——一维数组以及二维数组

        今天主要学习数组,本来还要学习指针的,但是数组占用的时间长了,指针没时间学了。

现在总结一下今天学习的内容,加深自己的记忆。

数组(可以存储多个具有同种类型的数据)

一维数组

1.1 一维数组定义:

数据类型 数组名[元素个数]

例如:

1.存储班级的成绩,班里有20个人

float scores[20];(成绩有小数,用float)

2.存储班级同学的年龄,班级里有5个人

int ages[5];(年龄用整型int)

3.存储26个小写字符

char word[26];(字符用用字符型char)

1.2 数组的下标

数组中会为每一个元素进行编号,且编号从0开始,一次增长1,定义完数组就会自然产生。

比如:

int b[5]——下标就会从0开始到4结束(0~元素个数-1)

1.3 元素空间名称

b[5]:

b[0]        b[1]        b[2]        b[3]        b[4]

1.4、数组+循环对元素空间进行读写操作

#include<stdio.h> 

int main(void)
{
	int b[5];
    int i;   
    for(i=0;i<=4;i++)
	{
	    scanf("%d",&b[i]);
	}

	return 0;
}

巩固练习:

求和计算平均分

#include<stdio.h>

int main(void)
{
	float scores[5];
	int i;  // 下标是整数
	float sum = 0;
	for(i=0;i<=4;i++)
	{	
		scanf("%f",&scores[i]);
	}
			
	// 求和
	for(i=0;i<=4;i++)
	{
		sum = sum + scores[i];
	}
			
	// 求平均分
	printf("%.2f",sum / 5);	

	return 0;
}

1.5 初始化

定义的时候就给予值,几个元素几个值:

int b[5]={2,6,34,65,78};

如果填写的值少于定义值,机械运行的时候会自动补0;

int b[5]={3,6};——{3,6,0,0,0}

如果填写的值大于定义值,超出的个数会被舍弃掉

int b[5] = {5,9,9,0,1,2,3}; (只会取到(5,9,9,0,1))

1.6 字符型

字符数组

char names[10] = {'a','b','c','d','e','f','g','h','i','j'};

字符数组或者字符串    
char names[5] = {'a','b','\0','\0','\0'};  

或者 简写为char names[5] = {'a','b'}

又或者简写为char names[5] = "ab"; 

如果程序里面有函数不能%c输出,一个汉字unicode编号占2个字节。
--- %s --- 字符串专用的格式控制符(可用于汉字的输出,可以输出全部字符串)
%s 输出只要给字符串的首个字符的地址即可。        
%s输出的时候给地址,从那个地址开始读取一个知道遇到\0结束

#include<stdio.h>

int main(void)
{
	char names[30] = {'\0'}; // 定义一个数组并且将数组中的内容清0
	printf("输入你的名字:"); 
	scanf("%s",&names[0]);
	printf("你的名字是:%s",&names[0]);

	return 0;
}

Tips:

1、数组只能在初始化的时候整体赋值。

错误写法:

int b[5];  // 数据总个数
b[5] = {1,2,3,4,5};  // 错误  使用的时候[ ]里面是下标。

2、数组名是数组首元素的地址。

错误写法:

int c[5];
c = {1,2,3,4,5};  // 错误 不对   c是数组名,它是首元素的地址

int a = 30;
//printf("%d\n",a);  // 查看空间里面的数据 
printf("%p\n",&a); // 获取内存分配给a的地址

二维数组

数组里面存储的元素是同种类型的。

二维数组存储多个同种类型的一维数组

tips:
int a[5] = {1,2,3,4,5}; // a是一个数组,里面存放了5个int  a的类型 int [5]
int c[3] = {4,5,6};       // c是一个数组,里面存放了3个int  c的类型 int [3]

不能将a和c放入到一个二维数组中,类型不一样。

2.1 定义格式:
数据类型 数组名[行数][列数];

int ages[5][6];

2.2 使用场景:
分组,1组里面又有多个数据的时候
float sccore1[5] = {67,89,100,34,56};        
float scores2[5] = {90,89,34,5,6};

例如:

int a[2][3];

a[0]:     a[0][0]  a[0][1]  a[0][2]
a[1]:     a[1][0]  a[1][1]  a[1][2]

可以套用循环嵌套

#include<stdio.h>

int main(void)
{
	// 使用循环嵌套写			
	int i,j;
	int a[2][3];
	 
	// 先构造行循环 0 ~ 1;  i // 行 j // 列
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			// i  j
			a[i][j] = i * 10 + j;
		}
	}
	
	for(i=0;i<2;i++)
	{
		// 一行开始
		
		for(j=0;j<3;j++)
		{
			printf(" %d\t",a[i][j]);
		}
		
		// 一行结束了
		printf("\n");
	}	
    return 0;
}

巩固训练:

//定义一个数组2行3列,输入数据,计算每一行的和

#include<stdio.h>


//定义一个数组2行3列,输入数据,计算每一行的和

int main(void)
{
	int a[2][3];
	
	int i,j;
	int sum;
	for(i=0;i<2;i++)
	{
		for(j=0;j<3;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	
	for(i=0;i<2;i++)
	{
		sum = 0;
		
		for(j=0;j<3;j++)
		{
			printf("%d ",a[i][j]);
			sum = sum + a[i][j];
		}
		
		printf("和是:%d",sum);
		printf("\n");
	}
		
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值