




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选文库 本练习假设:整数int为4字节,运行环境为VC 一、整数位数有关的问题 1、输入一个整数,判断它是几位数? #include void main() int a,n=0; scanf(%d, 答案在后面 思路:如何数出位数? while(a0) a/=10; n+; printf(%dn,n); 扩展:编制一个函数,参数为整数,返回该整数的位数。 答案在后面 int digits(int a) int n=0; while(a0) a/=10; n+; return n; 2、编制一函数,得到一个整数的某一位的数字。 int digit(int a,int n) /*返回:整数a的倒数第n位数,n从1开始*/ 答案在后面 思路:如何将倒数第n位用一个表达式取出? 不能!转变成怎样后就能? while(n1) a/=10; n-; return a%10; 测试函数的例子: #include int digit(int a,int n); void main() int a,n,d; scanf(%d%d, d=digit(a,n); printf(%dn,d); 二、关于整数的几个题目 1、输入两个正整数m和n,求其最大公约数和最小公倍数。 算法分析:采用辗转相除法,先求出最大公约数d,然后求最小公倍数c=m*n/d。 辗转相除法:余数=大数%小数,然后将小数和余数再作辗转相除。 #include void main() int m,n,a,b,d,c; scanf(%d,%d, if(mn)a=m;b=n; /*保证ab*/ else a=n;b=m; while(d=a%b)0) /*每次循环都测试余数是否为0*/ a=b;b=d; d=b; /*得到最大公约数*/ c=m*n/d; /*得到最小公倍数*/ printf(最大公约数是%dn最小公倍数是%dn,d,c); 拓展:编出求最大公约数的函数。 int mcd(int a,int b) int d,t; if(ab*/ while(d=a%b)0) /*每次循环都测试余数是否为0*/ a=b;b=d; return b; /*得到最大公约数*/ 测试上述函数: #include int mcd(int a,int b); void main() int m,n,d,c; scanf(%d,%d, d=mcd(m,n); c=m*n/d; printf(最大公约数是%dn最小公倍数是%dn,d,c); 2、求出所有的水仙花数。水仙花数是一个三位数,其各位数字的立方和等于该数。例如153=13+53+33。 #include void main() int s,a,b,c; for(s=100;s=999;s+) a=s%10; b=s/10%10;c=s/100; /*分解出每一位*/ if(a*a*a+b*b*b+c*c*c=s) printf(%dn,s); 按位循环: #include void main() int s,a,b,c; for(a=0;a=9;a+) for(b=0;b=9;b+) for(c=1;c=9;c+) s=c*100+b*10+a; if(a*a*a+b*b*b+c*c*c=s) printf(%dn,s); 类似地:可以求出100以内的勾股数,如32+42=52。 三、关于数组的几个题目 求2100的精确值。 参考: #include void main() double s=1.0; int i; for(i=1;i=100;i+) s*=2; printf(%fn,s); 运行结果: 1267650600228229400000000000000.000000 后面十多位全是0,因此是近似值。 如何求精确值呢?(关键是如何保存每一位) #include void main() 答案在后面 int s100=1; /*初始化第一位为0,其它每一位为0*/ int i,j,m=0; /*m指示最高位为sm*/ for(i=1;i=100;i+) for(j=0;jm) m=j+1; /*最高位进位*/ printf(2100 = ); for(j=m;j=0;j-) printf(%d,sj); printf(n); 运行结果: 2100 = 1267650600228229401496703205376 扩展问题:如何求出100!的精确值? 缺陷:如果乘以一个很大的数如20亿,会使高一位与进位相加后溢出。 四、大数运算 用整数数组存放每一位,最高位用-1存储,如12存为:a0=2,a1=1,a2=-1。 1、输入和存储大数。 编制一函数,将合法数字组成的字符串表示的大数按位拆分存储到整数数组中,最高位前存储-1。 /*转换大数:将字符串c中的数字保存到整数数组a中,a最高位添加-1标志*/ void LargeSet(char *c, int *a) char *p; for(p=c;*p!=0;p+); /*找到末尾作为最低位*/ p-; for(;p=c;p-,a+) *a=*p-0; *a=-1; 2、输出和获得数字串。 编制一函数,将大数转换成字符串。 /*转换大数:将大数a转换成字符串存入字符数组c中*/ void LargeGet(char *c, int *a) int *p; for(p=a;*p=0;p+); p-; for(;p=a;c+,p-) *c=*p+0; *c=0; 3、大数相加。 编制一函数,实现两个大数相加。 void LargeAdd(int *a, int *b, int *s) /*大数相加:s=a+b*/ int ka=0,kb=0; for(*s=0;ka=0|kb=0;s+) if(*a0) *(s+1)=-1; else if(*(s-1)0) *s=-1; else *(s-1)=-1; 验证上面的函数: #include void LargeSet(char *a, int *s); void LargeGet(char *a, int *s); void LargeAdd(int *a, int *b, int *s); void main() int a100,b100,s100; char c100; scanf(%s,c); LargeSet(c,a); scanf(%s,c); LargeSet(c,b); LargeAdd(a,b,s); LargeGet(c,s); printf(sum is %sn,c); 运行结果: 12345678901234567890 12345678901234567890 sum is 24691357802469135780 扩展:可以编制大数相减、相乘、相除、乘方、开方等运算。有了这些运算,计算100!或2的100次方的精确值将变得很简单。 因为有爱,这个社会织了一个梳不清的网,逃不出的网,因为有爱,大家才走到一起来,生活有了欢乐,有苦恼,有了说不完的千千结,谁也无法去解。因为有爱,你认识了我,我认识了你,也许就因为那一眼,我们从此在也不得分离。因为有爱,人们走南创北,什么地方都去,不管天涯海角,一个爱就有很多的力量,驱使你去很远很远,因为有爱,多少人远走他乡,离乡背景,永远不回头了。 因为有爱,天意会安排你去坐飞机,去坐轮船,去坐火车,去坐大客运,有可能那个上飞机的剪票员,剪过千万张机票,都懒的看他一眼,偏偏就看了你一眼,恰在这时一个证件就让她给拾了,从此相识了,走在一块,永远不分离,爱情的基础,就是剪票口看了一眼,就产生了不可磨灭的真爱。有可能坐在飞机的座位上,那个身边的姑娘在你们的谈话中,彼此就默默的分不开了,至于以前,谁去过问,也勿须过问,有爱还问历史干什么,那种爱是纯真切的,不是对每个人都有这样机遇,所以一旦走到一块,彼此之间格外珍惜,那是神话般的美丽故事,谁能不珍惜呢? 因为有爱,才坐到一个火车上,她就坐在你的身边,瞌睡了,她就倒在你的身上睡了一路,醒来了,她不好意思,你也不好意思,就这样认识了熟悉了,当下了火车时,彼此在也不想分离,当他们走在一起时,两家的距离确是相隔千万里的路程,要是平常,你愿意从万里以外的地方说媳妇吗?就是有,谁给你牵这线,你愿意嫁到万里之遥的地方吗?你肯定没有想过,是天意给他们安排了这次火车的机遇。要不他们怎样能到一块呢? 无边的蓝天,如纱的白云,茫茫的大海,乘风破浪巨轮,因为有爱,一个小小的世界,就会安排他们相见,或许你买的船票,和她就在一个船舱里,就是不在一个船舱,甲板上也会相遇,一块沐浴着海风的吹拂,一块欣赏着大海的波涛。 不觉间走到了一块,当谈完大海的宽阔,在论海风凉爽时,才知道对方并不熟悉的人,交谈中就对方说出了自己的姓名,下了船到了一个同一的城市,就是自己的依靠了,相依为命,在艰难在困惑,日子总算一天天的好了起来,你说这是不是因为爱才走到一起来呢? 也许彼此都喜欢上了对方,但谁也不知道谁的名字,也不知道都在什么单位,只在是下班的十字口彼此投过一个眼神,就这样在风雨里等待,也无法去打听,也没有勇气敢问对方,偶然的一次班车上,坐在了一块,去同一个城市玩,也没有什么目地,纯粹是一个人出去散心,有情侣人终成眷属,苍天安排了一次机遇,就走到了一起,当成为一家人时,自己单位的人几个都是她的亲戚,他的单位几个人都是他的亲戚,可当时谁给你介绍呢?苍天安排的亲眷没有一丝缝隙,百分之百的成功。 因为有爱,男女的结合没有什么理由,爱你没有商量,现在的旅游发展的特别快,当你走出世界的时候,你发现生活很有意思,不知乍的,一个车上,东南西北的人都有,只要坐在一个车上,就如同一家人似的,瞬间就改变了人们的思想观念,车上有老的,有少的,有中年的,短时间的相处,就如同父母和儿女,兄弟和姐妹,有说有笑,相互关系,分离时,都有一种恋恋不舍的那种感觉,用佛的观念来说,因为缘分还没有修到,只能今生短暂的相聚,很有意思,就因为有那么一段爱的缘分,今生天意就安排了一段旅游的机会,令人很欣慰。 因为有爱,这个社会织了一个梳不清的网,逃不出的网,因为有爱,大家才走到一起来,生活有了欢乐,有苦恼,有了说不完的千千结,谁也无法去解。因为有爱,你认识了我,我认识了你,也许就因为那一眼,我们从此在也不得分离。因为有爱,人们走南创北,什么地方都去,不管天涯海角,一个爱就有很多的力量,驱使你去很远很远,因为有爱,多少人远走他乡,离乡背景,永远不回头了。 因为有爱,天意会安排你去坐飞机,去坐轮船,去坐火车,去坐大客运,有可能那个上飞机的剪票员,剪过千万张机票,都懒的看他一眼,偏偏就看了你一眼,恰在这时一个证件就让她给拾了,从此相识了,走在一块,永远不分离,爱情的基础,就是剪票口看了一眼,就产生了不可磨灭的真爱。有可能坐在飞机的座位上,那个身边的姑娘在你们的谈话中,彼此就默默的分不开了,至于以前,谁去过问,也勿须过问,有爱还问历史干什么,那种爱是纯真切的,不是对每个人都有这样机遇,所以一旦走到一块,彼此之间格外珍惜,那是神话般的美丽故事,谁能不珍惜呢? 因为有爱,才坐到一个火车上,她就坐在你的身边,瞌睡了,她就倒在你的身上睡了一路,醒来了,她不好意思,你也不好意思,就这样认识了熟悉了,当下了火车时,彼此在也不想分离,当他们走在一起时,两家的距离确是相隔千万里的路程,要是平常,你愿意从万里以外的地方说媳妇吗?就是有,谁给你牵这线,你愿意嫁到万里之遥的地方吗?你肯定没有想过,是天意给他们安排了这次火车的机遇。要不他们怎样能到一块呢? 无边的蓝天,如纱的白云,茫茫的大海,乘风破浪巨轮,因为有爱,一个小小的世界,就会安排他们相见,或许你买的船票,和她就在一个船舱里,就是不在一个船舱,甲板上也会相遇,一块沐浴着海风的吹拂,一块欣赏着大海的波涛。 不觉间走到了一块,当谈完大海的宽阔,在论海风凉爽时,才知道对方并不熟悉的人,交谈中就对方说出了自己的姓名,下了船到了一个同一的城市,就是自己的依靠了,相依为命,在艰难在困惑,日子总算一天天的好了起来,你说这是不是因为爱才走到一起来呢? 也许彼此都喜欢上了对方,但谁也不知道谁的名字,也不知道都在什么单位,只在是下班的十字口彼此投过一个眼神,就这样在风雨里等待,也无法去打听,也没有勇气敢问对方,偶然的一次班车上,坐在了一块,去同一个城市玩,也没有什么目地,纯粹是一个人出去散心,有情侣人终成眷属,苍天安排了一次机遇,就走到了一起,当成为一家人时,自己单位的人几个都是她的亲戚,他的单位几个人都是他的亲戚,可当时谁给你介绍呢?苍天安排的亲眷没有一丝缝隙,百分之百的成功。 因为有爱,男女的结合没有什么理由,爱你没有商量,现在的旅游发展的特别快,当你走出世界的时候,你发现生活很有意思,不知乍的,一个车上,东南西北的人都有,只要坐在一个车上,就如同一家人似的,瞬间就改变了人们的思想观念,车上有老的,有少的,有中年的,短时间的相处,就如同父母和儿女,兄弟和姐妹,有说有笑,相互关系,分离时,都有一种恋恋不舍的那种感觉,用佛的观念来说,因为缘分还没有修到,只能今生短暂的相聚,很有意思,就因为有那么一段爱的缘分,今
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论