关于数的常用算法.docx
《关于数的常用算法.docx》由会员分享,可在线阅读,更多相关《关于数的常用算法.docx(34页珍藏版)》请在冰点文库上搜索。
关于数的常用算法
1.求n!
#include
voidmain()
{
inti,s=1;
intn;
cin>>n;
for(i=1;i<=n;i++)
s*=i;
cout<="<}[补]求1!+2!+….+n!#includevoidmain(){ints=0,i,j,t;intn;cin>>n;for(i=1;i<=n;i++){t=1;for(j=1;j<=i;j++)t=t*j;s+=t;}cout<<"1!+2!+....+"<="<}2.判断一个数是否是素数#includevoidmain(){intx;cin>>x;inti;for(i=2;i<=x-1;i++)if(x%i==0)break;if(i==x)cout<"<elsecout<"<}[补]求所有二位素数#includevoidmain(){inti,t=0;;for(i=10;i<100;i++){for(intj=2;j<=i-1;j++)if(i%j==0)break;if(j==i){t++;cout<if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
="<
}
[补]求1!
+2!
+….+n!
ints=0,i,j,t;
for(i=1;i<=n;i++){
t=1;
for(j=1;j<=i;j++)
t=t*j;
s+=t;
cout<<"1!
+2!
+....+"<="<}2.判断一个数是否是素数#includevoidmain(){intx;cin>>x;inti;for(i=2;i<=x-1;i++)if(x%i==0)break;if(i==x)cout<"<elsecout<"<}[补]求所有二位素数#includevoidmain(){inti,t=0;;for(i=10;i<100;i++){for(intj=2;j<=i-1;j++)if(i%j==0)break;if(j==i){t++;cout<if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
2.判断一个数是否是素数
intx;
cin>>x;
inti;
for(i=2;i<=x-1;i++)
if(x%i==0)break;
if(i==x)
cout<"<elsecout<"<}[补]求所有二位素数#includevoidmain(){inti,t=0;;for(i=10;i<100;i++){for(intj=2;j<=i-1;j++)if(i%j==0)break;if(j==i){t++;cout<if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<elsecout<"<}[补]求所有二位素数#includevoidmain(){inti,t=0;;for(i=10;i<100;i++){for(intj=2;j<=i-1;j++)if(i%j==0)break;if(j==i){t++;cout<if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
elsecout<"<}[补]求所有二位素数#includevoidmain(){inti,t=0;;for(i=10;i<100;i++){for(intj=2;j<=i-1;j++)if(i%j==0)break;if(j==i){t++;cout<if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}[补]求所有二位素数#includevoidmain(){inti,t=0;;for(i=10;i<100;i++){for(intj=2;j<=i-1;j++)if(i%j==0)break;if(j==i){t++;cout<if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
[补]求所有二位素数
inti,t=0;;
for(i=10;i<100;i++)
for(intj=2;j<=i-1;j++)
if(i%j==0)break;
if(j==i)
t++;cout<
if(t%5==0)cout<}}cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<}3.判断一个数是否是回文数#includevoidmain(){intx,a[4];cin>>x;while(x>0){a[i++]=x%10;x=x/10;}inti;for(i=0;i<2;i++)if(a[i]!=a[3-i])break;if(i==2)cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
3.判断一个数是否是回文数
intx,a[4];
while(x>0)
a[i++]=x%10;
x=x/10;
for(i=0;i<2;i++)
if(a[i]!
=a[3-i])break;
if(i==2)
cout<"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<elsecout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
else
cout<"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}[补]求1000~1500之间所有的回文数#includevoidmain(){intx,a[4],i,t;for(i=1000;i<1500;i++){t=i;intj=0;while(t>0){a[j++]=t%10;t=t/10;}intk;for(k=0;k<2;k++)if(a[k]!=a[3-k])break;if(k==2)cout<}cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
[补]求1000~1500之间所有的回文数
intx,a[4],i,t;
for(i=1000;i<1500;i++)
t=i;
intj=0;
while(t>0)
a[j++]=t%10;
t=t/10;
intk;
for(k=0;k<2;k++)
if(a[k]!
=a[3-k])break;
if(k==2)
cout<
cout<}4.判断一个数是否是完数:所谓完数指的是它所有因子之和等于这个数本身#includevoidmain(){intn;cin>>n;intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
4.判断一个数是否是完数:
所谓完数指的是它所有因子之和等于这个数本身
intt=1;
for(inti=2;iif(n%i==0)t=t+i;if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(n%i==0)t=t+i;
if(n==t)cout<"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
elsecout<"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}[补]求所有二位整数中所有的完数#includevoidmain(){intn,k=0;for(n=10;n<100;n++){intt=1;for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
[补]求所有二位整数中所有的完数
intn,k=0;
for(n=10;n<100;n++)
for(inti=2;iif(n%i==0)t=t+i;if(n==t){k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(n==t)
k++;cout<if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(k%5==0)cout<}}cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<}5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。#includevoidmain(){inta,n,s=0;cin>>a>>n;inti;intt=0;for(i=1;i<=n;i++){t=t*10+a;s+=t;}cout<<"s="<}6.求1,1,2,3,5,8,13,21…(FB数列)#includevoidmain(){inta=1,b=1,c;inti;cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
5.求a+aa+aaa+aaaa+aa…aaaa,其中a及其个数由用户决定。
inta,n,s=0;
cin>>a>>n;
intt=0;
t=t*10+a;
cout<<"s="<
6.求1,1,2,3,5,8,13,21…(FB数列)
inta=1,b=1,c;
cout<for(i=1;i<=10;i++){c=a+b;cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(i=1;i<=10;i++)
c=a+b;
cout<a=b;b=c;}cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
a=b;
b=c;
cout<}7.求4位整数的逆序数(求任何整数的逆序数)voidmain(){inta[4],n;cin>>n;inti=0,n1=n;while(n1>0){a[i++]=n1%10;n1=n1/10;}n1=0;for(i=0;i<4;i++)n1=n1*10+a[i];cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
7.求4位整数的逆序数(求任何整数的逆序数)
inta[4],n;
inti=0,n1=n;
while(n1>0)
a[i++]=n1%10;
n1=n1/10;
n1=0;
for(i=0;i<4;i++)
n1=n1*10+a[i];
cout<"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}8.牛顿迭代法求方程的根#include#includevoidmain(void){floatx0,x1,a;cout<<"输入一个正数:";cin>>a;if(a<0)cout<<"不能开平方!\n";else{x1=a/2;do{x0=x1;x1=(x1+a/x0)/2;}while(fabs(x1-x0)>1e-5);cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
8.牛顿迭代法求方程的根
voidmain(void)
floatx0,x1,a;
cout<<"输入一个正数:
";
cin>>a;
if(a<0)cout<<"不能开平方!
\n";
x1=a/2;
do
x0=x1;
x1=(x1+a/x0)/2;
}while(fabs(x1-x0)>1e-5);
cout<}}9.求奇数和偶数之和#includevoidmain(){inti=1;intx;intq1=0,q2=0;while(i<=10){cin>>x;if(x%2==0)数q1+=x;elseq2+=x;i++;}cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
9.求奇数和偶数之和
inti=1;
intq1=0,q2=0;
while(i<=10)
if(x%2==0)数
q1+=x;
q2+=x;
i++;
cout<<"奇数的和="<cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<<"偶数的和="<}10.求水仙花数#includevoidmain(){inti,j,k;intt1,t2;for(i=1;i<10;i++)for(j=0;j<10;j++)for(k=0;k<10;k++){t1=i*i*i+j*j*j+k*k*k;t2=i*100+j*10+k;if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
10.求水仙花数
inti,j,k;
intt1,t2;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
t1=i*i*i+j*j*j+k*k*k;
t2=i*100+j*10+k;
if(t1==t2)cout<}cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<}或者:#includevoidmain(){inti;inta,b,c;intt;for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;t=c*c*c+b*b*b+a*a*a;if(i==t)cout<}}一维数组的应用1.二分法查询某个数#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){intleft=0,right=9;//分别表示左边和右边数组元素的下标intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标while(left<=right){mid=(left+right)/2;if(a[mid]==x){flag=1;break;}elseif(a[mid]>x)right=mid-1;elseleft=mid+1;}if(flag==1)k=mid;elsek=0;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
或者:
inta,b,c;
intt;
for(i=100;i<1000;i++)
a=i/100;
b=i%100/10;
c=i%10;
t=c*c*c+b*b*b+a*a*a;
if(i==t)cout<
一维数组的应用
1.二分法查询某个数
classA
inta[10];
intk;//需要查找的数所在数组a的下标
public:
voidf1(intaa[],intxx)
{//初始化成员数据a和x
for(i=0;i<10;i++)
a[i]=aa[i];
x=xx;
voidf2()
intleft=0,right=9;//分别表示左边和右边数组元素的下标
intmid,flag=0;//flag表示找到的一种状态,mid表示中间位置数组的下标
while(left<=right)
mid=(left+right)/2;
if(a[mid]==x)
flag=1;
break;
elseif(a[mid]>x)right=mid-1;
left=mid+1;
if(flag==1)k=mid;
elsek=0;
voidf3()
cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(k==0)
cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}2.改进的选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t,k;for(i=0;i<9;i++){k=i;//注意:这是和原来的选择排序法不一致之处for(j=i+1;j<10;j++)if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
};
intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;
cout<<"请输入要查找的数:
cin>>xxx;
Aa1;
a1.f1(b,xxx);
a1.f2();
a1.f3();
2.改进的选择排序法
#include//适当之处增加注释语句,以增加程序的可读性
classB
voidf1(intbb[])
{//初始化成员数据a数组
a[i]=bb[i];
{//对数组a进行升序排列
inti,j,t,k;
for(i=0;i<9;i++)
k=i;//注意:
这是和原来的选择排序法不一致之处
for(j=i+1;j<10;j++)
if(a[j]if(k!=i){//注意:这是和原来的选择排序法不一致之处t=a[i];a[i]=a[k];a[k]=t;}}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(k!
=i)
{//注意:
t=a[i];a[i]=a[k];a[k]=t;
{//每行输出数组a的5个元素
cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}3.将数插入到一个已经排序好的数组中#includeclassA{inta[100];intm;//存放实际元素的个数public:voidf1(intaa[],intn){inti;for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
};//此行分号不可缺省
intaa[10]={8,2,7,10,16,0,3,20,1,30};
Bb1;
b1.f1(aa);//注意实参的书写形式
b1.f2();
b1.f3();
3.将数插入到一个已经排序好的数组中
inta[100];
intm;//存放实际元素的个数
voidf1(intaa[],intn)
for(i=0;ia[i]=aa[i];m=n;//没插入之前a实际元素个数为5}voidf2(intx){inti=0,k;while(a[i]=x或者i>m的时候if(a[i]>=x){//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前for(k=m-1;k>=i;k--)a[k+1]=a[k];a[i]=x;}else//说明要插入的数比原数组最后一个数还要大,即插入点在最后a[m]=x;m++;//插入后,数组a的实际元素要多一个}voidf3(){//将新数组输出inti;cout<<"新数组为:"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
m=n;//没插入之前a实际元素个数为5
voidf2(intx)
inti=0,k;
while(a[i]=x或者i>m的时候
if(a[i]>=x)
{//该条件结合上一条注释语句的说明,插入点在中间或最前面一个元素之前
for(k=m-1;k>=i;k--)
a[k+1]=a[k];
a[i]=x;
else//说明要插入的数比原数组最后一个数还要大,即插入点在最后
a[m]=x;
m++;//插入后,数组a的实际元素要多一个
{//将新数组输出
cout<<"新数组为:
"<for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(i=0;icout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<}};voidmain(){intaaa[5]={1,3,5,7,9};inti,xx;cout<<"原数组为:"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
intaaa[5]={1,3,5,7,9};
inti,xx;
cout<<"原数组为:
"<for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(i=0;i<5;i++)//输出主要用于插入前和插入后的对比
cout<cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<cout<<"请输入需要插入的数:";cin>>xx;Aa1;a1.f1(aaa,5);a1.f2(xx);//需要插入的数通过实参传递给形参a1.f3();}4.两个数组合并成一个新数组5.冒泡排序法#includeclassA{inta[10];public:voidf1(intaa[]){//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据ainti;//函数体中需要使用的全部变量的说明语句建议大家写在这里for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值a[i]=aa[i];//注意赋值语句顺序不可颠倒}voidf2(){//该函数的作用是把成员数据a的10个数进行升序排列inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值for(i=0;i<9;i++)//比较几轮for(j=0;j<9-i;j++)//每一轮比较的次数if(a[j]>a[j+1]){//注意这里应该写大于而不是小于t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前}}voidf3(){//将排好序的数组a输出inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<<"请输入需要插入的数:
cin>>xx;
a1.f1(aaa,5);
a1.f2(xx);//需要插入的数通过实参传递给形参
4.两个数组合并成一个新数组
5.冒泡排序法
voidf1(intaa[])
{//该函数的作用是将成员数据a的每个元素赋值(即初始化数组a)将形参数组aa赋值给成员数据a
inti;//函数体中需要使用的全部变量的说明语句建议大家写在这里
for(i=0;i<10;i++)//利用循环给成员数据a的每个元素赋值
a[i]=aa[i];//注意赋值语句顺序不可颠倒
{//该函数的作用是把成员数据a的10个数进行升序排列
inti,j,t;//此时不可重新定义a数组,因为a数组已经存在并已有元素值
for(i=0;i<9;i++)//比较几轮
for(j=0;j<9-i;j++)//每一轮比较的次数
if(a[j]>a[j+1])
{//注意这里应该写大于而不是小于
t=a[j];a[j]=a[j+1];a[j+1]=t;//交换a[j]和a[j+1]两个元素,保证小的元素在前
{//将排好序的数组a输出
cout<if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1}}};//此行的分号不可缺少voidmain(){intb[]={2,1,5,0,6,10,9,8,12,3};Aa1;a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省a1.f3();}6.选择排序法#include//适当之处增加注释语句,以增加程序的可读性classB{inta[10];public:voidf1(intbb[]){//初始化成员数据a数组inti;for(i=0;i<10;i++)a[i]=bb[i];}voidf2(){//对数组a进行升序排列inti,j,t;for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidf3(){//每行输出数组a的5个元素inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if((i+1)%5==0)cout<<'\n';//控制一行输出5个元素,因为i从0开始,所以此行应写成i+1
};//此行的分号不可缺少
intb[]={2,1,5,0,6,10,9,8,12,3};
a1.f1(b);//不能写成a1.f1(b[10]),也不能写成a1.f1(b[])
a1.f2();//调用无参的成员函数一定要注意后面的括号不能缺省
6.选择排序法
inti,j,t;
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if((i+1)%5==0)cout<}}};//此行分号不可缺省voidmain(){intaa[10]={8,2,7,10,16,0,3,20,1,30};Bb1;b1.f1(aa);//注意实参的书写形式b1.f2();b1.f3();}7.直接查找法#includeclassA{inta[10];intx;intk;//需要查找的数所在数组a的下标public:voidf1(intaa[],intxx){//初始化成员数据a和xinti;for(i=0;i<10;i++)a[i]=aa[i];x=xx;}voidf2(){inti;for(i=0;i<10;i++)if(a[i]==x)break;if(i==10)k=0;elsek=i;}voidf3(){inti;for(i=0;i<10;i++){cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
7.直接查找法
if(a[i]==x)break;
if(i==10)
k=0;
k=i;
cout<if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if((i+1)%5==0)cout<}if(k==0)cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<elsecout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10},xxx;cout<<"请输入要查找的数:";cin>>xxx;Aa1;a1.f1(b,xxx);a1.f2();a1.f3();}二维数组的应用1.求鞍点#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intt;//存放鞍点的值intr,l;//存放鞍点所在行和列public:voidf1(intaa[][N]){//初始化成员数组a,其他成员数据t、r、l在f2函数中求出inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
二维数组的应用
1.求鞍点
#include//所谓鞍点指处于行最大值列最小值的元素及其所在的下标
#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性
inta[N][N];
intt;//存放鞍点的值
intr,l;//存放鞍点所在行和列
voidf1(intaa[][N])
{//初始化成员数组a,其他成员数据t、r、l在f2函数中求出
inti,j;
for(i=0;ifor(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(j=0;ja[i][j]=aa[i][j];}voidf2(){//求最值和平均值inti,j,k;for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
a[i][j]=aa[i][j];
{//求最值和平均值
for(i=0;i{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数t=a[i][0];for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
{//每行依次先求出最大值,再判断该最大值在其所在列是否是最小数
t=a[i][0];
for(j=0;jif(a[i][j]>t){t=a[i][j];r=i;l=j;}for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(a[i][j]>t){t=a[i][j];r=i;l=j;}
for(k=0;kif(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(a[k][l]if(k==N)break;}}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
if(k==N)break;
{//输出各成员数据
for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
{//该循环用于输出二维数组a,注意输出的格式
for(j=0;jcout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<}cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<<"鞍点"<"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
"<}};voidmain(){intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};Aa1;a1.f1(aa);a1.f2();a1.f3();}2.求边界元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放边界元素之和intsum2;//存放非边界元素之和public:voidf1(intaa[][N]){//初始化成员数组a、sum1、sum2inti,j;for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
intaa[N][N]={{1,2,3,15},{5,6,7,16},{9,10,11,12},{3,7,1,20}};
a1.f1(aa);
2.求边界元素之和
intsum1;//存放边界元素之和
intsum2;//存放非边界元素之和
{//初始化成员数组a、sum1、sum2
for(i=0;ifor(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(j=0;ja[i][j]=aa[i][j];sum1=0;sum2=0;//初始化成员数据sum1、sum2}voidf2(){//求边界元素之和inti,j;intsum=0;//存放所有元素之和for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
sum1=0;sum2=0;//初始化成员数据sum1、sum2
{//求边界元素之和
intsum=0;//存放所有元素之和
for(i=0;ifor(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(j=0;j{sum+=a[i][j];if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和sum1+=a[i][j];}sum2=sum-sum1;//求非边界元素之和}voidf3(){//输出各成员数据inti,j;for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
sum+=a[i][j];
if(i==0||i==N-1||j==0||j==N-1)//求边界元素之和
sum1+=a[i][j];
sum2=sum-sum1;//求非边界元素之和
for(i=0;i{//该循环用于输出二维数组a,注意输出的格式for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
for(j=0;jcout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<}cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<<"边界元素之和="<cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
cout<<"非边界元素之和="<}};voidmain(){intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};Aa1;a1.f1(aa);a1.f2();a1.f3();}3.求对角线元素之和#include#defineN4//二维数组的行数和列数定义为常量,以增加程序的通用性classA{inta[N][N];intsum1;//存放主对角线之和intsum2;//存放副对角线之和intsum;//存放对角线之和publi
intaa[N][N]={{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
3.求对角线元素之和
intsum1;//存放主对角线之和
intsum2;//存放副对角线之和
intsum;//存放对角线之和
publi
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2