您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言程序设计第三版谭浩强习题答案集
C程序设计第三版课后习题答案全解File-New-Project在打开的NewProject对话框中最左侧一栏中选择VisualC++下面的CLR,之后在其右侧的区域中选择CLREmptyApplication并在下面的三个文本框中填入工程名称(Name),工程位置(Location)以及解决方案名称(SolutionName)之后单击OK然后可以解决方案浏览器中看到刚才新建的工程,右击工程名,选择Properties(属性),在打开的对话框中选择ConfigurationProperties(配置属性)下面的General(一般),然后将右边对话框中的CommonLanguageRuntimeSupport(CLR支持)改为NoCommonLanguageRuntimeSupport,然后点击确定退出接下来右击工程中的SourceFiles,选择Add-NewItem...,在打开的对话框中选择C++File(.cpp),并在下方输入一个以.c结尾的文件名,之后点击Add,之后就可以在这个文件中加入C语言代码,按F5就可以调试运行了。1.5请参照本章例题,编写一个C程序,输出以下信息:**************************VeryGood!**************************解:main(){printf(**************************);printf(\n);printf(VeryGood!\n);printf(\n);printf(**************************);}1.6编写一个程序,输入a、b、c三个值,输出其中最大值。解:main(){inta,b,c,max;printf(请输入三个数a,b,c:\n);scanf(%d,%d,%d,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(最大数为:%d,max);}第三章3.6写出以下程序运行的结果。main(){charc1='a',c2='b',c3='c',c4='\101',c5='\116';printf(a%cb%c\tc%c\tabc\n,c1,c2,c3);printf(\t\b%c%c,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将China译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母A后面第4个字母是E.E代替A。因此,China应译为Glmre。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,'C'、'h'、'i'、'n'、'a',经过运算,使c1、c2、c3、c4、c5分别变为'G'、'l'、'm'、'r'、'e',并输出。解:#includestdio.hmain(){charc1='C',c2='h',c3='i',c4='n',c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(密码是%c%c%c%c%c\n,c1,c2,c3,c4,c5);}运行结果:密码是Glmre3.9求下面算术表达式的值。(1)x+a%3*(int)(x+y)%2/4设x=2.5,a=7,y=4.7(2)(float)(a+b)/2+(int)x%(int)y设a=2,b=3,x=3.5,y=2.5(1)2.5(2)3.53.10写出程序运行的结果。main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;printf(%d,%d,%d,%d,i,j,m,n);}解:9,11,9,103.12写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。(1)a+=a(2)a-=2(3)a*=2+3(4)a/=a+a(5)a%=(n%=2),n的值等于5(6)a+=a-=a*=a解:(1)24(2)10(3)60(4)0(5)0(6)0第四章4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1='a',c2='b'。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。a=_3__b=_4__c=_5x=1.200000,y=2.400000,z=-3.600000x+y=_3.600__y+z=-1.20__z+x=-2.40c1=ˊaˊ_or_97(ASCII)c2=ˊbˊ_or_98(ASCII)main(){inta=3,b=4,c=5;longintu=51274,n=128765;floatx=1.2,y=2.4,z=3.6;charc1='a',c2='b';printf(a=%2db=%2dc=%2d\n,a,b,c);printf(x=%f,y=%f,z=%f\n,x,y,z);printf(x+y=%5.2fy+z=%5.2fz+x=%5.2f\n,x+y,y+z,z+x);printf(u=%6ldn=%9ld\n,u,n);printf(%s%s%d%s\n,c1='a',or,c1,(ASCII));printf(%s%s%d%s\n,c2='a',or,c2,(ASCII));}4.7用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入?main(){inta,b;floatx,y;charc1c2;scanf(a=%d_b=%d,&a,&b);scanf(_x=%f_y=%e,&x,&y);scanf(_c1=%c_c2=%c,&c1,&c2);}a=3_b=7_x=8.5_y=71.82_c1=A_c2=a4.8设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。main(){floatr,h,C1,Sa,Sb,Va,Vb;scanf(%f,%f,&r,&h);C1=2*3.14*r;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(C1=%.2f\n,C1);printf(Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n,Sa,Sb,Va,Vb);}4.9输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9输出要求有文字说明,取位2小数。main(){floatF,c;scanf(%f,&F);c=5*(F-32)/9;printf(c=%.2f,c);}4.10编程序,用getchar函数读入两个字符给c1、c2,然后分别用函数和函数输出这两个字符。并思考以下问题:(1)变量c1、c2应定义为字符型或整形?抑二者皆可?(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整形变量与字符变量是否在任何情况下都可以互相代替?如:charc1,c2;与intc1,c2;是否无条件的等价?#includestdio.hmain(){charc1,c2;c1=getchar();c2=getchar();putchar(c1);putchar('\n');putchar(c2);putchar('\n');}#includestdio.hmain(){charc1,c2;c1=getchar();c2=getchar();printf(c1=%dc2=%d\n,c1,c2);printf(c1=%cc2=%c\n,c1,c2);}第五章5.1什么是算术运算?什么是关系运算?什么是逻辑运算?解:略。5.2C语言中如何表示真和假?系统如何判断一个量的真和假?解:设有一个逻辑表达式,若其结果为真,则以1表示;若其结果为假,则以0表示。但是判断一个逻辑量的值时,以0代表真,以非0代表假。例如3&&5的值为真,系统给出3&&5的值为1。5.3写出下面各逻辑表达式的值。设a=3,b=4,c=5。(1)a+bc&&b==c(2)a||b+c&&b-c(3)!(ab)&&!c||1(4)!(x=a)&&(y=b)&&0(5)!(a+b)+c-1&&b+c/2解:(1)0(2)1(3)1(4)0(5)15.4有3个整数a、b、c,由键盘输入,输出其中最大的数。解:方法一#includestdio.hmain(){inta,b,c;printf(请输入3个整数:);scanf(%d,%d,%d,&a,&b,&c);if(ab)if(bc)printf(max=%d\n,c);elseprintf(max=%d\n,b);elseif(ac)printf(max=%d\n,c);elseprintf(max=%d\n,a);}方法二:使用条件表达式,可以使程序更加简明、清晰。程序如下:#includestdio.hmain(){inta,b,c,temp,max;printf(请输入3个整数:);scanf(%d,%d,%d,&a,&b,&c);temp=(ab)?a:b;/*将a和b中的大者存人temp中*/max=(tempc)?temp:c;/*将a和b中的大者与c比较,取最大者*/printf(3个整数的最大数是%d\n,max);}5.5有一函数:写一程序,输入x值,输出y值。解:#includestdio.hmain(){intx,y;printf(输入x:);scanf(%d,&x);if(x1)/*x1*/{y=x;printf(x=%3d,y=x=%d\n,x,y);}elseif(x10)/*1≤x-10*/{y=2*x-1;printf(x=%3d,y=2*x-1=%d\n,x,y);}else/*x≥10*/{y=3*x-11;printf(x=%3d,y=3*x-11=%d\n,x,y);}}5.6给一个百分制成绩,要求输出等级'A'、'B'、'C'、'D'、'E'。90分以上为'A',80~90分为'B',70~79分为'C',60分以下为'D'。解:程序如下:#includestdio.hmain(){floatscore;chargrade;printf(请输入学生成绩:);scanf(%f,&score);while(score100||(score0){printf(\n输入有误,请重新输入:);scanf(%f,&score);}switch((int)(score/10)){case10:case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;case5:case4:case3:case2:case1:case0:grade='E';}printf(成绩是%5.1f,相应的等级是%c。\n,score,grade);}说明:对输入的数据进行检查,如小于0或大于100,要求重新输入。(int)(score/10)的作用是将(score/10)的值进行强制类型转换,得到一个整型值。5.7给定一个不多于5位的正整数,要求:①求它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。例如原数为321,应输出123。解:#includestdio.hmain(){longintnum;intindiv,ten,hundred,thousand,ten_thousand,place;/*分¤?别Àe代䨲表À¨ª个?位?、¡é十º?位?、¡é百㨴位?、¡é千¡ì位?、¡é万ª¨°位?和¨ª位?数ºy*/printf(请?输º?入¨?一°?个?整?数ºy(ꡧ0~99999)ê?:êo);scanf(%ld,&num);while(num99999||num0)
本文标题:C语言程序设计第三版谭浩强习题答案集
链接地址:https://www.777doc.com/doc-2908270 .html