C上机题目期末复习资料剖析.docx
《C上机题目期末复习资料剖析.docx》由会员分享,可在线阅读,更多相关《C上机题目期末复习资料剖析.docx(19页珍藏版)》请在冰豆网上搜索。
C上机题目期末复习资料剖析
一些算法的程序,有的是上机题的答案,各位同学可根据自己的时间安排进行复习。
打印三角形:
#include
voidRect(intline){//打印矩形
inti,j;
for(i=0;i{for(j=1;j<=line;j++)cout<<''<<'*';cout<}}voidTriangA(intline){//打印上三角inti,j;for(i=0;i{for(j=0;jcout<<"";//输出前方空格for(j=1;j<=2*i+1;j++)cout<<''<<'*';cout<}}voidTriangB(intline){//打印下三角inti,j;for(i=0;i{for(j=0;j<=i;j++)cout<<"";//输出前方空格for(j=1;j<=2*(line-1-i)+1;j++)cout<<''<<'*';cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{
for(j=1;j<=line;j++)
cout<<''<<'*';
cout<}}voidTriangA(intline){//打印上三角inti,j;for(i=0;i{for(j=0;jcout<<"";//输出前方空格for(j=1;j<=2*i+1;j++)cout<<''<<'*';cout<}}voidTriangB(intline){//打印下三角inti,j;for(i=0;i{for(j=0;j<=i;j++)cout<<"";//输出前方空格for(j=1;j<=2*(line-1-i)+1;j++)cout<<''<<'*';cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
}
voidTriangA(intline){//打印上三角
for(i=0;i{for(j=0;jcout<<"";//输出前方空格for(j=1;j<=2*i+1;j++)cout<<''<<'*';cout<}}voidTriangB(intline){//打印下三角inti,j;for(i=0;i{for(j=0;j<=i;j++)cout<<"";//输出前方空格for(j=1;j<=2*(line-1-i)+1;j++)cout<<''<<'*';cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=0;jcout<<"";//输出前方空格for(j=1;j<=2*i+1;j++)cout<<''<<'*';cout<}}voidTriangB(intline){//打印下三角inti,j;for(i=0;i{for(j=0;j<=i;j++)cout<<"";//输出前方空格for(j=1;j<=2*(line-1-i)+1;j++)cout<<''<<'*';cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<<"";//输出前方空格
for(j=1;j<=2*i+1;j++)
cout<}}voidTriangB(intline){//打印下三角inti,j;for(i=0;i{for(j=0;j<=i;j++)cout<<"";//输出前方空格for(j=1;j<=2*(line-1-i)+1;j++)cout<<''<<'*';cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
voidTriangB(intline){//打印下三角
for(i=0;i{for(j=0;j<=i;j++)cout<<"";//输出前方空格for(j=1;j<=2*(line-1-i)+1;j++)cout<<''<<'*';cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=0;j<=i;j++)
for(j=1;j<=2*(line-1-i)+1;j++)
cout<}}voidmain(){intch=1;intn;while(ch>0&&ch<5){cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:";cout<<"\n请输入菜单项序号:";cin>>ch;//输入选择项号码switch(ch){case1:cout<<"\n请输入一个整数n=";cin>>n;//输入函数参数break;case2:cout<<"打印n行矩形:"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
voidmain(){
intch=1;
intn;
while(ch>0&&ch<5){
cout<<"\n1_输入整数n2_矩形3_上三角4_下三角5_结束:
";
cout<<"\n请输入菜单项序号:
cin>>ch;//输入选择项号码
switch(ch){
case1:
cout<<"\n请输入一个整数n=";
cin>>n;//输入函数参数
break;
case2:
cout<<"打印n行矩形:
"<Rect(n);break;case3:cout<<"打印上三角:"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
Rect(n);
case3:
cout<<"打印上三角:
"<TriangA(n);break;case4:cout<<"打印下三角:"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
TriangA(n);
case4:
cout<<"打印下三角:
"<TriangB(n);break;case5:break;}//switch}//while}设计两个函数,分别求两个数的最大公约数和最小公倍数。#includeMaxCommonDevisor(intn,intm){for(inti=n;i>=1;i--)if(n%i==0&&m%i==0)break;returni;}MinCommonMultiple(intn,intm){for(inti=n;i<=n*m;i++)if(i%n==0&&i%m==0)break;returni;}voidmain(){inti,j;cout<<"请输入两个整数:"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
TriangB(n);
case5:
}//switch
}//while
设计两个函数,分别求两个数的最大公约数和最小公倍数。
MaxCommonDevisor(intn,intm){
for(inti=n;i>=1;i--)
if(n%i==0&&m%i==0)break;
returni;
MinCommonMultiple(intn,intm){
for(inti=n;i<=n*m;i++)
if(i%n==0&&i%m==0)break;
cout<<"请输入两个整数:
"<cin>>i>>j;cout<<"最小公约数:"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cin>>i>>j;
cout<<"最小公约数:
"<"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
"<}验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。例如:4=2+26=3+38=3+5……50=3+47将450之间的所有偶数用两个素数之和表示。要求判断一个整数是否为素数用函数完成。boolprime(intm){//判断整数m是否为素数if(m==1||m==0)returnfalse;if(m==2)returntrue;//是素数intk=(int)sqrt(m);for(inti=2;i<=k;i++)//穷举法if(m%i==0)break;if(i>k)returntrue;//是素数elsereturnfalse;//不是素数}voidmain(){for(intn=4;n<=50;n+=2){for(inti=2;i<=n/2;i++)if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
验证歌德巴赫猜想:
任何一个充分大的偶数都可以表示为两个素数之和。
例如:
4=2+26=3+38=3+5……50=3+47
将450之间的所有偶数用两个素数之和表示。
要求判断一个整数是否为素数用函数完成。
boolprime(intm){//判断整数m是否为素数
if(m==1||m==0)returnfalse;
if(m==2)returntrue;//是素数
intk=(int)sqrt(m);
for(inti=2;i<=k;i++)//穷举法
if(m%i==0)break;
if(i>k)returntrue;//是素数
elsereturnfalse;//不是素数
for(intn=4;n<=50;n+=2){
for(inti=2;i<=n/2;i++)
if(prime(i)&&prime(n-i))cout<//列出所有可能组合}}输出PASCAL三角的前12行PASCAL三角是形状如下的三角矩阵:11112113311464115101051在三角中的每个数是一个组合C(n,k):C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…(n-k+2))/(k-1))(n-k+1))/k式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。#include#includeusingnamespacestd;longzrf_comb(intn,intk){if(n<0||k<0||k>n)return0;longc=1;for(inti=1;i<=k;i++,n--)c=c*n/i;returnc;}intmain(){constm=13;intj;for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
//列出所有可能组合
输出PASCAL三角的前12行
PASCAL三角是形状如下的三角矩阵:
1
11
121
1331
14641
15101051
在三角中的每个数是一个组合C(n,k):
C(n,k)=((((((((n/1)(n-1))/2(n-2))/3)…
(n-k+2))/(k-1))(n-k+1))/k
式中交替使用乘法和除法,每次乘以一个递减值,再除以一个递增值。
usingnamespacestd;
longzrf_comb(intn,intk)
{if(n<0||k<0||k>n)return0;
longc=1;
for(inti=1;i<=k;i++,n--)
c=c*n/i;
returnc;
intmain()
{constm=13;
intj;
for(inti=0;i{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{for(j=1;jcout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<(2)<<"";for(j=0;j<=i;j++)cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
(2)<<"";
cout<cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<}return0;}筛法求3~100间的所有素数voidmain(){intprime[49],i,j=3;for(i=0;i<49;i++)//将3~100间的所有奇数放入筛(数组)中{prime[i]=j;j=j+2;}for(i=0;i<48;i++)//用每一个当前位置上的数去“试筛”后面的其他数if(prime[i])//如果该数字不为0for(j=i+1;j<49;j++)//对于当前“筛孔”后面的每一个数if(prime[j]&&(prime[j]%prime[i]==0))prime[j]=0;//如果是“筛孔”数的倍数就将其筛掉j=0;for(i=0;i<49;i++)//循环输出各素数if(prime[i])//如果该位置上的数没有被筛掉{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
return0;
筛法求3~100间的所有素数
voidmain()
{intprime[49],i,j=3;
for(i=0;i<49;i++)
//将3~100间的所有奇数放入筛(数组)中
{prime[i]=j;j=j+2;}
for(i=0;i<48;i++)
//用每一个当前位置上的数去“试筛”后面的其他数
if(prime[i])//如果该数字不为0
for(j=i+1;j<49;j++)
//对于当前“筛孔”后面的每一个数
if(prime[j]&&(prime[j]%prime[i]==0))
prime[j]=0;
//如果是“筛孔”数的倍数就将其筛掉
j=0;
for(i=0;i<49;i++)//循环输出各素数
if(prime[i])//如果该位置上的数没有被筛掉
{cout<j++;//j统计着素数个数if(j%5==0)cout<<‘\n’;//一行5个素数}cout<<'\n';cout<<"素数的个数为:"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
j++;//j统计着素数个数
if(j%5==0)cout<<‘\n’;//一行5个素数
cout<<'\n';
cout<<"素数的个数为:
"<}在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。#include#include#include#defineN20voidresearch(inty[],intz)//顺序查找函数{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
在具有20个元素的数组中,用产生随机数的方法为其元素赋值,并用顺序查找法在数组中查找指定的元素。
#defineN20
voidresearch(inty[],intz)//顺序查找函数
{for(inti=0;iif(y[i]==z){cout<<"在第"<return;}if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
if(y[i]==z)
{cout<<"在第"<
return;
if(i==N)cout<<"没有找到"<return;}voidmain(){inta[N],i;srand(unsigned(time(0)));//产生一个随机种子for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{inta[N],i;
srand(unsigned(time(0)));//产生一个随机种子
for(i=0;i{a[i]=rand();//a[i]的值取自随机数cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{a[i]=rand();//a[i]的值取自随机数
cout<}cout<<”\n请输入要查找的数:”;cin>>i;cout<<”\n\n”;research(a,i);//调用函数research查找i}在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。intBSearch(inta[],intx)//二分查找函数{intleft=0,right=N,mid;//left为左端点,right为右端点,mid为中点while(left<=right){mid=(left+right)/2;//计算中点cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<<”\n请输入要查找的数:
”;
cin>>i;
cout<<”\n\n”;
research(a,i);//调用函数research查找i
在具有15个元素的数组中,用二分查找法在数组中查找指定的元素。
intBSearch(inta[],intx)//二分查找函数
{intleft=0,right=N,mid;
//left为左端点,right为右端点,mid为中点
while(left<=right)
{mid=(left+right)/2;//计算中点
cout<if(a[mid]>x)right=mid-1;//要查找的数在左半区间,收缩右端点elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
if(a[mid]>x)right=mid-1;
//要查找的数在左半区间,收缩右端点
elseif(a[mid]//要查找的数在右半区间,收缩左端点elsereturnmid;//查找成功}if(left>right)return-1;//查找失败elsereturnmid;}voidmain(){intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};cout<<”请输入要查找的数:”;cin>>x;pos=BSearch(data,x);if(pos>=0)cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
//要查找的数在右半区间,收缩左端点
elsereturnmid;//查找成功
if(left>right)return-1;//查找失败
elsereturnmid;
{intx,pos,data[N]={1,5,8,12,14,18,20,25,35,40};
cout<<”请输入要查找的数:
cin>>x;
pos=BSearch(data,x);
if(pos>=0)
cout<<“”<”<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
”
<elsecout<<”数组中无此元素!”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
else
cout<<”数组中无此元素!
”<}打印杨辉三角形---计算二项式系数11112113311464115101051#include#defineN6voidmain(void){inta[N][N],i,j;for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
打印杨辉三角形
---计算二项式系数
#defineN6
voidmain(void)
inta[N][N],i,j;
for(i=0;ia[i][i]=1;//对角线元素为1a[i][0]=1;//最左一列元素为1}for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
a[i][i]=1;
//对角线元素为1
a[i][0]=1;
//最左一列元素为1
for(i=1;ifor(j=1;ja[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=1;j
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{for(j=0;j<=i;j++)cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<}}有两个数据系列分别为:a:48,435,232,666,264,1323,456b:186,90,152,122,82,243,312求:第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。d中数据是a、b中对应数的最小公倍数。inta[7]={48,435,232,666,264,1323,456};intb[7]={186,90,152,122,82,243,312};c[7]={6,15,8,2,2,27,24}d[7]={1488,2610,4408,40626,10824,11907,5928}//求最大公约数intojld(intm,intn)//形参不能是数组元素{intr;while(r=m%n){m=n;n=r;}returnn;}//最小公倍数intgbs(intm,intn,intk){returnm*n/k;}voidmain(void){inta[7]={48,435,232,666,264,13231,456};intb[7]={186,90,152,122,82,243,312};intc[7],d[7];for(inti=0;i<7;i++){c[i]=ojld(a[i],b[i]);d[i]=gbs(a[i],b[i],c[i]);}for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
有两个数据系列分别为:
a:
48,435,232,666,264,1323,456
b:
186,90,152,122,82,243,312
求:
第三、四个数据系列c和d,要求c中数据是a、b中对应数的最大公约数。
d中数据是a、b中对应数的最小公倍数。
inta[7]={48,435,232,666,264,1323,456};
intb[7]={186,90,152,122,82,243,312};
c[7]={6,15,8,2,2,27,24}
d[7]={1488,2610,4408,40626,10824,11907,5928}
//求最大公约数
intojld(intm,intn)//形参不能是数组元素
{intr;
while(r=m%n){m=n;n=r;}
returnn;
//最小公倍数
intgbs(intm,intn,intk)
{returnm*n/k;}
{inta[7]={48,435,232,666,264,13231,456};
intc[7],d[7];
for(inti=0;i<7;i++)
{c[i]=ojld(a[i],b[i]);
d[i]=gbs(a[i],b[i],c[i]);
for(i=0;i<7;i++)cout<cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(i=0;i<7;i++)cout<cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<}编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。求最大(小)数用一个函数实现。#defineN10intmaxin(intx[],intflag){intj=0,i;//j为最大(小)数的位置for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
编写一个程序,将整数数组中的最大数与第0个元素交换,将最小数与最后一个元素交换。
求最大(小)数用一个函数实现。
#defineN10
intmaxin(intx[],intflag)
{intj=0,i;//j为最大(小)数的位置
for(i=0;iif(flag)//flag为1时求最大值为0时求最小值{if(x[i]>x[j])j=i;}//j标记最大数位置else{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
if(flag)//flag为1时求最大值为0时求最小值
{if(x[i]>x[j])j=i;}//j标记最大数位置
{if(x[i]returnj;}voidmain(){inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;m=maxin(a,1);//求最大数,第一个实参为数组名if(m!=0)t=a[m],a[m]=a[0],a[0]=t;//交换最大数和第0个元素m=maxin(a,0);//求最小数if(m!=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;//交换最小数和最后元素}编写一个程序,将十进制整数n转换成二进制数。voidtrans(inta[],intn)//n转二进制,a[]为数组{inti=0;//假设i<20while(n!=0){a[i++]=n%2;n=n/2;}}voidmain(){intb[20]={0},n,i=19;cout<<”n=”;cin>>n;//输入待转换的十进制数n,n>0trans(b,n);//调用函数trans转换,数组名b作实参cout<<”二进制数为:”;while(b[i]==0)i--;//排除没存放二进制数的元素for(;i>=0;i--)//从高位到低位输出二进制数cout<cout<<’\n’;}编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。voidinput(inta[][5],intn)//n是数组a第1维的大小,由调用函数指定{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
returnj;
{inta[N]={21,12,33,64,56,6,87,78,99,10},t,m;
m=maxin(a,1);//求最大数,第一个实参为数组名
if(m!
=0)t=a[m],a[m]=a[0],a[0]=t;
//交换最大数和第0个元素
m=maxin(a,0);//求最小数
=N-1)t=a[m],a[m]=a[N-1],a[N-1]=t;
//交换最小数和最后元素
编写一个程序,将十进制整数n转换成二进制数。
voidtrans(inta[],intn)//n转二进制,a[]为数组
{inti=0;//假设i<20
while(n!
=0){a[i++]=n%2;n=n/2;}
{intb[20]={0},n,i=19;
cout<<”n=”;
cin>>n;//输入待转换的十进制数n,n>0
trans(b,n);//调用函数trans转换,数组名b作实参
cout<<”二进制数为:
while(b[i]==0)i--;//排除没存放二进制数的元素
for(;i>=0;i--)//从高位到低位输出二进制数
cout<
cout<<’\n’;
编写一个程序,处理某班学生3门课程(语文、数学和英语)的成绩。
先输入学生人数(最多为50个人);再调用一个函数按编号从小到大的顺序依次输入学生成绩;然后调用函数统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩;最后调用函数输出学生的成绩。
voidinput(inta[][5],intn)
//n是数组a第1维的大小,由调用函数指定
{cout<<"请输入"<for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(inti=0;icin>>a[i][0]>>a[i][1]>>a[i][2];}voidprint(inta[][5],intn)//形参是二维数组,第2维必须指定大小{cout<<”高数英语C++总分平均分\n”;for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cin>>a[i][0]>>a[i][1]>>a[i][2];
voidprint(inta[][5],intn)
//形参是二维数组,第2维必须指定大小
{cout<<”高数英语C++总分平均分\n”;
for(inti=0;i{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{cout<<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
<cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<}voidcut(inta[][5],intn){for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
voidcut(inta[][5],intn)
{for(inti=0;i{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分a[i][4]=a[i][3]/3;//平均分不计小数}}voidmain(){intscore[50][5],n;cout<<"请输入学生人数:”;cin>>n;input(score,n);//输入n个学生3门课的成绩cut(score,n);//计算学生的总成绩和平均成绩print(score,n);//输出n个学生的成绩}有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。#defineN50voidmain(){charstr[N],nstr[N],ch;inti=0,j=0;cout<<“请输入文字:";cin.getline(str,N);//输入一行字符cout<<"字符:";cin>>ch;//输入待删除的字符while(str[i]!='\0'){if(str[i]!=ch)nstr[j++]=str[i];//复制一个字符i++;}nstr[j]='\0';cout<<"新串:"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{a[i][3]=a[i][0]+a[i][1]+a[i][2];//计算总分
a[i][4]=a[i][3]/3;//平均分不计小数
{intscore[50][5],n;
cout<<"请输入学生人数:
cin>>n;
input(score,n);//输入n个学生3门课的成绩
cut(score,n);//计算学生的总成绩和平均成绩
print(score,n);//输出n个学生的成绩
有一行字符,现要求从其中删去某个指定字符(如输入n,表示要从此行文字中删去所有是n的字符),要求该行文字和待删的字符均由键盘输入。
#defineN50
{charstr[N],nstr[N],ch;
inti=0,j=0;
cout<<“请输入文字:
cin.getline(str,N);//输入一行字符
cout<<"字符:
cin>>ch;//输入待删除的字符
while(str[i]!
='\0'){
if(str[i]!
=ch)nstr[j++]=str[i];//复制一个字符
i++;
nstr[j]='\0';
cout<<"新串:
"<}编写一个程序,将字符串s1中所有出现在字符串s2中的字符删去。intin(charch,charstr[])//判断ch是否在串str中{inti=0;while(str[i]!='\0')if(str[i++]==ch)return1;return0;}voiddel(charstr[],intk)//删除k位置的一个字符{while(str[k]!='\0')str[k++]=str[k+1];}voidsdel(chars1[],chars2[])//从s1中删除所有的s2{inti=0,k=0;while(s1[i]!='\0'){if(in(s1[i],s2)==1)del(s1,i);i++;}}voidmain(){charstr1[50],str2[10];cout<<"请输入字符串:";cin.getline(str1,50);cout<<"请输入要删除的字串:";cin.getline(str2,10);sdel(str1,str2);cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
编写一个程序,将字符串s1中所有出现在字
符串s2中的字符删去。
intin(charch,charstr[])//判断ch是否在串str中
{inti=0;
='\0')
if(str[i++]==ch)return1;
voiddel(charstr[],intk)//删除k位置的一个字符
{while(str[k]!
str[k++]=str[k+1];
voidsdel(chars1[],chars2[])//从s1中删除所有的s2
{inti=0,k=0;
while(s1[i]!
{if(in(s1[i],s2)==1)del(s1,i);
i++;}
{charstr1[50],str2[10];
cout<<"请输入字符串:
cin.getline(str1,50);
cout<<"请输入要删除的字串:
cin.getline(str2,10);
sdel(str1,str2);
cout<}编写一个程序,实现两个长整数相加的过程。voidnsort(charstr[]);voidadd(chars1[],chars2[],charsum[]);voidmain(){chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};cout<<"被加数:";cin>>s1;//输入被加数cout<<"加数:";cin>>s2;//输入加数nsort(s1);nsort(s2);//加数和被加数反转add(s1,s2,sum);//相加nsort(sum);//和反转cout<<"相加结果:"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
编写一个程序,实现两个长整数相加的过程。
voidnsort(charstr[]);
voidadd(chars1[],chars2[],charsum[]);
chars1[40]={"\0"},s2[40]={"\0"},sum[50]={'0'};
cout<<"被加数:
";cin>>s1;//输入被加数
cout<<"加数:
";cin>>s2;//输入加数
nsort(s1);nsort(s2);//加数和被加数反转
add(s1,s2,sum);//相加
nsort(sum);//和反转
cout<<"相加结果:
"<}voidadd(chars1[],chars2[],charsum[]){intjw=0,i=0,j,l1,l2,len;//jw为进位l1=strlen(s1);l2=strlen(s2);//求数字位数len=l1>l2?l1:l2;//len为位数大者while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
voidadd(chars1[],chars2[],charsum[])
{intjw=0,i=0,j,l1,l2,len;//jw为进位
l1=strlen(s1);l2=strlen(s2);//求数字位数
len=l1>l2?
l1:
l2;//len为位数大者
while(i{j=s1[i]+s2[i]-96+jw;//计算第i位的和if(j<0)j+=48;//防止s1或s2中的某位为\0if(j>9)//有进位sum[i]=j+38,jw=1;else//无进位sum[i]=j+48,jw=0;i++;}if(jw)sum[i]='1';//处理最高位的进位elsesum[i]='\0';sum[i+1]='\0';//设置和的字符串结束符}voidnsort(charstr[]){inti=0,j=strlen(str)-1;chart;while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{j=s1[i]+s2[i]-96+jw;//计算第i位的和
if(j<0)j+=48;//防止s1或s2中的某位为\0
if(j>9)//有进位
sum[i]=j+38,jw=1;
else//无进位
sum[i]=j+48,jw=0;
if(jw)sum[i]='1';//处理最高位的进位
elsesum[i]='\0';
sum[i+1]='\0';//设置和的字符串结束符
voidnsort(charstr[])
{inti=0,j=strlen(str)-1;
chart;
while(i{t=str[i];str[i]=str[j];str[j]=t;i++;j--;}}已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中voidmain(void){inta[8]={1,2,4,8,32,64,128},x;for(inti=0;i<7;i++)cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
{t=str[i];str[i]=str[j];str[j]=t;
i++;j--;
已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中
{inta[8]={1,2,4,8,32,64,128},x;
cout<cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<i--;cout<<“输入一个整数x:";cin>>x;while(a[i]>x)a[i+1]=a[i--];a[i+1]=x;for(i=0;i<8;i++)cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
i--;
cout<<“输入一个整数x:
while(a[i]>x)a[i+1]=a[i--];
a[i+1]=x;
for(i=0;i<8;i++)
cout<cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cout<}矩阵乘积voidmain(){inta[N][K],b[K][M],c[N][M];inti,j,l;//-----输入a数组cout<<"请输入a数组:\n";for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
矩阵乘积
inta[N][K],b[K][M],c[N][M];
inti,j,l;
//-----输入a数组
cout<<"请输入a数组:
\n";
for(i=0;ifor(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=0;jcin>>a[i][j];//-----输入b数组cout<<"请输入b数组:\n";for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cin>>a[i][j];
//-----输入b数组
cout<<"请输入b数组:
for(i=0;ifor(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=0;jcin>>b[i][j];//-----计算乘积for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
cin>>b[i][j];
//-----计算乘积
for(i=0;ifor(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=0;jc[i][j]=0;for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
c[i][j]=0;
for(l=0;lc[i][j]+=a[i][l]*b[l][j];}//-----输出乘积结果for(i=0;ifor(j=0;jcout<cout<<'\n';}}
c[i][j]+=a[i][l]*b[l][j];
//-----输出乘积结果
for(i=0;ifor(j=0;jcout<cout<<'\n';}}
for(j=0;jcout<cout<<'\n';}}
cout<cout<<'\n';}}
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1