华北电力大学c++实验指导数组的应用习题参考答案.docx
《华北电力大学c++实验指导数组的应用习题参考答案.docx》由会员分享,可在线阅读,更多相关《华北电力大学c++实验指导数组的应用习题参考答案.docx(26页珍藏版)》请在冰豆网上搜索。
华北电力大学c++实验指导数组的应用习题参考答案
P126数组的应用习题解答
1.改错题
见文件“实验指导改错题习题解答”。
2.填空题(在空白处填入适当内容,将程序补充完整,并上机调试)
(1)求Fibonachi数列(1,1,2,3,5,8,13,……)的前10项。
#include
voidmain()
{intf[11]={0,1,1},n;
for(n=3;n<=10;n++)
f[n]=
(1);
for(
(2);n<=10;n++)
cout<}参考答案(1)f[n]=f[n-1]+f[n-2](2)n=10(2)从键盘上输入若干学生的成绩,统计出平均成绩,并输出低于平均分的学生成绩,输入负数结束数据的输入。#includevoidmain(){floatx[100],sum=0.0,ave,a;intn=0,i;cin>>a;while((1)){sum+=a;x[n]=a;(2);cin>>a;}ave=sum/n;;cout<<"ave="<for(i=0;(3);i++)if((4))cout<}参考答案(1)a>=0(2)n++(3)i(3)计算一个3X3矩阵的各列元素的平均值。#include"iostream.h"#defineM3voidmain(){inta[M][M]={1,2,3,4,5,6,7,8},i,j;floatave[M];for(i=0;i{(1);for(j=0;jave[i]=ave[i]+(2);ave[i]=(3);}for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
}
参考答案
(1)f[n]=f[n-1]+f[n-2]
(2)n=10
(2)从键盘上输入若干学生的成绩,统计出平均成绩,并输出低于平均分的学生成绩,输入负数结束数据的输入。
{floatx[100],sum=0.0,ave,a;
intn=0,i;
cin>>a;
while(
(1))
{sum+=a;
x[n]=a;
(2);
cin>>a;}
ave=sum/n;;
cout<<"ave="<for(i=0;(3);i++)if((4))cout<}参考答案(1)a>=0(2)n++(3)i(3)计算一个3X3矩阵的各列元素的平均值。#include"iostream.h"#defineM3voidmain(){inta[M][M]={1,2,3,4,5,6,7,8},i,j;floatave[M];for(i=0;i{(1);for(j=0;jave[i]=ave[i]+(2);ave[i]=(3);}for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
for(i=0;(3);i++)
if((4))
cout<}参考答案(1)a>=0(2)n++(3)i(3)计算一个3X3矩阵的各列元素的平均值。#include"iostream.h"#defineM3voidmain(){inta[M][M]={1,2,3,4,5,6,7,8},i,j;floatave[M];for(i=0;i{(1);for(j=0;jave[i]=ave[i]+(2);ave[i]=(3);}for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
(1)a>=0
(2)n++(3)i(3)计算一个3X3矩阵的各列元素的平均值。#include"iostream.h"#defineM3voidmain(){inta[M][M]={1,2,3,4,5,6,7,8},i,j;floatave[M];for(i=0;i{(1);for(j=0;jave[i]=ave[i]+(2);ave[i]=(3);}for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
(3)计算一个3X3矩阵的各列元素的平均值。
#include"iostream.h"
#defineM3
{inta[M][M]={1,2,3,4,5,6,7,8},i,j;
floatave[M];
for(i=0;i{(1);for(j=0;jave[i]=ave[i]+(2);ave[i]=(3);}for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{
for(j=0;jave[i]=ave[i]+(2);ave[i]=(3);}for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
ave[i]=ave[i]+
ave[i]=(3);
for(i=0;icout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
cout<<""<}参考答案(1)ave[i]=0(2)a[j][i](3)ave[i]/M(4)找出一个5x5矩阵中的最小值及其在数组中的位置。#include"iostream.h"#defineM5voidmain(){inta[M][M],i,j,h,l;for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
(1)ave[i]=0
(2)a[j][i](3)ave[i]/M
(4)找出一个5x5矩阵中的最小值及其在数组中的位置。
#defineM5
{inta[M][M],i,j,h,l;
for(i=0;ifor(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
for(j=0;j(1);h=0;l=0;for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
h=0;l=0;
for(i=0;ifor(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
for(j=0;jif((2)>a[i][j]){h=i;(3);}cout<<"最小值:"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(
(2)>a[i][j])
{h=i;
(3);
cout<<"最小值:
"<<(4)<cout<<"位置:行:"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
cout<<"位置:
行:
"<"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
"<}参考答案(1)cin>>a[i][j](2)a[h][l](3)l=j(4)a[h][l](5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。#includevoidmain(){charstr1[100],str2[100];inti,s;printf("请输入第一个字符串:");gets(str1);printf("请输入第二个字符串:");gets(str2);i=0;while((1))i++;s=(2);printf("%d",s);}参考答案(1)str1[i]==str2[i]&&str1[i]!='\0'(2)str1[i]-str2[i]思考:1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?根据这个结果判断字符’\0’的ASCII码是多少?答:运行结果为-99。依此判断字符’\0’的ASCII码为02.对于字符数组str1,关系表达式str1[i]!=’\0’与str1[i]!=0是否等价?答:等价。(6)子函数的功能是将十进制数转换成二进制数。在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。#includevoidmain(){inty,n,j,a[8];(1);cin>>y;n=(2);for(j=(3);j>=0;j--)cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
(1)cin>>a[i][j]
(2)a[h][l](3)l=j(4)a[h][l]
(5)程序的功能是将两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差(第一个字串中字符的ASCII码减去第二个字串中字符的ASCII码)。
{charstr1[100],str2[100];
inti,s;
printf("请输入第一个字符串:
");
gets(str1);
printf("请输入第二个字符串:
gets(str2);
i=0;
i++;
s=
printf("%d",s);
(1)str1[i]==str2[i]&&str1[i]!
='\0'
(2)str1[i]-str2[i]
思考:
1.如果第一个字串为ab,第二个字串为abc,程序的运行结果是什么?
根据这个结果判断字符’\0’的ASCII码是多少?
答:
运行结果为-99。
依此判断字符’\0’的ASCII码为0
2.对于字符数组str1,关系表达式str1[i]!
=’\0’与str1[i]!
=0是否等价?
等价。
(6)子函数的功能是将十进制数转换成二进制数。
在主函数中输入十进制数,调用子函数进行转换后,然后输出转换的结果。
{inty,n,j,a[8];
cin>>y;
n=
for(j=(3);j>=0;j--)
cout<}intzh(inta[],intx){inti;i=0;do{a[i]=(4);i++;x=x/2;}while(x>=1);(5);}参考答案(1)intzh(int[],int)(2)zh(a,y)(3)n-1(4)x%2(5)returni(一)编写程序1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。程序如下:#includevoidmain(){inta[50],n,min,max,b,i;printf("输入数据个数:");scanf("%d",&n);printf("输入数据:");for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
intzh(inta[],intx)
{inti;
do
{a[i]=(4);i++;
x=x/2;
while(x>=1);
(5);
(1)intzh(int[],int)
(2)zh(a,y)(3)n-1(4)x%2(5)returni
(一)编写程序
1.从任意n个数构成的数列中找出最大的数和最小的数,将最大的数和最后一个数互换,最小的数和第一个数互换。
程序如下:
{inta[50],n,min,max,b,i;
printf("输入数据个数:
scanf("%d",&n);
printf("输入数据:
for(i=0;iscanf("%d",&a[i]);max=0;min=0;for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
scanf("%d",&a[i]);
max=0;min=0;
for(i=1;i{if(a[i]>a[max])max=i;if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{if(a[i]>a[max])
max=i;
if(a[i]min=i;}b=a[0];a[0]=a[min];a[min]=b;b=a[n-1];a[n-1]=a[max];a[max]=b;for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
min=i;
b=a[0];a[0]=a[min];a[min]=b;
b=a[n-1];a[n-1]=a[max];a[max]=b;
for(i=0;iprintf("%5d",a[i]);}2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。程序如下:#includevoidmain(){intn,i,b;floata[50],x,s=0;cout<<"输入实数:";n=0;cin>>x;while(x>0){a[n]=x;n++;cin>>x;}for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
printf("%5d",a[i]);
2.从键盘输入任意个大于0的实数,存入一个数组中(输入小于等于0的数,数据输入过程结束),统计并输出其中大于等于平均值的实数个数。
{intn,i,b;
floata[50],x,s=0;
cout<<"输入实数:
";
n=0;
cin>>x;
while(x>0)
{a[n]=x;
n++;
cin>>x;}
for(i=0;is+=a[i];s/=n;b=0;for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
s+=a[i];
s/=n;
b=0;
for(i=0;i{if(a[i]>=s)b++;}cout<<"大于等于平均值的实数个数:"<}3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。程序如下:#includevoidmain(){intn,i,a[50];n=0;for(i=1;i<=100;i++)if(i%7==0||i%11==0){a[n]=i;n++;}for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{if(a[i]>=s)
b++;}
cout<<"大于等于平均值的实数个数:
"<
3.找出1~100之间能被7或11整除的所有整数,将这些整数放在数组中然后输出,要求一行输出10个数。
{intn,i,a[50];
for(i=1;i<=100;i++)
if(i%7==0||i%11==0)
{a[n]=i;n++;}
for(i=0;i{if(i%10==0)printf("\n");printf("%5d",a[i]);}}4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。程序如下:#includevoidmain(){inta[50],i,x,n;cout<<"输入数列:";n=0;cin>>a[n];while(a[n]!=0){n++;cin>>a[n];}cout<<"输入要查找的数:";cin>>x;for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{if(i%10==0)printf("\n");
4.将任意个互不相同且非0的整数组成的数列输入到数组中(输入0结束输入),然后查找某个数是否在这个数列中,若在,就输出该数在数列中的位置,若不在,就输出相关信息。
{inta[50],i,x,n;
cout<<"输入数列:
cin>>a[n];
while(a[n]!
=0)
{n++;
cout<<"输入要查找的数:
for(i=0;iif(x==a[i]){cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(x==a[i])
{cout<break;}if(i==n)cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
break;}
if(i==n)
cout<}5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。方法一:#includevoidmain(){inta[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
5.查找一数是否在一个数列(由非0整数构成)中,若在,请从数列中删除这个数。
方法一:
{inta[50],n,x,i,j;
printf("输入数列:
scanf("%d",&a[n]);
printf("输入要查的数:
scanf("%d",&x);
for(i=0;iif(a[i]==x){for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(a[i]==x)
{for(j=i+1;ja[j-1]=a[j];n--;i--;}printf("处理结果");for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
a[j-1]=a[j];
n--;
i--;
printf("处理结果");
for(i=0;iprintf("%5d",a[i]);}方法二:#includevoidmain(){inta[50],b[50],n,x,i,j;printf("输入数列:");n=0;scanf("%d",&a[n]);while(a[n]!=0){n++;scanf("%d",&a[n]);}printf("输入要查的数:");scanf("%d",&x);j=0;for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
方法二:
{inta[50],b[50],n,x,i,j;
j=0;
for(i=0;iif(a[i]!=x){b[j]=a[i];j++;}printf("处理结果");for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(a[i]!
=x)
{b[j]=a[i];
j++;
for(i=0;iprintf("%5d",b[i]);}6.将一个数组中的数循环右移,例如,数组中原来的数为:12345,移动后变成51234。程序如下:#includevoidmain(){intt[10],i,k,n;printf("输入数据个数:");scanf("%d",&n);printf("输入%d数据:",n);for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
printf("%5d",b[i]);
6.将一个数组中的数循环右移,例如,数组中原来的数为:
12345,移动后变成51234。
{intt[10],i,k,n;
printf("输入%d数据:
",n);
for(i=0;iscanf("%d",&t[i]);k=t[n-1];for(i=n-2;i>=0;i--)t[i+1]=t[i];t[0]=k;for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
scanf("%d",&t[i]);
k=t[n-1];
for(i=n-2;i>=0;i--)
t[i+1]=t[i];
t[0]=k;
for(i=0;iprintf("%5d",t[i]);}7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序如下:#includevoidmain(){inta[11],i,j,m;printf("输入数列:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<=8;i++)for(j=i+1;j<=9;j++)if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
printf("%5d",t[i]);
7.编写程序,任意输入10个整数的数列,先将整数按从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。
{inta[11],i,j,m;
for(i=0;i<10;i++)
for(i=0;i<=8;i++)
for(j=i+1;j<=9;j++)
if(a[i]{m=a[i];a[i]=a[j];a[j]=m;}printf("输入要插入的数:");scanf("%d",&m);for(i=0;i<10;i++)if(m>a[i])break;for(j=9;j>=i;j--)a[j+1]=a[j];a[i]=m;for(i=0;i<=10;i++)printf("%5d",a[i]);}8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。程序如下:#includevoidmain(){inta[50],gs,m,i,j,n,w,b,s;n=0;s=0;cout<<"输入一组正整数,输入0或负数结束输入操作:";cin>>m;while(m>0){gs=0;for(i=1;i<=m;i++)if(m%i==0)gs++;if(gs==2){a[n]=m;s+=a[n];n++;}cin>>m;}for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{m=a[i];a[i]=a[j];a[j]=m;}
printf("输入要插入的数:
scanf("%d",&m);
if(m>a[i])break;
for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=m;
for(i=0;i<=10;i++)
8.从任意一组正整数中找出素数,计算素数之和,并对素数按从大到小的顺序排序。
{inta[50],gs,m,i,j,n,w,b,s;
n=0;s=0;
cout<<"输入一组正整数,输入0或负数结束输入操作:
cin>>m;
while(m>0)
{gs=0;
for(i=1;i<=m;i++)
if(m%i==0)gs++;
if(gs==2)
{a[n]=m;s+=a[n];
n++;}
for(i=0;i{w=i;for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{w=i;
for(j=i+1;jif(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(a[w]if(w!=i){b=a[w];a[w]=a[i];a[i]=b;}}cout<<"素数之和:"<for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(w!
=i)
{b=a[w];a[w]=a[i];a[i]=b;}
cout<<"素数之和:
for(i=0;icout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
cout<}9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。例如:输入整数347,重新组合成的新整数为743。要求:程序能处理9位之内的任意正整数。程序如下:#includevoidmain(){inta[15],m1,m2,n,i,j;cout<<"输入一个正整数";cin>>m1;n=0;while(m1!=0){a[n]=m1%10;m1=m1/10;n++;}for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
9.任意输入一个正整数,将其各位数字取出,然后将各位数字按从高到低的顺序排序,重新组合成一个新的整数,并输出该整数。
例如:
输入整数347,重新组合成的新整数为743。
要求:
程序能处理9位之内的任意正整数。
{inta[15],m1,m2,n,i,j;
cout<<"输入一个正整数";
cin>>m1;
while(m1!
{a[n]=m1%10;
m1=m1/10;
for(i=0;ifor(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
for(j=i+1;jif(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(a[i]{m1=a[i];a[i]=a[j];a[j]=m1;}m2=0;for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{m1=a[i];a[i]=a[j];a[j]=m1;}
m2=0;
for(i=0;im2=m2*10+a[i];cout<<"组合成的新数为:"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
m2=m2*10+a[i];
cout<<"组合成的新数为:
"<}10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。程序如下:#includevoidmain(){inta[2][3],b[2][3],i,j;printf("请输入第一个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("请输入第二个矩阵:\n");for(i=0;i<2;i++)for(j=0;j<3;j++)scanf("%d",&b[i][j]);for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]+=b[i][j];printf("结果:\n");for(i=0;i<2;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}}11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。例如,一个3X3矩阵为:123456789其转置为:147258369其上三角部分:123569其下三角部分:145789程序如下:#includevoidmain(){inta[3][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);printf("原始矩阵为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[i][j]);}printf("\n其转置为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",a[j][i]);}printf("\n其上三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<3*i;j++)//输出空格printf("");for(j=i;j<3;j++)printf("%3d",a[i][j]);//输出上三角元素}printf("\n其下三角部分为:");for(i=0;i<3;i++){printf("\n");for(j=0;j<=i;j++)printf("%3d",a[i][j]);}}12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。程序如下:#includevoidmain(){inta[3][4],i,j,wz;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);//寻找每行最大数及其位置for(i=0;i<3;i++){wz=0;for(j=1;j<4;j++)if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
10.有两个矩阵,均为2行3列,求两个矩阵之和,并输出结果。
{inta[2][3],b[2][3],i,j;
printf("请输入第一个矩阵:
\n");
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("请输入第二个矩阵:
scanf("%d",&b[i][j]);
a[i][j]+=b[i][j];
printf("结果:
{printf("\n");
printf("%3d",a[i][j]);
11.有一个3行3列的矩阵,将其输入到数组中,并输出,再输出其转置,最后输出该矩阵的上三角部分和下三角部分。
例如,一个3X3矩阵为:
123
456
789
其转置为:
147
258
369
其上三角部分:
56
9
其下三角部分:
1
45
{inta[3][3],i,j;
printf("请输入矩阵:
for(i=0;i<3;i++)
printf("原始矩阵为:
printf("\n其转置为:
printf("%3d",a[j][i]);
printf("\n其上三角部分为:
for(j=0;j<3*i;j++)//输出空格
printf("");
for(j=i;j<3;j++)
printf("%3d",a[i][j]);//输出上三角元素
printf("\n其下三角部分为:
for(j=0;j<=i;j++)
12.找出一个3行4列矩阵每行最大的数及其位置,每列最小的数及其位置。
{inta[3][4],i,j,wz;
for(j=0;j<4;j++)
//寻找每行最大数及其位置
{wz=0;
for(j=1;j<4;j++)
if(a[i][wz]printf("第%d行最大数:%d,在第%d列\n",i+1,a[i][wz],wz+1);}//寻找每列最小数及其位置for(i=0;i<4;i++){wz=0;for(j=1;j<3;j++)if(a[wz][i]>a[j][i])wz=j;printf("第%d列最小数:%d,在第%d行\n",i+1,a[wz][i],wz+1);}}13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。程序如下:#includevoidmain(){inta[3][4],b[4][3],i,j;printf("请输入矩阵:\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)b[j][i]=a[i][j];printf("转置为:");for(i=0;i<4;i++){printf("\n");for(j=0;j<3;j++)printf("%3d",b[i][j]);}}14.打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为:816357492要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。程序如下:#includevoidmain(){inta[11][11],h,l,n,m;printf("请输入魔方的阶数(奇数):");scanf("%d",&n);h=1;l=n/2+1;//数据1放置的位置a[h][l]=1;for(m=2;m<=n*n;m++)//在数组中放置数{if(m%n==1)h++;else{h--;l++;if(h==0)h=n;if(l==n+1)l=1;}a[h][l]=m;}for(h=1;h<=n;h++){printf("\n");for(l=1;l<=n;l++)printf("%4d",a[h][l]);}}15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。程序如下:#includevoidmain(){chart[50];inttj[10]={0},i;printf("请输入数字字符组成的字串:");gets(t);for(i=0;t[i]!='\0';i++)tj[t[i]-48]++;for(i=0;i<10;i++)printf("\n字符%d的个数%d",i,tj[i]);}16.将一个字符串中的字符按ASCII码从大到小的顺序排序。方法一:#includevoidmain(){chart[50],c;inti,j;printf("请输入字串:");gets(t);for(i=0;t[i]!='\0';i++)for(j=i+1;t[j]!='\0';j++)if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
printf("第%d行最大数:
%d,在第%d列\n",i+1,a[i][wz],wz+1);
//寻找每列最小数及其位置
for(i=0;i<4;i++)
for(j=1;j<3;j++)
if(a[wz][i]>a[j][i])wz=j;
printf("第%d列最小数:
%d,在第%d行\n",i+1,a[wz][i],wz+1);
13.将一个3行4列的矩阵输入到数组a中,然后形成该矩阵的转置存储在数组b中,并输出结果。
{inta[3][4],b[4][3],i,j;
b[j][i]=a[i][j];
printf("转置为:
printf("%3d",b[i][j]);
14.打印“魔方阵”。
所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。
例如,三阶魔方阵为:
816
357
492
要求打印出由1到n2的自然数构成的魔方阵(n阶魔方阵,只考虑n为奇数的情况)。
{inta[11][11],h,l,n,m;
printf("请输入魔方的阶数(奇数):
h=1;l=n/2+1;//数据1放置的位置
a[h][l]=1;
for(m=2;m<=n*n;m++)//在数组中放置数
{if(m%n==1)h++;
else
{h--;l++;
if(h==0)h=n;
if(l==n+1)l=1;}
a[h][l]=m;
for(h=1;h<=n;h++)
for(l=1;l<=n;l++)
printf("%4d",a[h][l]);
15.输入一个由数字字符组成的字符串,分别统计这个字符串中字符0的个数、字符1的个数、……、字符9的个数。
{chart[50];
inttj[10]={0},i;
printf("请输入数字字符组成的字串:
gets(t);
for(i=0;t[i]!
='\0';i++)
tj[t[i]-48]++;
printf("\n字符%d的个数%d",i,tj[i]);
16.将一个字符串中的字符按ASCII码从大到小的顺序排序。
{chart[50],c;
inti,j;
printf("请输入字串:
for(j=i+1;t[j]!
='\0';j++)
if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}方法二:#include#includevoidmain(){chart[50],c;inti,j,l;printf("请输入字串:");gets(t);l=strlen(t);for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
{c=t[i];t[i]=t[j];t[j]=c;}
puts("排序结果:
puts(t);
inti,j,l;
l=strlen(t);
for(i=0;ifor(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
for(j=i+1;jif(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
if(t[i]{c=t[i];t[i]=t[j];t[j]=c;}puts("排序结果:");puts(t);}17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。程序如下:#includevoidmain(){chart1[50],t2[50],c;inti,j;printf("请输入字串:");gets(t1);j=0;for(i=0;t1[i]!=0;i++)//t1[i]!=0和t1[i]!='\0'等价if(t1[i]%3!=0){t2[j]=t1[i];j++;}t2[j]='\0';for(i=0;t2[i]!='\0';i++)for(j=i+1;t2[j]!='\0';j++)if(t2[i]>t2[j]){c=t2[i];t2[i]=t2[j];t2[j]=c;}puts("排序的新字串:");//和printf("排序的新字串:\n");等价puts(t2);}18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。方法一:#include#includevoidmain(){chart1[50],t2[50],c;inti,w,l,j;printf("输入字串1:");gets(t1);p
17.将一个字符串中的所有ASCII码能被3整除的字符删除,然后将剩余的字符按从小到大的顺序排序后构成一个新的字符串,并输出。
{chart1[50],t2[50],c;
gets(t1);
for(i=0;t1[i]!
=0;i++)//t1[i]!
=0和t1[i]!
='\0'等价
if(t1[i]%3!
{t2[j]=t1[i];j++;}
t2[j]='\0';
for(i=0;t2[i]!
for(j=i+1;t2[j]!
if(t2[i]>t2[j])
{c=t2[i];t2[i]=t2[j];t2[j]=c;}
puts("排序的新字串:
");//和printf("排序的新字串:
\n");等价
puts(t2);
18.输入字符串1、字符串2以及插入位置f,要求在字符串1中的指定位置f处插入字符串2。
inti,w,l,j;
printf("输入字串1:
p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1