第五单元数组程序设计内容整理及反思

本文整理了一维数组和二维数组的定义、元素引用、存储结构以及输入输出的方法,强调了下标越界的问题。还讨论了数组初始化、赋值,包括memset和fill函数的使用,并给出了数组题目的示例,如统计棋盘中正方形和长方形的数量,以及计算数组中的鞍点问题。数组编程中遇到复杂情况,如蛇形矩阵,可能会带来挑战,需要通过练习来提高处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一课 一维数组的定义

1.一维数组的定义

格式:类型标识符 数组名[常量表达式];

数组定义后的初值仍然是随机数,一般需要我们来初始化,一旦定义,不能改变大小,且值不能作为变量

这样的定义也是被允许的

int a[5*10];

#define N 50

int b[N];

如果要存储10000个人的中考成绩和性别可以定义两个数组:

int score[10000];//或者float score[10000];

bool xb[10000];//或者char xb[10000];

2.一维数组的元素引用

下标只能维整形常量或整形表达式,值必须在数组定义的下标范围内否则会出现下标越界错误,下标越界是大忌!!

3.一维数组的存储结构

第二课 一维数组的输入与输出

int a[100];

int main (){     全局数组,适合范围更大的,因此数组尽量定义在外面。

如何使两个数组的值相等?

int i ;

for  ( i =0; i < n ; i ++

b [i]= a [i];

给数值整体赋值的两个函数:

1. memset 函数

给数组按字节进行赋值,一般用于char型数组中,如果是int类型的数组,一般赋值为0和-1。使用前要包含头文件#include<cstring>。

例如:  memset(a,0, sizeof(a));//将a数组所以元素均赋值为0

2.fill函数

给数组按元素进行赋值,可以是整个数组也可以是部分连续元素,可以赋任何值,使用前需要包含头文件#include<algorithm>;

fill(c,c+5,8)//把c 的前5个元素赋值为8,其他元素不确定;

第三课-第六课

全局统计在定义变量的时候赋初值,局部统计在统计开始之前赋初值

第七课 二维数组的定义和操作

格式:类型标识符 数组名[常量表达式1][常量表达式2];

初始化赋值/不分行//int a[2][3]={1,2,3,4,5,6};

也可以给数组中的部分元素初始化:

eg:int a[2][2]={1,2},{4};

在定义二维数组时可以省略第一维的大小,但是第二维的大小不能省略,系统会根据{}中等元素自动确定a数组的第一维大小。

第八课-第十课

一个字符数组只能存一段文字

数组题目整理:

1.反反复复

设有一个n*m方格的棋盘(1≤m,n≤100)。

求出该棋盘中包含多少个正方形、多少个长方形(不包括正方形)。

cin>>n>>m;
for(i=1;i<=min(n,m);i++)
s1+=(m-i+1)*(n-i+1);
s2=(n+1)*(m+1)*n*m/4;
cout<<s1<<","<<s2-s1;

2.输出各个年龄段患病人数所占的百分比
printf("%.2lf%%\n%.2lf%%\n%.2lf%%\n%.2lf%%\n",(1.0*t*100)/n,(1.0*m*100)/n,(1.0*k*100)/n,(1.0*s*100)/n);

3 计算鞍点:所在行的最大值所在列的最小值

for ( i = 0; i < N; i++) {
Max = a[i][0];
for ( j = 0; j < N; j++) {
if (a[i][j]>=Max) {
Ni = i;
Nj = j;
Max = a[i][j];
}
}
Min = Max;
for (int k = 0; k < N; k++) {
if (a[k][Nj] < Min)
Min = a[k][Nj];
}
if (Max == Min) {
q = 1;
cout << Ni+1 << " " << Nj+1 << " " << Max << endl;
break;
}

感觉数组这一章对比起来循环语句算是比较简单的,但是如果遇到特殊情况比如数字矩阵之类的题目有可能就会变得很复杂,比如蛇形矩阵哪一种,很难找到规律,也恐惧得不知道该从哪里下手,怕写得太复杂最后运行错误一大堆逻辑不通,也挺苦恼的,再多看看以前做过的题目吧,希望能给自己一点启发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值