数组典型例题及参考答案.docx
《数组典型例题及参考答案.docx》由会员分享,可在线阅读,更多相关《数组典型例题及参考答案.docx(40页珍藏版)》请在冰点文库上搜索。
数组典型例题及参考答案
⏹第7章数组
7-1输入一个正整数n(1≤n≤10),再输入n个整数
(1)输出最大数和最小数,并输出平均值。
(2)将最小数与第一个数交换,最大数与最后一个数交换,然后输出交换后的结果。
(3)输出所有比平均值大的数。
(4)找到最接近平均值的数。
(提示:
考虑差的绝对值)
Program
#defineN10
main()
{inta[N],max,min,sum,i,p,q,t;
floatave,sub;
/*输出最大数、最小数和平均数*/
printf("Pleaseinput%dintegers:
\n",N);
for(i=0;i{scanf("%d",&a[i]);if(i==0){max=min=sum=a[i];p=q=0;}else{if(max{max=a[i];p=i;}if(min>a[i]){min=a[i];q=i;}sum=sum+a[i];}}ave=sum*1.0/N;printf("Themaximumis:%d,theminimumis:%d,theaverageis%.2f\n",max,min,ave);/*将最小数与第一个数交换,最大数与最后一个数交换*/t=a[0];a[0]=a[q];a[q]=t;t=a[N-1];a[N-1]=a[p];a[p]=t;printf("Afterexchange:");for(i=0;iprintf("%d",a[i]);/*输出所有比平均值大的数*/printf("\nLargerthantheaverage:");for(i=0;iif(a[i]>ave)printf("%d",a[i]);/*找到最接近平均值的数*/printf("\nThenumberclosesttotheaverageis:");sub=a[0]>ave?a[0]-ave:ave-a[0];p=0;for(i=1;i{if((a[i]>ave?a[i]-ave:ave-a[i]){sub=a[i]>ave?a[i]-ave:ave-a[i];p=i;}}printf("%d.",a[p]);}OutputPleaseinput10integers:1734-1125107-9025↵/*input*/Themaximumis:34,theminimumis:-11,theaverageis8.00Afterexchange:-11251725107-9034Largerthantheaverage:25171034Thenumberclosesttotheaverageis:77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;Programmain(){intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day,i,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);total=day;for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{scanf("%d",&a[i]);
if(i==0)
{max=min=sum=a[i];
p=q=0;
}
else
{if(max{max=a[i];p=i;}if(min>a[i]){min=a[i];q=i;}sum=sum+a[i];}}ave=sum*1.0/N;printf("Themaximumis:%d,theminimumis:%d,theaverageis%.2f\n",max,min,ave);/*将最小数与第一个数交换,最大数与最后一个数交换*/t=a[0];a[0]=a[q];a[q]=t;t=a[N-1];a[N-1]=a[p];a[p]=t;printf("Afterexchange:");for(i=0;iprintf("%d",a[i]);/*输出所有比平均值大的数*/printf("\nLargerthantheaverage:");for(i=0;iif(a[i]>ave)printf("%d",a[i]);/*找到最接近平均值的数*/printf("\nThenumberclosesttotheaverageis:");sub=a[0]>ave?a[0]-ave:ave-a[0];p=0;for(i=1;i{if((a[i]>ave?a[i]-ave:ave-a[i]){sub=a[i]>ave?a[i]-ave:ave-a[i];p=i;}}printf("%d.",a[p]);}OutputPleaseinput10integers:1734-1125107-9025↵/*input*/Themaximumis:34,theminimumis:-11,theaverageis8.00Afterexchange:-11251725107-9034Largerthantheaverage:25171034Thenumberclosesttotheaverageis:77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;Programmain(){intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day,i,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);total=day;for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{max=a[i];
p=i;
if(min>a[i])
{min=a[i];
q=i;
sum=sum+a[i];
ave=sum*1.0/N;
printf("Themaximumis:
%d,theminimumis:
%d,theaverageis%.2f\n",max,min,ave);
/*将最小数与第一个数交换,最大数与最后一个数交换*/
t=a[0];
a[0]=a[q];
a[q]=t;
t=a[N-1];
a[N-1]=a[p];
a[p]=t;
printf("Afterexchange:
");
for(i=0;iprintf("%d",a[i]);/*输出所有比平均值大的数*/printf("\nLargerthantheaverage:");for(i=0;iif(a[i]>ave)printf("%d",a[i]);/*找到最接近平均值的数*/printf("\nThenumberclosesttotheaverageis:");sub=a[0]>ave?a[0]-ave:ave-a[0];p=0;for(i=1;i{if((a[i]>ave?a[i]-ave:ave-a[i]){sub=a[i]>ave?a[i]-ave:ave-a[i];p=i;}}printf("%d.",a[p]);}OutputPleaseinput10integers:1734-1125107-9025↵/*input*/Themaximumis:34,theminimumis:-11,theaverageis8.00Afterexchange:-11251725107-9034Largerthantheaverage:25171034Thenumberclosesttotheaverageis:77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;Programmain(){intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day,i,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);total=day;for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
printf("%d",a[i]);
/*输出所有比平均值大的数*/
printf("\nLargerthantheaverage:
for(i=0;iif(a[i]>ave)printf("%d",a[i]);/*找到最接近平均值的数*/printf("\nThenumberclosesttotheaverageis:");sub=a[0]>ave?a[0]-ave:ave-a[0];p=0;for(i=1;i{if((a[i]>ave?a[i]-ave:ave-a[i]){sub=a[i]>ave?a[i]-ave:ave-a[i];p=i;}}printf("%d.",a[p]);}OutputPleaseinput10integers:1734-1125107-9025↵/*input*/Themaximumis:34,theminimumis:-11,theaverageis8.00Afterexchange:-11251725107-9034Largerthantheaverage:25171034Thenumberclosesttotheaverageis:77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;Programmain(){intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day,i,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);total=day;for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
if(a[i]>ave)
/*找到最接近平均值的数*/
printf("\nThenumberclosesttotheaverageis:
sub=a[0]>ave?
a[0]-ave:
ave-a[0];
p=0;
for(i=1;i{if((a[i]>ave?a[i]-ave:ave-a[i]){sub=a[i]>ave?a[i]-ave:ave-a[i];p=i;}}printf("%d.",a[p]);}OutputPleaseinput10integers:1734-1125107-9025↵/*input*/Themaximumis:34,theminimumis:-11,theaverageis8.00Afterexchange:-11251725107-9034Largerthantheaverage:25171034Thenumberclosesttotheaverageis:77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;Programmain(){intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day,i,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);total=day;for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{if((a[i]>ave?
a[i]-ave:
ave-a[i]){sub=a[i]>ave?a[i]-ave:ave-a[i];p=i;}}printf("%d.",a[p]);}OutputPleaseinput10integers:1734-1125107-9025↵/*input*/Themaximumis:34,theminimumis:-11,theaverageis8.00Afterexchange:-11251725107-9034Largerthantheaverage:25171034Thenumberclosesttotheaverageis:77-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。(提示:注意闰年)(1)使用数组存储当年每个月应有的天数;(2)不使用数组完成;Programmain(){intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intyear,month,day,i,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);total=day;for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{sub=a[i]>ave?
ave-a[i];
printf("%d.",a[p]);
Output
Pleaseinput10integers:
1734-1125107-9025↵/*input*/
Themaximumis:
34,theminimumis:
-11,theaverageis8.00
Afterexchange:
-11251725107-9034
Largerthantheaverage:
25171034
Thenumberclosesttotheaverageis:
7
7-2输入一个日期(按照year-month-day格式),计算该日期为当年的第几天。
注意闰年)
(1)使用数组存储当年每个月应有的天数;
(2)不使用数组完成;
{intm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
intyear,month,day,i,total=0;
printf("Pleaseinputadate:
(year-month-day)");
scanf("%d-%d-%d",&year,&month,&day);
total=day;
for(i=1;itotal+=m[i];if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}Program(2)main(){intyear,month,day,total=0;printf("Pleaseinputadate:(year-month-day)");scanf("%d-%d-%d",&year,&month,&day);switch(month){case12:total+=30;case11:total+=31;case10:total+=30;case9:total+=31;case8:total+=31;case7:total+=30;case6:total+=31;case5:total+=30;case4:total+=31;case3:total+=28;case2:total+=31;case1:total+=day;}if((year%4==0&&year%100!=0)||(year%400==0)&&month>=3)total++;printf("Thisdateisthe%dthdayintheyear.\n",total);}OutputPleaseinputadate:(year-month-day)2008-4-14↵/*input*/Thisdateisthe105thdayintheyear.7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。(1)用冒泡法排序;(2)用选择法排序。Program(1)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*冒泡法排序*/for(i=1;i<=n-1;i++){for(j=1;j<=n-i;j++){if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
total+=m[i];
if((year%4==0&&year%100!
=0)||(year%400==0)&&month>=3)
total++;
printf("Thisdateisthe%dthdayintheyear.\n",total);
(2)
{intyear,month,day,total=0;
switch(month)
{case12:
total+=30;
case11:
total+=31;
case10:
case9:
case8:
case7:
case6:
case5:
case4:
case3:
total+=28;
case2:
case1:
total+=day;
Pleaseinputadate:
(year-month-day)2008-4-14↵/*input*/
Thisdateisthe105thdayintheyear.
7-3输入一个正整数n(1≤n≤10),再输入n个整数,将这n个整数从大到小排序,然后在已经排序后的数组中插入平均数(取整),保持数组的升序,将插入平均数后的数组输出。
(1)用冒泡法排序;
(2)用选择法排序。
(1)
#defineN11
{inta[N],n,i,j,t,k,ave=0;
/*读入数据,计算平均值*/
printf("Howmanynumbersyouwanttosort?
scanf("%d",&n);
printf("Pleaseinput%dnumbers:
\n",n);
for(i=0;i<=n-1;i++)
ave+=a[i];
ave/=n;
/*冒泡法排序*/
for(i=1;i<=n-1;i++)
{for(j=1;j<=n-i;j++)
{if(a[j-1]{t=a[j-1];a[j-1]=a[j];a[j]=t;}}}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{t=a[j-1];
a[j-1]=a[j];
a[j]=t;
/*插入平均数ave*/
for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}Program(2)#defineN11main(){inta[N],n,i,j,t,k,ave=0;/*读入数据,计算平均值*/printf("Howmanynumbersyouwanttosort?");scanf("%d",&n);printf("Pleaseinput%dnumbers:\n",n);for(i=0;i<=n-1;i++){scanf("%d",&a[i]);ave+=a[i];}ave/=n;/*选择法排序*/for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{if(a[i]>ave)
continue;
for(j=n;j>i;j--)
a[j]=a[j-1];
a[i]=ave;
break;
for(i=0;i<=n;i++)
/*选择法排序*/
for(i=1;i{k=i-1;for(j=i;j<=n-1;j++)if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{k=i-1;
for(j=i;j<=n-1;j++)
if(a[k]k=j;t=a[k];a[k]=a[i-1];a[i-1]=t;}/*插入平均数ave*/for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
k=j;
t=a[k];
a[k]=a[i-1];
a[i-1]=t;
for(i=0;i{if(a[i]>ave)continue;for(j=n;j>i;j--)a[j]=a[j-1];a[i]=ave;break;}for(i=0;i<=n;i++)printf("%d",a[i]);}OutputHowmanynumbersyouwanttosort?5↵/*input*/Pleaseinput5numbers:1734-1125↵/*input*/3417952-117-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。输出排序后的数组A、B和C。Program#defineN5main(){inta[N],b[N],c[2*N],i,j,t,k;printf("PleaseinputarrayA(containing%delements):",N);for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
Howmanynumbersyouwanttosort?
5↵/*input*/
Pleaseinput5numbers:
1734-1125↵/*input*/
3417952-11
7-4输入两个数组A和B(各5个元素),将其按照升序排序,然后将A和B合并到数组C中(合并的过程中保持升序,不要合并后再排序)。
输出排序后的数组A、B和C。
#defineN5
{inta[N],b[N],c[2*N],i,j,t,k;
printf("PleaseinputarrayA(containing%delements):
",N);
for(i=0;iscanf("%d",&a[i]);printf("PleaseinputarrayB(containing%delements):",N);for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
scanf("%d",&a[i]);
printf("PleaseinputarrayB(containing%delements):
for(i=0;iscanf("%d",&b[i]);/*冒泡法排序*/for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
scanf("%d",&b[i]);
for(i=1;i{for(j=1;j<=N-i;j++){if(a[j-1]>a[j]){t=a[j-1];a[j-1]=a[j];a[j]=t;}}}for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{for(j=1;j<=N-i;j++)
{if(a[j-1]>a[j])
for(i=1;i{for(j=1;j<=N-i;j++){if(b[j-1]>b[j]){t=b[j-1];b[j-1]=b[j];b[j]=t;}}}/*将数组a和数组b合并到数组c中*/for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{if(b[j-1]>b[j])
{t=b[j-1];
b[j-1]=b[j];
b[j]=t;
/*将数组a和数组b合并到数组c中*/
for(i=0,j=0,k=0;iif(a[i]<=b[j])c[k]=a[i++];elsec[k]=b[j++];while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
if(a[i]<=b[j])
c[k]=a[i++];
c[k]=b[j++];
while(ic[k++]=a[i++];while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
c[k++]=a[i++];
while(jc[k++]=b[j++];printf("ArrayCis:");for(i=0;i<2*N;i++)printf("%d",c[i]);}OutputPleaseinputarrayA(containing5elements):1734-1125↵/*input*/PleaseinputarrayB(containing5elements):107-9025↵/*input*/ArrayCis:-11-90257101725347-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。Programmain(){intn,m,b[16]={0},i=15;printf("Pleaseinputaninteger:");scanf("%d",&n);m=n>=0?n:-n;while(m){b[i--]=m%2;m=m/2;}/*负数的补码*/if(n<0){for(i=0;i<16;i++)/*取反*/b[i]=b[i]==1?0:1;for(i=15;i>=0;i--)/*加1*/{if(b[i]==0){b[i]=1;break;}elseb[i]=0;}}printf("Thebinarycomplementalcodeof%dis:",n);for(i=0;i<16;i++){printf("%d",b[i]);if(i==7)printf("");}}Output(1)Pleaseinputaninteger:9↵/*input*/Thebinarycomplementalcodeof9is:0000000000001001Output(2)Pleaseinputaninteger:-9↵/*input*/Thebinarycomplementalcodeof-9is:11111111111101117-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:使用的printf语句不多于2个)(1)左上三角为+1(2)右下三角为-1(3)从右到左的对角线为0。示例:111101110-1110-1-110-1-1-10-1-1-1-1Program#defineN5main(){inta[N][N]={0},i,j;for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
c[k++]=b[j++];
printf("ArrayCis:
for(i=0;i<2*N;i++)
printf("%d",c[i]);
PleaseinputarrayA(containing5elements):
PleaseinputarrayB(containing5elements):
107-9025↵/*input*/
ArrayCis:
-11-9025710172534
7-5利用数组,求一个int型整数对应的二进制补码并输出(注意负数)。
{intn,m,b[16]={0},i=15;
printf("Pleaseinputaninteger:
m=n>=0?
n:
-n;
while(m)
{b[i--]=m%2;
m=m/2;
/*负数的补码*/
if(n<0)
{for(i=0;i<16;i++)/*取反*/
b[i]=b[i]==1?
0:
1;
for(i=15;i>=0;i--)/*加1*/
{if(b[i]==0)
{b[i]=1;
b[i]=0;
printf("Thebinarycomplementalcodeof%dis:
",n);
for(i=0;i<16;i++)
{printf("%d",b[i]);
if(i==7)
printf("");
Pleaseinputaninteger:
9↵/*input*/
Thebinarycomplementalcodeof9is:
0000000000001001
-9↵/*input*/
Thebinarycomplementalcodeof-9is:
1111111111110111
7-6编写程序,按照下面要求填充并显示5行5列的矩阵(要求:
使用的printf语句不多于2个)
(1)左上三角为+1
(2)右下三角为-1
(3)从右到左的对角线为0。
示例:
11110
1110-1
110-1-1
10-1-1-1
0-1-1-1-1
{inta[N][N]={0},i,j;
for(i=0;i{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{for(j=0;ja[i][j]=1;for(j=N-1;j>N-i-1;j--)a[i][j]=-1;for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
a[i][j]=1;
for(j=N-1;j>N-i-1;j--)
a[i][j]=-1;
for(j=0;jprintf("%3d",a[i][j]);printf("\n");}}7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。Program#defineM4#defineN5main(){inta[M][N],i,j,p,q;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
printf("%3d",a[i][j]);
printf("\n");
7-7定义一个二维数组,输入元素,输出最大元素及其行下标和列下标。
#defineM4
{inta[M][N],i,j,p,q;
printf("Pleaseinputamatrixof%dby%d:
\n",M,N);
for(i=0,p=0,q=0;ifor(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
for(j=0;j{scanf("%d",&a[i][j]);if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{scanf("%d",&a[i][j]);
if(a[p][q]{p=i;q=j;}}printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",a[p][q],p+1,q+1);}7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。Program#defineM4#defineN3main(){inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/floatave=0;printf("Pleaseinputamatrixof%dby%d:\n",M,N);for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{p=i;
q=j;
printf("Themaximumis%d,onthe%dthrowand%dthcolumn.",
a[p][q],p+1,q+1);
7-8输入一个4*3的矩阵(整型),计算每行中最大值的平均值(实型)。
#defineN3
{inta[M][N],b[M],i,j;/*数组b存放每行的最大值*/
floatave=0;
for(i=0;i{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{for(j=0;j{scanf("%d",&a[i][j]);if(j==0)b[i]=a[i][j];elseif(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
if(j==0)
b[i]=a[i][j];
if(b[i]b[i]=a[i][j];}ave+=b[i];}printf("Theaverageofthemaximumineachrowis:%.2f\n",ave/M);}7-9杨辉三角形(也叫Pascal三角形)如下:11112113311464115101051……编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。(提示:如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)Program#defineN15main(){intyh[N][N]={1},n,i,j;/*生成杨辉三角形*/for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
ave+=b[i];
printf("Theaverageofthemaximumineachrowis:
%.2f\n",ave/M);
7-9杨辉三角形(也叫Pascal三角形)如下:
1
11
121
1331
14641
15101051
……
编写程序,生成一个15行的杨辉三角形,存放在一个二维数组里。
输入正整数n(1~15),读取并输出杨辉三角形的前n行元素。
如果用i表示行,用j表示列,则第i行j列元素pi,j=pi-1,j-1+pi-1,j)
#defineN15
{intyh[N][N]={1},n,i,j;
/*生成杨辉三角形*/
for(i=1;i{yh[i][0]=1;for(j=1;j<=i;j++)yh[i][j]=yh[i-1][j-1]+yh[i-1][j];}/*输出前n行*/printf("Pleaseinputanintegern(1~15):");scanf("%d",&n);for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{yh[i][0]=1;
for(j=1;j<=i;j++)
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
/*输出前n行*/
printf("Pleaseinputanintegern(1~15):
for(i=0;i{for(j=0;j<=i;j++)printf("%-5d",yh[i][j]);printf("\n");}}7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。例如:m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。Program#defineM3#defineN4#defineP5main(){inta[M][N],b[N][P],c[M][P],i,j,k;printf("PleaseinputmatrixAof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{for(j=0;j<=i;j++)
printf("%-5d",yh[i][j]);
7-10矩阵A和矩阵B相乘,要求A的列数和B的行数相同。
例如:
m行n列的矩阵A和n行p列的矩阵B相乘,得到m行p列的矩阵C,C中的i行j列元素cij由下列公式得到:
其中,aik是矩阵A中的i行k列元素,bkj是矩阵B中的k行j列元素。
编写程序,输入3行4列的矩阵A和4行5列的矩阵B,输出A和B的乘积——3行5列的矩阵C。
#defineM3
#defineN4
#defineP5
{inta[M][N],b[N][P],c[M][P],i,j,k;
printf("PleaseinputmatrixAof%dby%d:
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
for(j=0;jscanf("%d",&a[i][j]);printf("PleaseinputmatrixBof%dby%d:\n",N,P);for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
scanf("%d",&a[i][j]);
printf("PleaseinputmatrixBof%dby%d:
\n",N,P);
for(i=0;ifor(j=0;jscanf("%d",&b[i][j]);printf("TheproductofmatrixAandmatrixBis:\n");for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
for(j=0;j
scanf("%d",&b[i][j]);
printf("TheproductofmatrixAandmatrixBis:
\n");
for(i=0;i{for(j=0;j{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{for(j=0;j
{for(k=0,c[i][j]=0;kc[i][j]+=a[i][k]*b[k][j];printf("%6d",c[i][j]);}printf("\n");}}7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。Program#defineM3#defineN4main(){inta[M][N],i,j,k,p,count=0;printf("Pleaseinputmatrixaof%dby%d:\n",M,N);for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
c[i][j]+=a[i][k]*b[k][j];
printf("%6d",c[i][j]);
7-11判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。
“鞍点”是指这样的元素:
它在本行是最大元素,而在本列是最小的元素。
{inta[M][N],i,j,k,p,count=0;
printf("Pleaseinputmatrixaof%dby%d:
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
for(j=0;jscanf("%d",&a[i][j]);/*寻找鞍点*/for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
/*寻找鞍点*/
for(i=0;i{p=0;for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
{p=0;
for(j=0;jif(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
if(a[i][p]p=j;for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
p=j;
for(k=0;kif(a[i][p]>a[k][p])break;if(k==M)printf("Saddlepoint%d:a[%d][%d]=%d\n",++count,i,p,a[i][p]);}if(!count)printf("Nosaddlepoint!\n");}7-12编写程序,实现二叉树查找的算法。该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:(1)如果匹配,结束查找(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。注意:读入数组后,需
if(a[i][p]>a[k][p])
if(k==M)
printf("Saddlepoint%d:
a[%d][%d]=%d\n",++count,i,p,a[i][p]);
if(!
count)
printf("Nosaddlepoint!
7-12编写程序,实现二叉树查找的算法。
该算法是用一个查找键值与“已排序”列表中的中间元素进行比较,然后:
(1)如果匹配,结束查找
(2)如果查找键值小于中间值,那么键值在列表的前半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)
(3)如果查找键值大于中间值,那么键值在列表的后半部分,则在列表的前半部中继续查找(继续与其中的中间元素比较)
重复这种“分治”的策略,直到找到一个匹配值,输出它在列表中的位置。
如果该列表减少到只有一个元素,仍没有匹配的值,那么表明该列表中没有键值。
注意:
读入数组后,需
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2