数学3班 慕文琪 第五章总结

…衆ロ難τιáo~ 提交于 2019-12-24 11:48:43

第五单元 数组
第一课 一维数组的定义一维数组的格式如下类型标识符 数组名[常量表达式];类型标识符可以是任何基本数据,也可以是结构体等构造类型。常量表达式的值是数组元素的个数。例:int score[10000];//或者float score[10000];bool xb[10000];//或者char xb[10000];2.一维数组的元素引用数组定义好后,引用数组中的任意一个元素。格式:数组名[下标]下标,只能为整型常量或整型表达式。不能引用整个数组,只能逐个引用数组的单个元素。3.一维数组的存储结构第二课 一维数组的输入与输出两个函数给数组“整体”赋值(1)memset函数给数组按字节进行赋值,一般用在char型数组中。如果是int类型的数组,一般赋值0和-1。使用前需要头文件:#include例如,memset(h,0,sizeof(h))将h数组,所有元素赋值为0。(2)fill函数给数组按元素进行赋值,可以是整个数组,也可以是部分连续元素,可以赋任何值。需要头文件:#include例,fill(a,a+10,5),就是将a数组的前十个元素赋值为5。#include#includeusing namespace std;int main(){int a[10],b[10],c[10],d[10],i;memset(a,0,sizeof(a));for(i=0;i<9;i++)cout<<a[i]<<" “;cout<<a[9]<<endl;memset(b,1,sizeof(b));for(i=0;i<9;i++)cout<<b[i]<<” “;cout<<b[9]<<endl;memset(c,0,5);for(i=0;i<9;i++)cout<<d[i]<<” “;cout<<d[9]<<endl;return 0;}第三课 一维数组的插入删除例,插队问题有n个人在一个水龙头前排队准备接水,现在第n个人有特殊情况,经过协商,大家允许他插到第x个位置,输出第n个人插队后的排队情况。#includeusing namespcace std;int main(){int n,i,x,q[102];scanf(”%d",&n);for(i=1;i<=n;i++)scanf("%d",&q[i]);scanf("%d",&x);for(i=n;i>=x;i–)q[i+1]=q[i];q[x]=q[n+1];for(i=1;i<n;i++)printf("%d",q[i];printf("%d\n",q[n]);return 0;}第四课 一维数组的查找统计二分查找:折半查找,每个元素都是int型,查找x这个元素,二分查找的算法框架可以写为。int left=0,right=n-1;int find=n;//find标记找到的位置,初始化为n,表示没找到while(left<=right){int mid=(left+right)/2;if(a[mid]==x{ find=mid; break;}if(x<a[mid])right=mid-1;if(a[mid]<x) left=mid+1;}if(find!=n)printf(“%d\n”,find);else printf(“not find\n”);第五课 一维数组的元素排序选择排序冒泡排序插入排序(例子见课本151页)第六课 一维数组的应用举例例,学习对象n个信息学选手站在一排。每个选手的位置依次由1~n表示,第i个选手的编程能力用一个整数h表示,每个选手都希望找到一个编程能力比自己高,但又与自己编程能力最接近的选手学习。如果有多个符合条件的选手,则选择位置最前面的选手学习,请编程输出每位选手学习对象的位置,如果没有学习对象则输出0。#includeusing namespcace std;int main(){cin>>n;for(i=1;i<=n;i++)cin>>h[i];for(i=1;i<=n;i++){ans=0;maxh=1000001;for(j=1;j<=n;j++)if(h[j]>h[i]&&h[j]<maxh){ans=j;maxh=h[j];}cout<<ans<<endl;}return 0;}第七课 二位数组的定义和操作二维数组的定义和初始化格式:类型标识符 数组名[常量表达式][常量表达式2];例如:int h[4][5];2.二位数组的存储及元素引用数组名[下标1][下标2]例:cin>>h[3][1];h[3][1]=h[3][1]*2;cout<<h[3][1];第八课 二位数组的应用举例171页~175页第九课 数字方阵数字方阵就是一个行列数相等的二维数组。有模拟法解析法两种方法。蛇形方阵见课本179页第十课字符数组以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc",那么编译器帮你存储的是"abc\0".scanf,printf不输入空格char, gets输入空格例:数字和输入一个整数n求个位上的数字和。#include#include#includeusing namespcace std;char n[201];int main(){int i,sum=0;scanf("%s",n);for(i=0;i<strlen(n);i++)sum=sum+n[i]-‘0’;printf("%d\n",sum);return 0;}总结:发现错误时,要及时跳出自己的代码,回去再看看题,而看题的时候,要当成新题来读,以免陷入原来的代码中。同时要多次回去分析题目要求,因为在分析原题的过程中,往往会产生新的想法。然而,遇到问题也不要走另一个极端——反复想也想不出来,仍然反复的想,这样虽然看起来很坚持,但也浪费时间。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!