- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CC语言经典、实用、趣味程序设计编程百例精解(3-4)
C/C 语言经典、实用、趣味程序设计编程百例精解(3-4)
21.位反序数
设N是一个四位数,它的9倍恰好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。
*问题分析与算法设计可设整数N的千、百、十、个位为i、j、k、l,其取值均为0~9,则满足关系式:(i*103+j*102+10*k+l)*9=(l*103+k*102+10*j+i)的i、j、k、l即构成N。
*程序说明与注释#includestdio.hint main(){int i;for(i=1002;i1111;i++) /*穷举四位数可能的值*/if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9)/*判断反序数是否是原整数的9倍*/printf(The number satisfied stats condition is: %d\n,i);/*若是则输出*/}
*运行结果The number satisfied states condition is:1089
HYPERLINK /beginner/10022.html 22.求车速
一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多少?新的对称数是多少?
*问题分析与算法设计根据题意,设所求对称数为i,其初值为95589,对其依次递增取值,将i值的每一位分解后与其对称位置上的数进行比较,若每个对称位置上的数皆相等,则可判定i即为所求的对称数。
*程序说明与注释#includestdio.hint main(){int t,a[5]; /*数组a存放分解的数字位*/long int k,i;for(i=95860;;i++) /*以95860为初值,循环试探*/{for(t=0,k=100000;k=10;t++) /*从高到低分解所取i值的每位数*/{ /* 字,依次存放于a[0]~a[5]中*/a[t]=(i%k)/(k/10); k/=10;}if((a[0]==a[4])(a[1]==a[3])){printf(The new symmetrical number kelometers is:%d%d%d%d%d\n,a[0],a[1],a[2],a[3],a[4]);printf(The velocity of the car is: %.2f\n,(i-95859)/2.0);break;}}}
*运行结果The new symmetrical number kelometers is:95959.The velocity of the car is:50.00
*思考题将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。
?
HYPERLINK /beginner/10023.html 23.由两个平方三位数获得三个平方二位数
?
已知两个平方三位数abc和xyz,其中a、b、c、x、y、z未必是不同的;而ax、by、cz是三个平方二位数。请编程求三位数abc和xyz。
*问题分析与算法设计任取两个平方三位数n和n1,将n从高向低分解为a、b、c,将n1从高到低分解为x、y、z。判断ax、by、cz是否均为完全平方数。
*程序说明与注释#includestdio.h#includemath.hvoid f(int n,float* s);int main(){int i,t;float a[3],b[3];print(The possible perfect squares combinations are:\n);for(i=11;i=31;++i) //穷举平方三位数的取值范围for(t=11;t=31;++t){f(i*i,a); //分解平方三位数的各位,每位数字分别存入数组中f(t*t,b);if(sqrt(a[0]*10+b[0]) == (int)sqrt(a[0]*10+b[0]) sqrt(a[1]*10+b[1]) == (int)sqrt(a[1]*10+b[1]) sqrt(a[2]*10+b[2]) == (int)sqrt(a[2]*10+b[2]) ){printf(%d and %d\n,i*i,t*t); //若三个新的数均是完全平方数,则输出}}}
?
/* ———————————————-分解三位数n的各位数字,将各个数字
文档评论(0)