欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C程序设计4谭浩强完整版课后习题答案.docx

    • 资源ID:2643416       资源大小:54.93KB        全文页数:127页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    C程序设计4谭浩强完整版课后习题答案.docx

    1、C程序设计4谭浩强完整版课后习题答案C程序设计(第四版)(谭浩强)第一章课后习题答案P006 1.1 向屏幕输出文字.#include /预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找. int main() printf(Welcome to n); return 0; /与int main对应,为了程序可移植性,建议全用int main + return 0;.P008 1.2 求两个数的和.#include int main() int a,b,sum; a=5; b=4; sum=a+b; printf(The sum is %d .n,sum); return 0;P0

    2、08 1.3 调用函数比较两个数的大小.#include int main() int max(int x,int y); /被调用函数在主函数后面,用前先声明. int a,b,c; scanf(%d,%d,&a,&b); /输入时要按格式来,此处的逗号,用空格会发生错误. c=max(a,b); /a,b作为实参传入被调用函数中. printf(The max is %d .n,c); return 0;int max(int x,int y) /定义了两个形参. int z; /z属于局部变量,可与主函数中相同名字. if (xy) z=x; else z=y; return(z); /

    3、z作为整个程序的出口值,赋给主函数中的c.P015 0.6 三个数的大小.(数字0表示课后练习题)#include int main() int a,b,c,d; /d是用于存储最大值的. int max(int x , int y , int z); /测试可知,在VS2008中,可以不预先声明. printf(Please input 3 numbers :n); scanf(%d %d %d,&a,&b,&c); d=max(a,b,c); /调用函数中有三个形参,这里需要传入三个实参,才可运算. printf(The max is :%d .n,d); / d可以换成max(a,b,c

    4、).int max(int x , int y , int z) int m; if (xy & xz) /求三者之大的一种方法. m=x; if (yx & yz) m=y; if (zy & zx) m=z; return (m); /返回值m给主函数中的d.C程序设计(第四版)(谭浩强)第2章课后习题答案算法程序的灵魂P017 2.1 计算机1-5相乘的积.#include int main() int i,s=1; /在执行数值操作前一定要先有个初值. for(i=1;i6;i+) /这里是到6. s=s*i; /相乘 printf(The sum is %d .n,s); retur

    5、n 0;#include /作出要求:换成1到11间奇数相乘.int main() int i,s=1; /在执行数值操作前一定要先有个初值. for(i=1;i12;i+) /这里是到,但题目要求的是取单数.也可以是i=i+2 if(i%2!=0) /i对取模,值为非为奇数;为则为偶数. s=s*i; else continue; /跳过这个for循环的这一次,执行下一次. printf(The sum is %d .n,s); return 0;P019 2.2 按要求输出80分以上的学生信息.暂时没法做.P019 2.3 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一

    6、周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是365.2423天(目前)。所以,如果每年定义为365天的话,1年就会多出0.2423天,4年就会多出0.9692天,非常接近1天,这样闰年就出现了,也就是每4年要有1年设置为366天,来抵消这多出的1天。规则为:1)如果年份能被4整除,则该年计为闰年;可是,假如不做调整的话,当400年的时候,累计才多出96.92天,接近于多出97天,闰年的设置却多出来100天,所以要在400年内,再撤销3个闰年。怎么撤销呢?就有了下面这个规则:2)如果年份能被100整除,则不计为闰年;问题又来了,400年里有4个

    7、100年吧,去掉后四个100年后,又少了一个,所以再加一个规则就是:3)如果年份能被400整除,则计为闰年。简单说来每400年里设置了97个闰年,也就是400里的前3个100年不设置闰年,误差被调整到400年仅有0.08天。#include int main() int i; for(i=2000;i=2200;i+) if(i%4=0 & i%100!=0)|i%400=0) /闰年的经典判断条件. printf(%d is a leap year !n,i); else printf(%d is not a leap year !n,i); P020 2.4 求(1)-(1/2)+(1/3

    8、)+(1/99)-(1/100)的值.#include int main() float sign=1 , sum=0 , deno , term ; /关于有小数的计算应该用float. for (deno=1;deno=100;deno+) term=sign*(1/deno); /term临时值,sing符号,deno为分母. sum=sum+term; /第一次总全存储. sign=(-1)*sign; /换号. printf(The sum of deno(指定值) is %f .n,sum); return 0; /若是到100的话,结果为0.68172P021 2.5 得到一个大

    9、于3的数,并判断是否为素数.#include int main() int i , num ,n ; /像13,37,这样只能让和它本身除以外,没有其它除数的叫素数. printf(Please input a number :n); /获取一个数值 scanf(%d,&num); for(i=2;inum;i+) /在到此数值间进行循环除,如果除得尽,就不满足素数要求. if(num%i=0) /除得尽,则不是. n=1; break; /设置跳出,才不会执行多次. n=0; /按程序走的话,这里会执行多次,不能用printf语句,会输出多次. if(n=0) /单出口问题,虽然n=0执行多

    10、次,但仍然是n=0,这样才会只输出一次. printf(It is do a prime number !); /如果是100-200可以加个”%d”,nmu进去. else printf(It is not a prime number !); return 0;2.6-2.10要求用流程图表示上列算法.2.11-2.16要求用N-S图表示上列算法. 还要伪代码P036 0.1 调换二个参数的值.#include int main() char a=a,b=b,c; c=a; a=b; b=c; printf(a now is %c , b now is %c !n,a,b); return

    11、 0;P036 0.2 输入10个数,并输出最大的那一个数.#include int main() int i,a10,s=0 ; printf(Please input 10 numbers :n); for(i=0;i=9;i+) scanf(%d,&ai); for(i=0;i=9;i+) if (sai) s=ai; printf(%d is the biggest number !n,s); return 0;P036 0.3 按大小顺序输出一些数.#include int main() int i , j , a4 , s=0 ; printf(Please input 5 num

    12、bers :n); /此处要回车. for (i=0 ; i=4 ; i+) scanf(%d,&ai); /这是取多个数的代码,可以用while控制取到n符为止. for (i=0 ; i=3 ; i+) /双重循环,先一个外循,再轮所有小循,轮完后再下一个大循. for (j=i+1 ; jaj) /如果成立,则对换,小于号表示降序排列,大于号表示升序排列. s=ai; ai=aj; aj=s; for (i=0 ; i=4 ; i+) /重新定义循环输出数组中新排列的数. printf(%d-,ai); return 0;P036 0.4 求1至100的总合.#include int m

    13、ain() int i , sum=0 ; /这是一个简单的程序. for (i=0 ; i101 ; i+) sum=sum+i; printf(The sum of one to one hundred is %d !n,sum); return 0;P036 0.5 判断一个数能否同时被3和5整除.#include int main() int n ; printf(Please input a number :n); scanf(%d,&n); if(n%3=0&n%5=0) /关键句,用并的符号. printf (Can be devide by 3 and 5 !n); else

    14、printf (Can not be devide by 3 and 5 !n); return 0;P036 0.6 输出100-200间的素数./*第一种方法.#include /网络版本,采用调用函数和求根取素.#include /下面用到sqrt,所以需要包含数据函数.sqrt是求根,属数学函数.int main() /学会一个程序采用”主函数+被调用函数”的方式,会比较规范. int i; for (i=100; i=200; i+) /为了书写规范,最好加上,以示清范围. if(prime_number(i) = 1) /i是实参. printf(%d ,i); return 0;

    15、int prime_number(double m) /m是形参. int j,k; k=(int)sqrt(m); /求根,(int)是强制转换,求根里要是浮点型. for(j=2;j=k;j+) if(m%j=0) return 0; /此值返回给主函数中的实参. return 1;/*第二种方法.#include #include int main() int i; for(i=100;i=200;i+) /指定至间. if(prime(i)=1) /这里i为实参,传入形参j中进行运算,然后再由形参j带出返回. printf (%d is the prime number !n,i);

    16、return 0;int prime(int j) /j是形参,用于接收实参i给的值. int m, n; m=(int)sqrt(j); for (n=2;n=m;n+) if(j%n=0) return 0; /返回值,0为不是素数,1是素数. return 1; /*第二种方法.请仿照2.5来写.P036 0.7 最大公约数和最小公倍数.#include /最大公约数用累除法,除到无余数时的被除数是最大公约数.main () int m, n, c, d; int gcd(); /这是最大公约数的缩写,此处调用函数,可以不写里面的实参. int lcm(); /这是最小公倍数的缩写,此处

    17、调用函数,可以不写里面的实参. printf(Please input two number :n); scanf(%d %d,&m,&n); c=gcd(m,n); /c获取最大公约数 d=lcm(m,n); /d获取最小公倍数 printf(The GCD of %d and %d is : %d !n, m, n, c); printf(The LCM of %d and %d is : %d !n, m, n, d); return 0;int gcd(int x, int y) /最大公约数Greatest Common Divisor int temp; while(x%y!=0)

    18、 temp=y; /y在下一轮中作为除数,即是下一轮中的X,所以先闪一边去. y=x%y; /x,y的余数作为下一轮中的Y,由x%y来取得. x=temp; /刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用. return y; /这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理.int lcm(int x, int y) /最小公倍数Lowest Common Multiple int i, temp; if(xy) /保证二者大的数在X上,小的数在Y上.小于号降序,大于号升序. /以下为经典三行码,实现两个数的互换. temp=x; x=y; y=temp; f

    19、or(i=1; i=y; i+) /设定一个区间,从1至小的数之间的循环. if(!(x*i)%y) /除得尽为零,非零为真,则成立并返回. /如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,就是最小公倍数. return x*i; 最简单的C程序设计顺序程序设计P037 3.1 把华氏温度转化为摄氏表示法.#include float F_to_C(float input_fah) /代表华转摄,input_fah是局部变量. float output_cen; /这里也是局部变量. output_cen=(5.0/9)*(input_fah-32); /函数的功能体. retur

    20、n output_cen; /返回值,注意,返回值的数据类型应该和函数一致.float C_to_F(float input_cen) float output_fah; output_fah=(9.0/5)*input_cen+32; /转换过程. return output_fah;int main() int choice; float input_fah,input_cen,output_fah,output_cen; /局部变量的调用及参数传递. printf(F_to_C press and C_to_F press !n); scanf(%d,&choice); if(choic

    21、e=1) printf(Please input fahrenheit :); scanf(%f,&input_fah); /这个是主函数定义的变量,虽然和调用函数同名.output_cen=F_to_C(input_fah); printf(The 华氏 is %d , 摄氏 is %d .,(int)input_fah,(int)output_cen); if(choice=2) printf(Please input centigrade :); scanf(%f,&input_cen); output_fah=C_to_F(input_cen); printf(The Centigra

    22、de is %d , and the Fahrenheit is %d .,(int)input_cen,(int)output_fah); return 0;P038 3.2 计算存款利息(关于精度问题).#include int main() float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; p1=p0*(1+r1); p2=p0*(1+r2); p3=p0*(1+r3/2)*(1+r3/2); printf(p1=%fnp2=%fnp3=%fn,p1,p2,p3); return 0;P055 3.3 大写转换成小写#includ

    23、e int main() /小写范围是97-122,大写范围是65-90,大写加上即得小写.26个字母. char c1, c2; c1=A; c2=c1+32; printf(%c %d,c2,c2); return 0;P059 3.4 给出三角形边长,算出面积.#include #include int main() double a=3.67, b=5.43, c=6.21, s, area; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(area is %fn,area); /默认可以组成三角形. return 0;P065 3

    24、.5 求一无二次等式的根,默认两个不同根.#include #include int main() double a,b,c,disc,x1,x2,p,q; scanf(%lf %lf %lf,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(x1=%7.2fnx2=%7.2f,x1,x2); return 0;P071 3.6 用%f输出实数,只能得到六位小数.#include #include int main() double a=1.0; /1是整型,1.0是浮点型

    25、,默认是double.可以是float. printf(%.9fn,a/3); return 0;P072 3.7 float型数据的有效位数.#include #include int main() float a; /输出的结果是.333252,float精度6位,所以第七位后不可信. a=10000/3.0; printf(%fn,a); return 0;P078 3.8 使用putchar函数输出.#include #include int main() char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar(n);

    26、 putchar(101); /101是A的ASCII代码的缩写,因为此函数只能输出字符. putchar(66); return 0;P079 3.9 使用getchar得到字符.#include #include int main() char a,b,c; a=getchar(); b=getchar(); c=getchar(); putchar(a); putchar(b); putchar(c); /这也是基本回显的C程序代码. putchar(n); return 0;P081 3.10 getchar得到大写,putchar输出小写.#include #include int main() char a,b; a=getchar(); b=a+32; putchar(b); putchar(n); return 0;P082 0.1 国民生产总值10年后的增长倍数.#include #include int main() double p,r=0.09,n=10; p=pow(1+r),n); /这是数学函数, pow(x,y)计算x的y次方. printf(P is


    注意事项

    本文(C程序设计4谭浩强完整版课后习题答案.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




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

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开