欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

C语言编程练习题

  • 资源ID:134275473       资源大小:49.01KB        全文页数:9页
  • 资源格式: DOC        下载积分:9.9积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要9.9积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

C语言编程练习题

本练习假设:整数int为4字节,运行环境为VC 一、整数位数有关的问题1、输入一个整数,判断它是几位数?#include <stdio.h>void main()int a,n=0;scanf("%d",&a);答案在后面思路:如何数出位数?while(a>0)a/=10;n+;printf("%dn",n);扩展:编制一个函数,参数为整数,返回该整数的位数。答案在后面int digits(int a)int n=0;while(a>0)a/=10;n+;return n;2、编制一函数,得到一个整数的某一位的数字。int digit(int a,int n) /*返回:整数a的倒数第n位数,n从1开始*/答案在后面思路:如何将倒数第n位用一个表达式取出?不能!转变成怎样后就能?while(n>1)a/=10;n-;return a%10;测试函数的例子:#include <stdio.h>int digit(int a,int n);void main()int a,n,d;scanf("%d%d",&a,&n);d=digit(a,n);printf("%dn",d);二、关于整数的几个题目1、输入两个正整数m和n,求其最大公约数和最小公倍数。算法分析:采用辗转相除法,先求出最大公约数d,然后求最小公倍数c=m*n/d。辗转相除法:余数=大数%小数,然后将小数和余数再作辗转相除。#include <stdio.h>void main()int m,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("最大公约数是%dn最小公倍数是%dn",d,c);拓展:编出求最大公约数的函数。int mcd(int a,int b)int d,t;if(a<b)t=a;a=b;b=t; /*保证a>b*/while(d=a%b)>0) /*每次循环都测试余数是否为0*/a=b;b=d;return b; /*得到最大公约数*/测试上述函数:#include <stdio.h>int mcd(int a,int b);void main()int m,n,d,c;scanf("%d,%d",&m,&n);d=mcd(m,n);c=m*n/d;printf("最大公约数是%dn最小公倍数是%dn",d,c);2、求出所有的水仙花数。水仙花数是一个三位数,其各位数字的立方和等于该数。例如153=13+53+33。#include <stdio.h>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 <stdio.h>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 <stdio.h>void main()double s=1.0;int i;for(i=1;i<=100;i+)s*=2;printf("%fn",s);运行结果:后面十多位全是0,因此是近似值。如何求精确值呢?(关键是如何保存每一位)#include <stdio.h>void main()答案在后面int s100=1; /*初始化第一位为0,其它每一位为0*/int i,j,m=0; /*m指示最高位为sm*/for(i=1;i<=100;i+)for(j=0;j<=m;j+)sj*=2;for(j=0;j<=m;j+) /*检查进位*/if(sj>9) /*第j位需要进位*/sj+1+=sj/10;sj%=10;if(j+1>m) m=j+1; /*最高位进位*/printf("2100 = ");for(j=m;j>=0;j-)printf("%d",sj);printf("n");运行结果:扩展问题:如何求出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(*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;else if(*(s-1)>0) *s=-1;else *(s-1)=-1;验证上面的函数:#include <stdio.h>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);运行结果:扩展:可以编制大数相减、相乘、相除、乘方、开方等运算。有了这些运算,计算100!或2的100次方的精确值将变得很简单。

注意事项

本文(C语言编程练习题)为本站会员(xt****7)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!