算法设计与分析第三章课后答案吕国英主编

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2、#includestdio.hvoidmain(){inta[6][6],b[6],i,j;printf(请输入6个整数:);for(i=0;i6;i++){scanf(%d,&b[i]);}for(i=0;i6;i++){a[0][i]=b[i];}for(i=1;i=5;i++)a[i][0]=b[6-i];for(i=1;i=5;i++)for(j=1;j=5;j++){a[i][j]=a[i-1][j-1];}for(i=0;i=5;i++){for(j=0;j=5;j++)printf(%d,a[i][j]);printf(\n);}}3、#includestdio.hvoidmain(){inti,j,count,n;inta[100][100];printf(请输入矩阵的阶n=);scanf(%d,&n);count=1;for(i=1;i=n/2;i++){for(j=i;j=n-i+1;j++)//上侧{a[i][j]=count;count++;}for(j=i+1;j=n-i;j++)//右侧{a[j][n-i+1]=count;count++;}for(j=n-i+1;j=i+1;j--)//下侧{a[n-i+1][j]=count;count++;}for(j=n-i+1;j=i+1;j--)//左侧{a[j][i]=count;count++;}}if(n%2==1){i=(n+1)/2;a[i][i]=n*n;}for(i=1;i=n;i++){for(j=1;j=n;j++)printf(%2d,a[i][j]);printf(\n);}}4、#includestdio.hvoidmain(){inti,j,n,a[100][100],count=1;printf(请输入方阵的阶n:);scanf(%d,&n);for(i=1;i=n;i++)for(j=1;j=i;j++){a[i-j+1][j]=count;count++;}for(i=1;i=n;i++){for(j=1;j=n-i+1;j++)printf(%4d,a[i][j]);printf(\n);}}5、#includestdio.hvoidmain(){inti,j,count,n;inta[100][100];printf(请输入矩阵的阶n=);scanf(%d,&n);count=1;for(i=1;i=n/2;i++){for(j=i;j=n-i+1;j++)//上侧{a[i][j]=count;}for(j=i+1;j=n-i;j++)//右侧{a[j][n-i+1]=count;}for(j=n-i+1;j=i+1;j--)//下侧{a[n-i+1][j]=count;}for(j=n-i+1;j=i+1;j--)//左侧{a[j][i]=count;}count++;}if(n%2==1){i=(n+1)/2;a[i][i]=i;}for(i=1;i=n;i++){for(j=1;j=n;j++)printf(%2d,a[i][j]);printf(\n);}}10、狼找兔子问题:一座山周围有n个洞,顺时针编号为0,1,2.,…,n-1。一只狼从0号洞开始,顺时针方向计数,每当经过第m个洞时,就进洞找兔子。输入m,n,问兔子有没有幸免的机会?如果有,该藏哪里?#includestdio.hvoidmain(){inta[100],b[100],i,n,m,k=0,flag=0;printf(请输入洞的个数n:);scanf(%d,&n);printf(请输入要经过洞的个数m:);scanf(%d,&m);for(i=0;in;i++){a[i]=0;b[i]=1;}for(i=0;;i=(i+m)%n){if(a[(i+m)%n]==0)a[(i+m)%n]=1;elseif(a[(i+m)%n]==1)break;}for(i=0;in;i++){if(a[i]==0)k++;elseif(a[i]==1)flag++;}if(k0){printf(\n兔子有幸免的机会,位置为:\n);for(i=0;in;i++)if(a[i]==0)printf(%d,i);printf(\n);}if(flag==n)printf(兔子没有幸免的机会!\n);}12、有52张牌,使它们全部正面朝上,第一轮是从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;第二轮从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,知道翻的牌超过104张为止。统计最后有几张牌正面朝上,以及它们的位置号。#includestdio.hvoidmain(){inta[100],i,sum,k,n=0;for(i=0;i100;i++)a[i]=1;sum=0;for(i=2;i53;i++){k=1;while(i*k53&&sum=104){a[i*k]=-a[i*k];k=k+1;++sum;}}printf(正面朝上的牌的位置为\n);for(i=1;i53;i++)if(a[i]==1){n++;printf(%d,i);}printf(\n);printf(总共%d张牌\n,n);}13、A,B,C,D,E5人为某次竞赛的前五名,他们在公布名次前猜名次。A说:B得第三名,C得第五名。B说:D得第二名,E得第四名。C说:B得第一名,E得第四名。D说:C得第一名,B得第二名。A说:D得第二名,A得第三名。结果每个人都猜对了一半,实际名次是什么呢?#includestdio.hvoidmain(){inta,b,c,d,e;for(a=1;a=5;a++)for(b=1;b=5;b++)if(a!=b)for(c=1;c=5;c++)if(c!=a&&c!=b)for(d=1;d=5;d++){if(d!=a&&d!=b&&d!=c)e=15-a-b-c-d;if(e!=a&&e!=b&&e!=c&&e!=d)if((b==3)+(c==5)==1&&(d==2)+(e==4)==1&&(b==1)+(e==4)==1&&(c==1)+(b==2)==1&&(d==2)+(a==3)==1){printf(五人的名次分别为:\n);printf(A\tB\tC\tD\tE\n);printf(%d\t%d\t%d\t%d\t%d\n,a,b,c,d,e);}}}14、#includestdio.hvoidmain(){inti,w1,w2,w3,sql;for(i=10;i32;i++){sql=i*i;w1=sql/100;w2=sql%100/10;w3=sql%100%10;if(w1==w2||w1==w3||w2==w3)printf(%d*%d=%d\n,i,i,sql);}}15、#includestdio.hvoidmain(){intA,B,C;for(A=1;A=3;A++)for(B=1;B=3;B++){if(B!=A)C=6-A-B;if(C!=A&&C!=B)if(A!=1&&C!=1&&C!=3)printf(A-%d\nB-%d\nC-%d\n,A,B,C);}printf(1-X2-Y3-Z\n);}16、#includestdio.hvoidmain(){intnumber;printf(请输入一个整数\nnumber=);scanf(%d,&number);if(number%4==0)printf(%d能被4整除\n,number);if(number%7==0)printf(%d能被7整除\n,number);if(number%9==0)printf(%d能被9整除\n,number);elseprintf(不能被4,7,9任一个整除\n);}17、#includestdio.hvoidmain(){inta,b,c,d;printf(Pleasethinkofanumberbetween1and100\n);printf(yournumberdividedby3hasaremainderof\n);printf(PleaseInputa=);scanf(%d,&a);printf(yournumberdividedby4hasaremainderof\n);printf(PleaseInputb=);scanf(%d,&b);printf(yournumberdividedby7hasaremainderof\n);printf(PleaseInputc=);scanf(%d,&c);printf(letmethinkamoment...\n);d=28*a+21*b+36*c;while(d84)d=d-84;printf(你的数字是%d\n,d);}18、#includestdio.hvoidmain(){inta,b,c,d,e,f,g,h,i,sum1,sum2;for(a=1;a=9;a++)for(b=1;b=9;b++)if(a!=b)for(c=1;c=9;c++)if(c!=a&&c!=b)for(d=1;d=9;d++)if(d!=a&&d!=b&&d!=c)for(e=1;e=9;e++)if(e!=a&&e!=b&&e!=c&&e!=d)for(f=1;f=9;f++)if(f!=a&&f!=b&&f!=c&&f!=d&&f!=e)for(g=1;g=9;g++)if(g!=a&&g!=b&&g!=c&&g!=d&&g!=e&&g!=f)for(h=1;h=9;h++)if(h!=a&&h!=b&&h!=c&&h!=d&&h!=e&&h!=f&&h!=g)for(i=1;i=9;i++)if(i!=a&&i!=b&&i!=c&&i!=d&&i!=e&&i!=f&&i!=g&&i!=h){sum1=a*10000+b*1000+c*100+d*10+e;sum2=f*1000+g*100+h*10+i;if(sum1==2*sum2)printf(五位数为:%d四位数为:%d\n,sum1,sum2);}}19、#includestdio.h#includestring.hvoidmain(){charstr[100];intsum=0,i,n=0;printf(请输入十六进制数:);gets(str);n=strlen(str);for(i=0;in;i++){if(str[i]=='A'|str[i]=='B'|str[i]=='C'|str[i]=='D'|str[i]=='E'|str[i]=='F')str[i]=str[i]-55;if(str[i]=='a'|str[i]=='b'|str[i]=='c'|str[i]=='d'|str[i]=='e'|str[i]=='f')str[i]=str[i]-87;if(str[i]=='1'|str[i]=='2'|str[i]=='3'|str[i]=='4'|str[i]=='5'|str[i]=='6'|str[i]=='7'|str[i]=='8'|str[i]=='9'|str[i]=='0')str[i]=str[i]-48;}for(i=0;in-1;i++)sum=(sum+str[i])*16;sum=sum+str[i];printf(十进制数为:%d\n,sum);}20、#includestdio.hvoidmain(){inta,b,c,d,e,f,g,h,i;for(a=1;a=9;a++)for(b=1;b=9;b++)if(a!=b)for(c=1;c=9;c++)i

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功