资源描述
数组指针01:逆序输出
从键盘输入n个整数〔n<100〕,存放在一个一维数组中,逆序输出能被3整除的元素,并逆序输出数组下标为3的倍数的元素。
输入格式:第一个整数为个数n,后续为n个整数
输出格式:第一行能被3整除的元素,第二行为下标为3的倍数的元素,各个数值之间用空格分隔。
输入:10 2 7 9 10 5 4 3 6 8 20
输出:
6 3 9
20 3 10 2
#include <iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],n,i;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=n-1;i>=0;i--)
if(a[i]%3==0)
cout<<a[i]<<" ";
cout<<endl;
for(i=n-1;i>=0;i--)
if(i%3==0)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
数组指针02:逆序存储
从键盘输入n〔n<100〕个整数,存放在一个一维数组a中,将它们逆序存放在另一个整型数组b中,并按b数组中下标从小到大的顺序输出下标为3的倍数的数组元素。
输入格式:第一个数为数组中元素个数n,之后为n个元素。
输出格式:下标为3的倍数的元素,各个数值之间用空格分隔。
输入:10 2 7 9 10 5 4 3 6 8 20
输出:20 3 10 2
#include <iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],b[MAX],n,i;
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i];
b[n-1-i]=a[i];
}
for(i=0;i<n;i++)
if(i%3==0)
cout<<b[i]<<" ";
cout<<endl;
return 0;
}
数组指针03:平均值
从键盘输入任意个整数〔以0完毕,假设不超过100个〕,存放在一个一维数组中,计算这组数的平均值〔实型〕。
输入:15 2 7 9 10 5 4 3 6 8 20 0
输出:8.09091
#include <iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],n=0;
double s=0;
cin>>a[n];
while(a[n])
{
s+=a[n];
n++;
cin>>a[n];
}
cout<<s/n<<endl;
return 0;
}
数组指针04:最大值
从键盘输入任意个整数〔以0完毕,个数不超过100〕,存放在一个一维数组中,输出这组数的最大值。
输入:10 2 7 9 11 5 4 3 6 8 20 0
输出:20
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],i,n=0,max;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
max=a[0];
for(i=1;i<n;i++)
{
if(a[i]>max)
max=a[i];
}
cout<<max<<endl;
return 0;
}
数组指针05:最小值的位置
从键盘输入任意个整数〔以0完毕,个数不超过100〕,存放在一个一维数组中,数据从数组的0下标开场存储,输出这组数的最小值所在数组下标。
输入:10 2 7 9 11 5 4 3 6 8 20 0
输出:1
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],i,n=0,min=0;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
for(i=1;i<n;i++)
{
if(a[i]<a[min])
min=i;
}
cout<<min<<endl;
return 0;
}
数组指针06:排序
从键盘输入任意个整数〔以0完毕,假设个数最大不超过100〕,将这些数存放在一个一维数组中,将它们从小到大排序后输出。
输入:15 2 7 9 11 5 4 3 6 8 20 0
输出:2 3 4 5 6 7 8 9 11 15 20
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],i,j,n=0,mini,temp;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
for(i=0;i<n-1;i++)
{
mini=i;
for (j=i+1;j<n;j++)
if (a[j]<a[mini]) mini=j;
if (mini!=i)
{
temp=a[i];
a[i]=a[mini];
a[mini]=temp;
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
数组指针07:中位数
从键盘输入n(n<100)个整数〔以0完毕〕,存放在一个一维数组中,输出其中位数。
说明:中位数〔Medians〕统计学名词,是指将数据按从小到大顺序排列起来,形成一个数列,居于数列中间位置的那个数据。假设数列元素个数为奇数,那么中位数为最中间的元素;
假设数列元素个数为偶数,那么中位数为最中间两个元素的平均数。例如:输入2 7 9 11 5 4 3 6 8 20 0那么排序后结果为2 3 4 5 6 7 8 9 11 20,那么中间两个数的平均值为6.5
输入:2 7 9 11 5 4 3 6 8 20 0
输出:6.5
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],i,j,n=0,mini,temp;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
for(i=0;i<n-1;i++)
{
mini=i;
for (j=i+1;j<n;j++)
if (a[j]<a[mini]) mini=j;
if (mini!=i)
{
temp=a[i];
a[i]=a[mini];
a[mini]=temp;
}
}
if(n%2==1)
cout<<a[n/2]<<endl;
else
cout<<(a[n/2]+a[n/2-1])/2.0<<endl;
cout<<endl;
return 0;
}
数组指针08:排序
从键盘输入n(n<100)个整数〔以0完毕〕,存放在一个一维数组中,将它们按奇数在前、偶数在后,同为奇数或偶数的按从小到大的顺序排序,并输出排序后的结果。
其中:排序过程用函数实现。
输入:10 2 7 9 11 5 4 3 6 8 20 0
输出:3 5 7 9 11 2 4 6 8 10 20
#include<iostream>
using namespace std;
void sort(int s[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;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;
}
}
int main()
{
int s[100],n=0,i;
cin>>s[n];
while(s[n])
{
n++;
cin>>s[n];
}
sort(s,n);
for(i=0;i<n;i++)
{
cout<<s[i]<<' ';
}
return 0;
}
数组指针09:斐波那契数列
输入一个正整数n〔n<100〕,将斐波那契数列的前n项保存到一维数组中,并输出斐波那契数列中对3取余为2的数。
斐波那契数列为1 1 2 3 5 8 13 21 34 55……
输入:10
输出:2 5 8
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],n,i;
cin>>n;
a[0]=a[1]=1;
for(i=2;i<n;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<n;i++)
{
if(a[i]%3==2)
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
数组指针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…各数作为除数去除这些数以后的各数。这个过程一直进展到在除数后面的数已全被挖掉为止。
最后剩下的都是素数。
输入:5 19
输出:5 7 11 13 17 19
#include<iostream>
using namespace std;
int main()
{
int m,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<<a[i]<<" ";
}
return 0;
}
数组指针11:数据插入
从键盘输入n〔n<100〕个整数〔以0完毕〕,存放在一个一维数组中,在输入一个插入位置pos〔0<=pos<=n〕与被插入的数值x,将x插入到下标为pos的位置。输出插入后数组中的所有元素。
输入:
10 2 7 9 11 5 4 3 6 8 20 0
8 100
输出:10 2 7 9 11 5 4 3 100 6 8 20
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[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<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
数组指针12:有序插入
从键盘输入n个整数〔n<100〕,存放在一个一维数组中,将它们从大到小排序,再从键盘输入一个整数x,将该数插入到该数组中,使得插入后依然为降序,输出插入后数组中的所有元素。
其中将整数x插入到数组中使其依然有序用函数完成。
输入格式:第一个为个数n,后续为n个整数,再输入一个整数x。
输入:
10 2 7 9 11 5 4 3 6 8 20
12
输出:20 12 11 9 8 7 6 5 4 3 2
#include<iostream>
using namespace std;
const int MAX=100;
void sort(int a[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
void insert(int a[],int &n,int x)
{
int i;
for(i=n-1;i>=0&&a[i]<x;i--)
a[i+1]=a[i];
a[i+1]=x;
n++;
}
int main()
{
int a[MAX],i,x,n;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
sort(a,n);
cin>>x;
insert(a,n,x);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
数组指针13:删除
从键盘输入任意个整数〔以0完毕〕,假设整数个数为n(n<100),那么这些数据存放在一个一维数组0~n-1下标中,假设元素所在位置依次为0~n-1,再输入一个删除位置pos〔0<=pos<n〕,将pos位置的元素从数组中删除,假设pos位置不合法,那么不删除元素。输出删除后数组中的所有元素。
输入:
10 2 7 9 11 5 4 3 6 8 20 0
8
输出:10 2 7 9 11 5 4 3 8 20
#include <iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],n=0,pos,i;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
cin>>pos;
if(pos>=0&&pos<n)
{
for(i=pos+1;i<n;i++)
{
a[i-1]=a[i];
}
n--;
}
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
数组指针14:删除元素
从键盘输入n(n<100)个整数〔以0完毕〕,存放在一个一维数组从0~n-1下标中,再输入要删除的元素x,将数组中所有的x全部删除。输出删除后数组中的所有元素。
输入:
10 2 7 9 5 11 5 4 3 6 5 8 20 0
5
输出:10 2 7 9 11 4 3 6 8 20
#include<iostream>
using namespace std;
const int MAX=100;
int main()
{
int a[MAX],n=0,i,j,x;
cin>>a[n];
while(a[n])
{
n++;
cin>>a[n];
}
cin>>x;
j=0;
for(i=0;i<n;i++)
{
if(a[i]!=x)
{
a[j]=a[i];
j++;
}
}
n=j;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
数组指针15:矩阵
输入3行4列的矩阵存储在一个二维数组中,分别求出各行元素之和, 并存入一维数组row中, 再输出row的值。
输入:
1 2 3 4
5 6 7 8
9 10 11 12
输出:10 26 42
#include<iostream>
using namespace std;
int main()
{
int a[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<<row[i]<<" ";
return 0;
}
数组指针16:对角线元素之和
输入一个5*5的矩阵,求出两条对角线元素值之和。
输入:
11 12 13 14 40
15 16 17 18 41
19 10 11 12 42
31 32 33 34 43
51 52 53 54 55
输出:268
#include<iostream>
using namespace std;
int main()
{
int a[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<<s<<endl;
return 0;
}
数组指针17:鞍点
输入一个5*5的矩阵,输出所有的鞍点。
所谓鞍点是指一行中的最大值也是该列中的最小值。
输入:
11 12 13 14 40
55 56 57 58 41
19 10 11 12 42
31 32 33 34 43
51 52 53 54 55
输出:
40
#include <iostream>
using namespace std;
int main()
{
int a[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]<a[i][maxj])
break;
if(k==5)
cout<<a[i][maxj]<<endl;
}
return 0;
}
数组指针18:回文字符串
从键盘输入n〔n<100〕个字符串(每个字符串长度不超过19),输出这组字符串中的回文字符串。其中判断一个字符串是否为回文字符串用函数实现。所谓回文串是指顺读和倒读都一样的一个字符串,如〞level〞、〞abccba〞都是回文串。
输入格式:第一个为个数n,后续为n个字符串。
输入:3 level abccba abbd
输出:level abccba
#include <iostream>
#include<cstring>
using namespace std;
bool f(char s[])
{
int length,i;
bool flag=false;
length=strlen(s);
for (i=0;i<length/2;i++)
{
if (s[i]!=s[length-i-1])
break;
}
if (i==length/2)
flag=true;
return flag;
}
int main()
{
int n,i;
char c[20];
cin>>n;
for(i=1;i<=n;i++)
{
cin>>c;
if(f(c))
cout<<c<<" ";
}
cout<<endl;
return 0;
}
数组指针19:字符串转换
在主函数中输入一个字符串〔长度不超过99〕,存储在一个字符数组中,将该字符串中的大写字母变成相应的小写字母,小写字母变成相应的大写字母,其他字符不变,输出转换后的字符串。其中将字符串转换用一个函数完成。
输入:ILoveLiaoNing23
输出:ilOVElIAOnING23
#include<iostream>
using namespace std;
const int MAX=100;
void Myconvert(char str[])
{
int i;
for(i=0;str[i];i++)
if(str[i]>='a'&&str[i]<='z')
str[i]-=32;
else
if(str[i]>='A'&&str[i]<='Z')
str[i]+=32;
}
int main()
{
char s1[MAX];
cin>>s1;
Myconvert(s1);
cout<<s1<<endl;
return 0;
}
数组指针20:字符串长度
输入n个(n<100)字符串,输出所有字符串长度的平均值。其中求一个字符串的长度用自定义函数实现。
输入格式,第一个整数n为字符串个数,后续为n个字符串。
输入:3 world hello C++
输出:4.33333
#include<iostream>
using namespace std;
const int MAX=100;
int length(char * s)
{
int i=0;
while (s[i]) i++;
return i;
}
int main( )
{
char s[MAX];
int n,i;
double sum=0;
cin>>n;
for (i=0;i<n;i++)
{
cin>>s;
sum+=length(s);
}
cout<<sum/n<<endl;
return 0;
}
38 / 38
展开阅读全文