C语言编程练习题88922.docx
- 文档编号:26281827
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:16
- 大小:147.54KB
C语言编程练习题88922.docx
《C语言编程练习题88922.docx》由会员分享,可在线阅读,更多相关《C语言编程练习题88922.docx(16页珍藏版)》请在冰豆网上搜索。
C语言编程练习题88922
本练习假设:
整数int为4字节,运行环境为VC
一、整数位数有关的问题
1、输入一个整数,判断它是几位数?
#include
voidmain()
{
inta,n=0;
scanf("%d",&a);
while(a>0)
{
a/=10;
n++;
}
printf("%d\n",n);
}
扩展:
编制一个函数,参数为整数,返回该整数的位数。
intdigits(inta)
{
intn=0;
while(a>0)
{
a/=10;
n++;
}
returnn;
}
2、编制一函数,得到一个整数的某一位的数字。
intdigit(inta,intn)/*返回:
整数a的倒数第n位数,n从1开始*/
{
while(n>1)
{
a/=10;
n--;
}
returna%10;
}
测试函数的例子:
#include
intdigit(inta,intn);
voidmain()
{
inta,n,d;
scanf("%d%d",&a,&n);
d=digit(a,n);
printf("%d\n",d);
}
二、关于整数的几个题目
1、输入两个正整数m和n,求其最大公约数和最小公倍数。
算法分析:
采用辗转相除法,先求出最大公约数d,然后求最小公倍数c=m*n/d。
辗转相除法:
余数=大数%小数,然后将小数和余数再作辗转相除。
#include
voidmain()
{
intm,n,a,b,d,c;
scanf("%d,%d",&m,&n);
if(m>n){a=m;b=n;}/*保证a>b*/
else{a=n;b=m;}
while((d=a%b)>0)/*每次循环都测试余数是否为0*/
{
a=b;b=d;
}
d=b;/*得到最大公约数*/
c=m*n/d;/*得到最小公倍数*/
printf("最大公约数是%d\n最小公倍数是%d\n",d,c);
}
拓展:
编出求最大公约数的函数。
intmcd(inta,intb)
{
intd,t;
if(ab*/
while((d=a%b)>0)/*每次循环都测试余数是否为0*/
{
a=b;b=d;
}
returnb;/*得到最大公约数*/
}
测试上述函数:
#include
intmcd(inta,intb);
voidmain()
{
intm,n,d,c;
scanf("%d,%d",&m,&n);
d=mcd(m,n);
c=m*n/d;
printf("最大公约数是%d\n最小公倍数是%d\n",d,c);
}
2、求出所有的水仙花数。
水仙花数是一个三位数,其各位数字的立方和等于该数。
例如153=1^3+5^3+3^3。
#include
voidmain()
{
ints,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("%d\n",s);
}
}
按位循环:
#include
voidmain()
{
ints,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("%d\n",s);
}
}
类似地:
可以求出100以内的勾股数,如3^2+4^2=5^2。
三、关于数组的几个题目
求2100的精确值。
参考:
#include
voidmain()
{
doubles=1.0;
inti;
for(i=1;i<=100;i++)
s*=2;
printf("%f\n",s);
}
运行结果:
1267650600228229400000000000000.000000
后面十多位全是0,因此是近似值。
如何求精确值呢?
(关键是如何保存每一位)
#include
voidmain()
{
ints[100]={1};/*初始化第一位为0,其它每一位为0*/
inti,j,m=0;/*m指示最高位为s[m]*/
for(i=1;i<=100;i++)
{
for(j=0;j<=m;j++)
s[j]*=2;
for(j=0;j<=m;j++)/*检查进位*/
if(s[j]>9)/*第j位需要进位*/
{
s[j+1]+=s[j]/10;
s[j]%=10;
if(j+1>m)m=j+1;/*最高位进位*/
}
}
printf("2^100=");
for(j=m;j>=0;j--)
printf("%d",s[j]);
printf("\n");
}
运行结果:
2^100=1267650600228229401496703205376
扩展问题:
如何求出100!
的精确值?
缺陷:
如果乘以一个很大的数如20亿,会使高一位与进位相加后溢出。
四、大数运算
用整数数组存放每一位,最高位用-1存储,如12存为:
a[0]=2,a[1]=1,a[2]=-1。
1、输入和存储大数。
编制一函数,将合法数字组成的字符串表示的大数按位拆分存储到整数数组中,最高位前存储-1。
/*转换大数:
将字符串c中的数字保存到整数数组a中,a最高位添加-1标志*/
voidLargeSet(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中*/
voidLargeGet(char*c,int*a)
{
int*p;
for(p=a;*p>=0;p++);
p--;
for(;p>=a;c++,p--)
*c=*p+'0';
*c='\0';
}
3、大数相加。
编制一函数,实现两个大数相加。
voidLargeAdd(int*a,int*b,int*s)/*大数相加:
s=a+b*/
{
intka=0,kb=0;
for(*s=0;ka==0||kb==0;s++)
{
if(*a<0)ka=1;
if(*b<0)kb=1;
if(ka==0){*s+=*a;a++;}
if(kb==0){*s+=*b;b++;}
if(*s>9){*(s+1)=1;*s%=10;}
else*(s+1)=0;
}
if(*s>0)*(s+1)=-1;
elseif(*(s-1)>0)*s=-1;
else*(s-1)=-1;
}
验证上面的函数:
#include
voidLargeSet(char*a,int*s);
voidLargeGet(char*a,int*s);
voidLargeAdd(int*a,int*b,int*s);
voidmain()
{
inta[100],b[100],s[100];
charc[100];
scanf("%s",c);
LargeSet(c,a);
scanf("%s",c);
LargeSet(c,b);
LargeAdd(a,b,s);
LargeGet(c,s);
printf("sumis%s\n",c);
}
运行结果:
12345678901234567890
12345678901234567890
sumis24691357802469135780
扩展:
可以编制大数相减、相乘、相除、乘方、开方等运算。
有了这些运算,计算100!
或2的100次方的精确值将变得很简单。
因为有爱,这个社会织了一个梳不清的网,逃不出的网,因为有爱,大家才走到一起来,生活有了欢乐,有苦恼,有了说不完的千千结,谁也无法去解。
因为有爱,你认识了我,我认识了你,也许就因为那一眼,我们从此在也不得分离。
因为有爱,人们走南创北,什么地方都去,不管天涯海角,一个爱就有很多的力量,驱使你去很远很远,因为有爱,多少人远走他乡,离乡背景,永远不回头了。
因为有爱,天意会安排你去坐飞机,去坐轮船,去坐火车,去坐大客运,有可能那个上飞机的剪票员,剪过千万张机票,都懒的看他一眼,偏偏就看了你一眼,恰在这时一个证件就让她给拾了,从此相识了,走在一块,永远不分离,爱情的基础,就是剪票口看了一眼,就产生了不可磨灭的真爱。
有可能坐在飞机的座位上,那个身边的姑娘在你们的谈话中,彼此就默默的分不开了,至于以前,谁去过问,也勿须过问,有爱还问历史干什么,那种爱是纯真切的,不是对每个人都有这样机遇,所以一旦走到一块,彼此之间格外珍惜,那是神话般的美丽故事,谁能不珍惜呢?
因为有爱,才坐到一个火车上,她就坐在你的身边,瞌睡了,她就倒在你的身上睡了一路,醒来了,她不好意思,你也不好意思,就这样认识了熟悉了,当下了火车时,彼此在也不想分离,当他们走在一起时,两家的距离确是相隔千万里的路程,要是平常,你愿意从万里以外的地方说媳妇吗?
就是有,谁给你牵这线,你愿意嫁到万里之遥的地方吗?
你肯定没有想过,是天意给他们安排了这次火车的机遇。
要不他们怎样能到一块呢?
无边的蓝天,如纱的白云,茫茫的大海,乘风破浪巨轮,因为有爱,一个小小的世界,就会安排他们相见,或许你买的船票,和她就在一个船舱里,就是不在一个船舱,甲板上也会相遇,一块沐浴着海风的吹拂,一块欣赏着大海的波涛。
不觉间走到了一块,当谈完大海的宽阔,在论海风凉爽时,才知道对方并不熟悉的人,交谈中就对方说出了自己的姓名,下了船到了一个同一的城市,就是自己的依靠了,相依为命,在艰难在困惑,日子总算一天天的好了起来,你说这是不是因为爱才走到一起来呢?
也许彼此都喜欢上了对方,但谁也不知道谁的名字,也不知道都在什么单位,只在是下班的十字口彼此投过一个眼神,就这样在风雨里等待,也无法去打听,也没有勇气敢问对方,偶然的一次班车上,坐在了一块,去同一个城市玩,也没有什么目地,纯粹是一个人出去散心,有情侣人终成眷属,苍天安排了一次机遇,就走到了一起,当成为一家人时,自己单位的人几个都是她的亲戚,他的单位几个人都是他的亲戚,可当时谁给你介绍呢?
苍天安排的亲眷没有一丝缝隙,百分之百的成功。
因为有爱,男女的结合没有什么理由,爱你没有商量,现在的旅游发展的特别快,当你走出世界的时候,你发现生活很有意思,不知乍的,一个车上,东南西北的人都有,只要坐在一个车上,就如同一家人似的,瞬间就改变了人们的思想观念,车上有老的,有少的,有中年的,短时间的相处,就如同父母和儿女,兄弟和姐妹,有说有笑,相互关系,分离时,都有一种恋恋不舍的那种感觉,用佛的观念来说,因为缘分还没有修到,只能今生短暂的相聚,很有意思,就因为有那么一段爱的缘分,今生天意就安排了一段旅游的机会,令人很欣慰。
因为有爱,这个社会织了一个梳不清的网,逃不出的网,因为有爱,大家才走到一起来,生活有了欢乐,有苦恼,有了说不完的千千结,谁也无法去解。
因为有爱,你认识了我,我认识了你,也许就因为那一眼,我们从此在也不得分离。
因为有爱,人们走南创北,什么地方都去,不管天涯海角,一个爱就有很多的力量,驱使你去很远很远,因为有爱,多少人远走他乡,离乡背景,永远不回头了。
因为有爱,天意会安排你去坐飞机,去坐轮船,去坐火车,去坐大客运,有可能那个上飞机的剪票员,剪过千万张机票,都懒的看他一眼,偏偏就看了你一眼,恰在这时一个证件就让她给拾了,从此相识了,走在一块,永远不分离,爱情的基础,就是剪票口看了一眼,就产生了不可磨灭的真爱。
有可能坐在飞机的座位上,那个身边的姑娘在你们的谈话中,彼此就默默的分不开了,至于以前,谁去过问,也勿须过问,有爱还问历史干什么,那种爱是纯真切的,不是对每个人都有这样机遇,所以一旦走到一块,彼此之间格外珍惜,那是神话般的美丽故事,谁能不珍惜呢?
因为有爱,才坐到一个火车上,她就坐在你的身边,瞌睡了,她就倒在你的身上睡了一路,醒来了,她不好意思,你也不好意思,就这样认识了熟悉了,当下了火车时,彼此在也不想分离,当他们走在一起时,两家的距离确是相隔千万里的路程,要是平常,你愿意从万里以外的地方说媳妇吗?
就是有,谁给你牵这线,你愿意嫁到万里之遥的地方吗?
你肯定没有想过,是天意给他们安排了这次火车的机遇。
要不他们怎样能到一块呢?
无边的蓝天,如纱的白云,茫茫的大海,乘风破浪巨轮,因为有爱,一个小小的世界,就会安排他们相见,或许你买的船票,和她就在一个船舱里,就是不在一个船舱,甲板上也会相遇,一块沐浴着海风的吹拂,一块欣赏着大海的波涛。
不觉间走到了一块,当谈完大海的宽阔,在论海风凉爽时,才知道对方并不熟悉的人,交谈中就对方说出了自己的姓名,下了船到了一个同一的城市,就是自己的依靠了,相依为命,在艰难在困惑,日子总算一天天的好了起来,你说这是不是因为爱才走到一起来呢?
也许彼此都喜欢上了对方,但谁也不知道谁的名字,也不知道都在什么单位,只在是下班的十字口彼此投过一个眼神,就这样在风雨里等待,也无法去打听,也没有勇气敢问对方,偶然的一次班车上,坐在了一块,去同一个城市玩,也没有什么目地,纯粹是一个人出去散心,有情侣人终成眷属,苍天安排了一次机遇,就走到了一起,当成为一家人时,自己单位的人几个都是她的亲戚,他的单位几个人都是他的亲戚,可当时谁给你介绍呢?
苍天安排的亲眷没有一丝缝隙,百分之百的成功。
因为有爱,男女的结合没有什么理由,爱你没有商量,现在的旅游发展的特别快,当你走出世界的时候,你发现生活很有意思,不知乍的,一个车上,东南西北的人都有,只要坐在一个车上,就如同一家人似的,瞬间就改变了人们的思想观念,车上有老的,有少的,有中年的,短时间的相处,就如同父母和儿女,兄弟和姐妹,有说有笑,相互关系,分离时,都有一种恋恋不舍的那种感觉,用佛的观念来说,因为缘分还没有修到,只能今生短暂的相聚,很有意思,就因为有那么一段爱的缘分,今生天意就安排了一段旅游的机会,令人很欣慰。
因为有爱,生活中苍天给你周围安排了很多朋友,有男的,有女的,有老的,有少的,他们和你没有一点血缘关系,就是一次会议,一次酒宴,一次下乡,或许在朋友家相逢,或许路上见的多了,总的来说不管是什么原因,番正是认识了,有个什么事
情,你也不知是别人知道了,都来帮忙,有人叫你大侄子,有人叫你哥,有人叫你弟,还有称同学的,好象一家子人似的,谁也没有图谁什么,说句老实话,有些都不知他们在什么单位,这些人就这样从认识到熟悉,亲如一家,一见老人去叫叔姨,同辈我在称他们哥,弟,姐和妹,在小的也就是我侄子了,因为有爱,我成了天然的一家。
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 练习题 88922