程序设计A笔记(三)
18-数学-3班-孔旭-2018212765
一、学习内容总结
数组就是一组相同类型的元素的集合。
数组的定义格式为: 类型+数组名[青青数组里的数据个数] 使用之前要先定义
1.一维数组
⑴定义
数据类型 数组名[整形常量表达式];
数据类型:规定数组的数据类型。
数组名:表示数组的名称,命名规则和变量名相同,为任一合法的标识符。
⑵整形常量表达式:必须用方括号括起来,规定了数组中包含元素的个数,其中包括常数和符号常量,不能包含变量。
⑶数组名后面的方括号内容不能为空,必须为整形常量表达式
⑷一维数组的初始化
数据类型 数组名[整型常量表达式]={常量表达式,常量表达式.......}
在定义时对全部数组元素赋初值。
在定义时只给部分元素赋初值。
只能给元素逐个赋值,不能给数组整体赋值。
2.二维数组
⑴定义
数据结构 数组名[整型常量表达式1][整形常量表达式2];
下标只能是整数,并且从0开始
二维数组是按行优先存储的,
⑵不能引用整个数组,只能逐个引用数组元素。
数组名 [下标表达式1][下标表达式2];
⑶二维数组元素的初始化
按行赋初值,将每一行元素的初值用一对花括号括起来。
根据该数组的元素个数,把初始化数据全部扩在一个花括号内。
对部分数组元素赋初值。
可以省略第一维的长度,但必须制定第二维的长度。
3.字符数组
⑴定义
一维字符串数组
char 数组名[整型常量表达式];
二维字符串数组:
char 数组名[整型常量表达式1][整型常量表达式2];
⑵字符串数组的初始化
把字符逐个地赋给数组中的各元素。
⑶字符数组的引用
字符数组中的每个元素都相当于一个字符变量,因此对一个数组元素的引用就是对一个字符变量的引用。
4.字符串
字符串常量:用双引号括起来的一串字符
末尾有系统自动加的一个字符串结束标志‘\0’.
字符数组与字符串的区别在于字符串结尾有‘\0’。
输入与输出:
‘%c’,‘%s’
二、学习后可解决问题
eg.1.一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
int m=3100;
int main()
{
long long int i,n,a[m],b[m];
cin>>n;
if(n==1)
{
cout<<"Jolly"<<endl;
return 0;
}
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
{
b[i]=abs(a[i+1]-a[i]);
}
sort(b+1,b+n);
for(i=1;i<n;i++)
{
if(b[i]!=i)
{
cout<<"Not jolly"<<endl;
return 0;
}
}
cout<<"Jolly"<<endl;
return 0;
}
eg.2.小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,若以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?
#include<iostream>
using namespace std;
int main()
{
int n,a,b,p[101],q[101],i,j=0,k=0,x=0,y=0;
cin>>n>>a>>b;
for(i=1;i<=a;i++)
cin>>p[i];
for(i=1;i<=b;i++)
cin>>q[i];
for(i=1;i<=n;i++)
{
j++;k++;
if((p[j]==0&&q[k]==2)||(p[j]==2&&q[k]==5)||(p[j]==5&&q[k]==0))
x++;
else if((q[k]==0&&p[j]==2)||(q[k]==2&&p[j]==5)||(q[k]==5&&p[j]==0))
y++;
if(j==a)j=0;
if(k==b)k=0;
}
if(x>y) cout<<"A"<<endl;
else if(x<y) cout<<"B"<<endl;
else if(x==y) cout<<"draw"<<endl;
return 0;
}
三、近期学习心得
程序设计课的学习本学期也要接近尾声了,通过这一学期对程序设计的学习,收获了许多新知识,让我从对程序设计的完全不了解到现在可以自己分析问题写程序。当然在学习的过程中也存在许多问题和不足,在细节方面不够仔细,并且在处理一些较难的问题时依旧能力不足。希望之后的学习可以再接再厉,不断提高自己能力。
2018年12月24日