C++数组指针题含答案.docx
- 文档编号:9897117
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:25
- 大小:18.06KB
C++数组指针题含答案.docx
《C++数组指针题含答案.docx》由会员分享,可在线阅读,更多相关《C++数组指针题含答案.docx(25页珍藏版)》请在冰豆网上搜索。
C++数组指针题含答案
数组指针01:
逆序输出
从键盘输入n个整数(n<100),存放在一个一维数组中,逆序输出能被3整除的元素,并逆序输出数组下标为3的倍数的元素。
输入格式:
第一个整数为个数n,后续为n个整数
输出格式:
第一行能被3整除的元素,第二行为下标为3的倍数的元素,各个数值之间用空格分隔。
输入:
10279105436820
输出:
639
203102
#include
usingnamespacestd;
constintMAX=100;
intmain()
{
inta[MAX],n,i;
cin>>n;
for(i=0;i cin>>a[i]; for(i=n-1;i>=0;i--) if(a[i]%3==0) cout< cout< for(i=n-1;i>=0;i--) if(i%3==0) cout< cout< return0; } 数组指针02: 逆序存储 从键盘输入n(n<100)个整数,存放在一个一维数组a中,将它们逆序存放在另一个整型数组b中,并按b数组中下标从小到大的顺序输出下标为3的倍数的数组元素。 输入格式: 第一个数为数组中元素个数n,之后为n个元素。 输出格式: 下标为3的倍数的元素,各个数值之间用空格分隔。 输入: 10279105436820 输出: 203102 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],b[MAX],n,i; cin>>n; for(i=0;i { cin>>a[i]; b[n-1-i]=a[i]; } for(i=0;i if(i%3==0) cout< cout< return0; } 数组指针03: 平均值 从键盘输入任意个整数(以0结束,假设不超过100个),存放在一个一维数组中,计算这组数的平均值(实型)。 输入: 152791054368200 输出: 8.09091 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],n=0; doubles=0; cin>>a[n]; while(a[n]) { s+=a[n]; n++; cin>>a[n]; } cout< return0; } 数组指针04: 最大值 从键盘输入任意个整数(以0结束,个数不超过100),存放在一个一维数组中,输出这组数的最大值。 输入: 102791154368200 输出: 20 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],i,n=0,max; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } max=a[0]; for(i=1;i { if(a[i]>max) max=a[i]; } cout< return0; } 数组指针05: 最小值的位置 从键盘输入任意个整数(以0结束,个数不超过100),存放在一个一维数组中,数据从数组的0下标开始存储,输出这组数的最小值所在数组下标。 输入: 102791154368200 输出: 1 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],i,n=0,min=0; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } for(i=1;i { if(a[i] min=i; } cout< return0; } 数组指针06: 排序 从键盘输入任意个整数(以0结束,假设个数最大不超过100),将这些数存放在一个一维数组中,将它们从小到大排序后输出。 输入: 152791154368200 输出: 23456789111520 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],i,j,n=0,mini,temp; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } for(i=0;i { mini=i; for(j=i+1;j if(a[j] if(mini! =i) { temp=a[i]; a[i]=a[mini]; a[mini]=temp; } } for(i=0;i { cout< } cout< return0; } 数组指针07: 中位数 从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组中,输出其中位数。 说明: 中位数(Medians)统计学名词,是指将数据按从小到大顺序排列起来,形成一个数列,居于数列中间位置的那个数据。 若数列元素个数为奇数,则中位数为最中间的元素; 若数列元素个数为偶数,则中位数为最中间两个元素的平均数。 例如: 输入2791154368200则排序后结果为234567891120,则中间两个数的平均值为6.5 输入: 2791154368200 输出: 6.5 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],i,j,n=0,mini,temp; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } for(i=0;i { mini=i; for(j=i+1;j if(a[j] if(mini! =i) { temp=a[i]; a[i]=a[mini]; a[mini]=temp; } } if(n%2==1) cout< else cout<<(a[n/2]+a[n/2-1])/2.0< cout< return0; } 数组指针08: 排序 从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组中,将它们按奇数在前、偶数在后,同为奇数或偶数的按从小到大的顺序排序,并输出排序后的结果。 其中: 排序过程用函数实现。 输入: 102791154368200 输出: 35791124681020 #include usingnamespacestd; voidsort(ints[],intn) { inti,j,t; for(i=0;i for(j=i+1;j if(((s[i]%2)<(s[j]%2))||(((s[i]%2)==(s[j]%2))&&(s[i]>s[j]))) { t=s[i]; s[i]=s[j]; s[j]=t; } } intmain() { ints[100],n=0,i; cin>>s[n]; while(s[n]) { n++; cin>>s[n]; } sort(s,n); for(i=0;i { cout< } return0; } 数组指针09: 斐波那契数列 输入一个正整数n(n<100),将斐波那契数列的前n项保存到一维数组中,并输出斐波那契数列中对3取余为2的数。 斐波那契数列为11235813213455…… 输入: 10 输出: 258 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],n,i; cin>>n; a[0]=a[1]=1; for(i=2;i a[i]=a[i-1]+a[i-2]; for(i=0;i { if(a[i]%3==2) cout< } cout< return0; } 数组指针10: 素数 输入m、n(m,n<100),输出[m,n]之间的素数。 要求: 使用塞选法求素数。 用塞选法求100以内的素数过程: 在一张纸上写上1到100全部整数,然后逐个判断它们是否是素数, 找出一个非素数,就把它挖掉,最后剩下的就是素数。 具体做法如下: <1>先将1挖掉(因为1不是素数)。 <2>用2去除它后面的各个数(2除外),把能被2整除的数挖掉,即把2的倍数挖掉。 <3>用3去除它后面的各数(3除外),把3的倍数挖掉。 <4>分别用4、5…各数作为除数去除这些数以后的各数。 这个过程一直进行到在除数后面的数已全被挖掉为止。 最后剩下的都是素数。 输入: 519 输出: 5711131719 #include usingnamespacestd; intmain() { intm,n,a[101],i,j; for(i=1;i<101;i++) a[i]=i; cin>>m>>n; for(i=2;i<101;i++) { for(j=i+1;j<101;j++) if(a[j]%i==0) a[j]=0; } for(i=m;i<=n;i++) { if(a[i]! =0) cout< } return0; } 数组指针11: 数据插入 从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组中,在输入一个插入位置pos(0<=pos<=n)及被插入的数值x,将x插入到下标为pos的位置。 输出插入后数组中的所有元素。 输入: 102791154368200 8100 输出: 10279115431006820 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],i,pos,x,n=0; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } cin>>pos>>x; for(i=n-1;i>=pos;i--) { a[i+1]=a[i]; } a[pos]=x; n++; for(i=0;i cout< cout< } 数组指针12: 有序插入 从键盘输入n个整数(n<100),存放在一个一维数组中,将它们从大到小排序,再从键盘输入一个整数x,将该数插入到该数组中,使得插入后依然为降序,输出插入后数组中的所有元素。 其中将整数x插入到数组中使其依然有序用函数完成。 输入格式: 第一个为个数n,后续为n个整数,再输入一个整数x。 输入: 10279115436820 12 输出: 20121198765432 #include usingnamespacestd; constintMAX=100; voidsort(inta[],intn) { inti,j,t; for(i=0;i for(j=i+1;j { if(a[i] { t=a[i];a[i]=a[j];a[j]=t; } } } voidinsert(inta[],int&n,intx) { inti; for(i=n-1;i>=0&&a[i] a[i+1]=a[i]; a[i+1]=x; n++; } intmain() { inta[MAX],i,x,n; cin>>n; for(i=0;i cin>>a[i]; sort(a,n); cin>>x; insert(a,n,x); for(i=0;i cout< cout< return0; } 数组指针13: 删除 从键盘输入任意个整数(以0结束),假设整数个数为n(n<100),则这些数据存放在一个一维数组0~n-1下标中,假设元素所在位置依次为0~n-1,再输入一个删除位置pos(0<=pos 输出删除后数组中的所有元素。 输入: 102791154368200 8 输出: 1027911543820 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],n=0,pos,i; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } cin>>pos; if(pos>=0&&pos { for(i=pos+1;i { a[i-1]=a[i]; } n--; } for(i=0;i cout< return0; } 数组指针14: 删除元素 从键盘输入n(n<100)个整数(以0结束),存放在一个一维数组从0~n-1下标中,再输入要删除的元素x,将数组中所有的x全部删除。 输出删除后数组中的所有元素。 输入: 10279511543658200 5 输出: 1027911436820 #include usingnamespacestd; constintMAX=100; intmain() { inta[MAX],n=0,i,j,x; cin>>a[n]; while(a[n]) { n++; cin>>a[n]; } cin>>x; j=0; for(i=0;i { if(a[i]! =x) { a[j]=a[i]; j++; } } n=j; for(i=0;i cout< cout< return0; } 数组指针15: 矩阵 输入3行4列的矩阵存储在一个二维数组中,分别求出各行元素之和,并存入一维数组row中,再输出row的值。 输入: 1234 5678 9101112 输出: 102642 #include usingnamespacestd; intmain() { inta[3][4],row[3]={0},i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) { cin>>a[i][j]; row[i]+=a[i][j]; } for(i=0;i<3;i++) cout< return0; } 数组指针16: 对角线元素之和 输入一个5*5的矩阵,求出两条对角线元素值之和。 输入: 1112131440 1516171841 1910111242 3132333443 5152535455 输出: 268 #include usingnamespacestd; intmain() { inta[5][5],s=0,i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) { cin>>a[i][j]; } for(i=0;i<5;i++) s+=a[i][i]+a[i][4-i]; s=s-a[2][2]; cout< return0; } 数组指针17: 鞍点 输入一个5*5的矩阵,输出所有的鞍点。 所谓鞍点是指一行中的最大值也是该列中的最小值。 输入: 1112131440 5556575841 1910111242 3132333443 5152535455 输出: 40 #include usingnamespacestd; intmain() { inta[5][5],i,j,k,maxj,mini; for(i=0;i<5;i++) for(j=0;j<5;j++) cin>>a[i][j]; for(i=0;i<5;i++) { maxj=0; for(j=1;j<5;j++) if(a[i][j]>a[i][maxj]) maxj=j; for(k=0;k<5;k++) if(a[k][maxj] break; if(k==5)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 数组 指针 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)