C语言课后答案(谭浩强 著)
- 格式:doc
- 大小:50.50 KB
- 文档页数:8
《C程序设计》课外作业及参考答案说明:(1)章节顺序按照PowerPoint电子教案;(2)教材上的作业注明了章节和题号;(3)所用教材是《C程序设计(第二版)》谭浩强清华大学出版社;第一章C语言概述1.1 简答题:写出C语言的主要特点(教材习题1.1)。
1.2填空题:1.C语言与操作系统并称“栾生兄弟”。
2.C语言俗称为形式。
3.C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。
1.3 单项选择题1. 以下说法中正确的是。
(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main函数中定义(C)C语言程序总是main函数开始(D)C语言程序中的main函数必须放在程序的开始部分2. 以下正确的C标识符是。
(A)_125 (B)C# (C)C++ (D)A$1.4 多项选择题1. 以下关于C语言的说法中,错误的是。
(A)俗称为“低级语言的高级形式”,因此功能简单(B)不是结构化程序设计语言(C)可能直接访问内存(D)语法限制不严2. 以下标识符属于C语言关键字的有。
(A)integer (B)else (C)include (D)while第二章C语言基本数据类型、变量、常量与表达式2.1简答题1.求下面算术表达式的值。
(教材习题3.9)a)x+a%3*(int)(x+y)%2/4设x=2.5, a=7, y=4.7b)(float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.52.写出下面程序的运行结果。
(教材习题3.10)main(){ int i, j, m, n;i=8; j=10; m=++i; n=j++;printf("%d,%d,%d,%d", i, j, m, n);}3.写出下面表达式运算后a的值,设原来a=12。
设a和n已定义为整型变量。
(教材习题3.12)a)a+=a b) a-=2 c) a*=2+3b)d) a/=a+a e) a%=(n%=2), n的值等于5 f) a+=a-=a*=a4.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.2 填空题1. 写出下面各逻辑表达式的值。
C语言程序设计第三版部分习题 (谭浩强著)清华大学出版社课后答案。
txtcopy(复制)别人的个性签名,不叫抄袭,不叫没主见,只不过是感觉对了。
遇到过的事一样罢了。
【习题1】一、简答题(在课本中寻找答案,略)1.1 C程序的基本结构包括哪些内容?1.2 如何定义标识符?1。
3 输入格式、输出格式的组成包括哪些内容?1.4 C语言函数分为哪两类?1。
5 计算表达式的值应该考虑哪些方面?1.6 上机调试程序的步骤如何?二、判断并改错1.7 C程序执行的入口是main()函数,所以main函数必须放在程序的开头.错误:main函数可以放在程序的任何位置.并不限定在程序的开头。
1。
8 定义一个函数包括数据说明部分和执行语句部分,两者可以交叉出现.错误:不可以交叉出现,数据说明部分在执行语句部分的前面。
1。
9 编辑与编译不是一回事。
错误:不是一回事。
编辑完成源程序的输入和修改;编译是对源程序进行语法检查,如果无语法错误,则生成目标程序。
1.10 scanf("%d,%d”,&x,&y);的正确输入格式:3,4<回车〉.正确1。
11 注释内容太多会影响程序的执行效率。
错误:不会影响程序的执行效率。
因为在编译时,编译系统将注释内容删除或用空格代替,所以注释内容不会编译到目标程序中.1.12 所有的数学公式可以直接出现在源程序中.错误:数学公式需要转换成C语言能够接受的公式才能出现在源程序中。
三、编程题1.13 在屏幕上输出自己名字的拼音.提示:中文名字叫“张三”,对应的拼音为“Zhang San”,输出用printf()函数。
1.14 输入圆的半径,求圆的周长,并将结果保留两位小数输出到屏幕上。
提示:定义圆的半径r,圆的周长:2*3.14*r,输出结果保留2位小数可以用%。
2f1。
15 输入两个整数,输出其中最大者。
提示:模仿例1。
31.16 输入三个整数,输出其中最小者.提示: min(min(a,b),c);【习题2】一、简答题(在课本中寻找答案,略)2.1 常量与变量的区别?2。
C语⾔程序设计第五版谭浩强课后答案(第⼆章答案)⽬录1. 什么是算法?试从⽇常⽣活中找3个例⼦,描述它们的算法2. 什么叫结构化的算法?为什么要提倡结构化的算法?3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点)。
4. ⽤传统流程图表⽰求解以下问题的算法。
5. ⽤N-S图表⽰第4题中各题的算法6. ⽤伪代码表⽰第4题中各题的算法7. 什么叫结构化程序设计?它的主要内容是什么?8. ⽤⾃顶向下、逐步细化的⽅法进⾏以下算法的设计:1. 什么是算法?试从⽇常⽣活中找3个例⼦,描述它们的算法算法:简⽽⾔之就是求解问题的步骤,对特定问题求解步骤的⼀种描述。
⽐如⽣活中的例⼦:考⼤学⾸先填报志愿表、交报名费、拿到准考证、按时参加考试、收到录取通知书、按照⽇期到指定学校报到。
去北京听演唱会⾸先在⽹上购票、然后按时坐车到北京,坐车到演唱会会场。
把⼤象放进冰箱先打开冰箱门,然后将⼤象放进冰箱,关冰箱。
2. 什么叫结构化的算法?为什么要提倡结构化的算法?结构化算法:由⼀些顺序、选择、循环等基本结构按照顺序组成,流程的转移只存在于⼀个基本的范围之内。
结构化算法便于编写,可读性⾼,修改和维护起来简单,可以减少程序出错的机会,提⾼了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。
3. 试述3种基本结构的特点,请另外设计两种基本结构(要符合基类结构的特点)。
结构化程序设计⽅法主要由以下三种基本结构组成:顺序结构:顺序结构是⼀种线性、有序的结构,它依次执⾏各语句模块选择结构:选择结构是根据条件成⽴与否选择程序执⾏的通路。
循环结构:循环结构是重复执⾏⼀个或⼏个模块,直到满⾜某⼀条件位置重新设计基本结构要满⾜以下⼏点:只有⼀个⼊⼝只有⼀个出⼝结构内的每⼀部分都有机会执⾏到结构内不存在死循环因此给出以下复习结构:while型和until型循环复合以及多选择结构4. ⽤传统流程图表⽰求解以下问题的算法。
C语言程序设计课后习题答案谭浩强第1章程序设计和C语言1什么是计算机程序1什么是计算机语言1语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5 #include <>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)< p="">max=b;if (max<c)< p="">max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示一个算法22用自然语言表示算法22用流程图表示算法22三种基本结构和改进的流程图26用N S流程图表示算法28用伪代码表示算法31用计算机语言表示算法32结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37顺序程序设计举例37数据的表现形式及其运算39常量和变量39数据类型42整型数据44字符型数据47浮点型数据49怎样确定常量的类型51运算符和表达式52语句57语句的作用和分类57最基本的语句——赋值语句59数据的输入输出65输入输出举例65有关数据输入输出的概念67用printf函数输出数据68用scanf函数输入数据75字符数据的输入输出78习题823-1 #include <>#include <>int main(){float p,r,n;r=;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <>#include <>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5; p=1000; r5=;r3=;r2=;r1=;r0=;p1=p*((1+r5)*5); #include <> #include <> int main(){float d=300000,p=6000,r=,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%\n",m);return 0;}3-4#include <>int main(){int c1,c2;c1=197;c2=198;printf("c1=%c,c2=%c\n",c1,c2);printf("c1=%d,c2=%d\n",c1,c2);return 0;3-5#include <>int main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d",&a,&b);scanf("%f %e",&x,&y);scanf("%c%c",&c1,&c2);printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c 2); return 0;}3-6#include <>int main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passwor is %c%c%c%c%c\n",c1,c2,c3,c4,c5);return 0;}#include <>int main (){float h,r,l,s,sq,vq,vz;float pi=;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h); #include <> int main() { int x,y;printf("输入x:");scanf("%d",&x);if(x<1) /* x<1 */{ y=x;printf("x=%3d, y=x=%d\n" ,x,y);}else if(x<10) /* 1=<x<="" p="">{ y=2*x-1;printf("x=%d, y=2*x-1=%d\n",x,y);}else /* x>=10 */{ y=3*x-11;printf("x=%d, y=3*x-11=%d\n",x,y);}return 0;}#include <>int main(){int x,y;printf("enter x:");scanf("%d",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y); return 0;}4-7-2#include <>int main(){int x,y;printf("please enter x:"); scanf("%d",&x);y=0;if(x>=0)if(x>0) y=1;else y=-1;printf("x=%d,y=%d\n",x,y); return 0;}4-8#include <>int main(){ float score;char grade;printf("请输入学生成绩:"); scanf("%f",&score);while (score>100||score<0) {printf("\n 输入有误,请重输"); scanf("%f",&score);}switch((int)(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0: grade='E';}printf("成绩是 %,相应的等级是%c\n ",score,grade); return 0;}4-9#include <>#include <>int main(){int num,indiv,ten,hundred,thousand,ten_thousand,place;位,万位和位数printf("请输入一个整数(0-99999):");scanf("%d",&num);if (num>9999)place=5;else if (num>999)place=4;else if (num>99) .=%d\n",sn);return 0;}5-6#include <>int main(){double s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%\n",s);return 0;}5-7#include <>int main(){int n1=100,n2=50,n3=10;double k,s1=0,s2=0,s3=0;for (k=1;k<=n1;k++) /*计算1到100的和*/{s1=s1+k;}for (k=1;k<=n2;k++) /*计算1到50各数的平方和*/ {s2=s2+k*k;}for (k=1;k<=n3;k++) /*计算1到10的各倒数和*/ {s3=s3+1/k;} printf("sum=%\n",s1+s2+s3);return 0;}5-8#include <>int main(){int i,j,k,n;printf("parcissus numbers are ");for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n==i*i*i + j*j*j + k*k*k)printf("%d ",n);}printf("\n");return 0;}5-9-1#define M 1000 /*定义寻找范围*/ #include <>int main(){int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=M;a++) /* a是2-1000之间的整数,检查它是否完数 */{n=0; /* n用来累计a的因子的个数 */s=a; /* s用来存放尚未求出的因子之和,开始时等于a */ for (i=1;i<="" p="" 检查i是否a的因子="">if (a%i==0) /* 如果i是a的因子 */{n++; /* n加1,表示新找到一个因子 */s=s-i; /* s减去已找到的因子,s的新值是尚未求出的因子之和 */ switch(n) /* 将找到的因子赋给k1...k9,或k10 */{case 1:k1=i; break; /* 找出的笫1个因子赋给k1 */case 2:k2=i; break; /* 找出的笫2个因子赋给k2 */case 3:k3=i; break; /* 找出的笫3个因子赋给k3 */case 4:k4=i; break; /* 找出的笫4个因子赋给k4 */case 5:k5=i; break; /* 找出的笫5个因子赋给k5 */case 6:k6=i; break; /* 找出的笫6个因子赋给k6 */case 7:k7=i; break; /* 找出的笫7个因子赋给k7 */case 8:k8=i; break; /* 找出的笫8个因子赋给k8 */case 9:k9=i; break; /*找出的笫9个因子赋给k9 */case 10:k10=i; break; /* 找出的笫10个因子赋给k10 */}}if (s==0){printf("%d ,Its factors are ",a);if (n>1) printf("%d,%d",k1,k2); /* n>1表示a至少有2个因子*/if (n>2) printf(",%d",k3); /* n>2表示至少有3个因子,故应再输出一个因子 */if (n>3) printf(",%d",k4); /* n>3表示至少有4个因子,故应再输出一个因子 */if (n>4) printf(",%d",k5); /* 以下类似 */if (n>5) printf(",%d",k6);if (n>6) printf(",%d",k7);if (n>7) printf(",%d",k8);if (n>8) printf(",%d",k9);if (n>9) printf(",%d",k10);printf("\n");}}return 0;}5-9-2#include <>int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)< p="">if ((m%i)==0) s=s+i;if(s==m){printf("%d,its factors are ",m); for (i=1;i<m;i++)< p=""> if (m%i==0) printf("%d ",i); printf("\n");}}return 0;}5-10#include <>int main(){int i,n=20;double a=2,b=1,s=0,t;for (i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%\n",s);return 0;}5-11#include <>int main(){double sn=100,hn=sn/2;int n;for (n=2;n<=10;n++){sn=sn+2*hn; /*第n次落地时共经过的米数*/ hn=hn/2; /*第n 次反跳高度*/}printf("第10次落地时共经过%f米\n",sn); printf("第10次反弹%f米\n",hn);return 0;}5-12#include <>int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; /*第1天的桃子数是第2天桃子数加1后的2倍.*/ x2=x1;day--;}printf("total=%d\n",x1);return 0;}5-13#include <>#include <>int main(){float a,x0,x1;printf("enter a positive number:");scanf("%f",&a);x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);printf("The square root of % is %\n",a,x1); return 0;}5-14#include <>#include <>int main(){double x1,x0,f,f1;x1=;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("The root of equation is %\n",x1); return 0;}5-15#include <>#include <>int main(){float x0,x1,x2,fx0,fx1,fx2;do{printf("enter x1 & x2:"); scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((2*x2-4)*x2+3)-6; }while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6; if ((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs (fx0)>=1e-5); printf("x=%\n",x0);return 0;}5-16#include <>int main(){int i,j,k;for (i=0;i<=3;i++){for (j=0;j<=2-i;j++)printf(" ");for (k=0;k<=2*i;k++)printf("*");printf("\n");}for (i=0;i<=2;i++){for (j=0;j<=i;j++)printf(" ");for (k=0;k<=4-2*i;k++)printf("*");printf("\n");}return 0;}5-17#include <>int main(){char i,j,k; /*是a的对手;j是b的对手;k是c的对手*/ for (i='x';i<='z';i++)for (j='x';j<='z';j++)if (i!=j)for (k='x';k<='z';k++) if (i!=k && j!=k)</m;i++)<></m;i++)<></x</c)<></b)<>。
C语言设计课后习题答案(谭浩强第三版)1.5请参照本章例题,编写一个C程序,输出以下信息:************Very Goodj!************解:main(){printf(" ************ \n");printf("\n");printf(" Very Good! \n");printf("\n");printf(" ************\n");}1.6编写一个程序,输入a b c三个值,输出其中最大者。
解:main(){int a,b,c,max;printf("请输入三个数a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("最大数为:%d",max);}第三章3.3 请将下面各数用八进制数和十六进制数表示:(1)10 (2)32 (3)75 (4)-617(5)-111 (6)2483 (7)-28654 (8)21003解:十八十六(10)=(12)=(a)(32)=(40)=20(75)=(113)=4b(-617)=(176627)=fd97-111=177621=ff912483=4663=963-28654=110022=901221003=51013=520b3.5字符常量与字符串常量有什么区别?解:字符常量是一个字符,用单引号括起来。
字符串常量是由0个或若干个字符而成,用双引号把它们括起来,存储时自动在字符串最后加一个结束符号'\0'.3.6写出以下程序的运行结果:#include<stdio.h>void main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116';printf("a%c b%c\tc%c\tabc\n",c1,c2,c3);printf("\t\b%c %c\n",c4,c5);解:程序的运行结果为:aabb cc abcA N3.7将"China"译成密码.密码规律:用原来的字母后面第4个字母代替原来的字母,例如,字母"A"后面第4个字母是"E",用"E"代替"A".因此,"China"应译为"Glmre".请编一程序,用赋初值的议程使c1,c2,c3,c4,c5分别变成'G','1','m','r','e',并main(){char c1="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);}3.8例3.6能否改成如下:#include<stdio.h>void main(){int c1,c2;(原为char c1,c2)c1=97;c2=98;printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}解:可以.因为在可输出的字符范围内,用整型和字符型作用相同.3.9求下面算术表达式的值.(1)x+a%3*(int)(x+y)%2/4=2.5(x=2.5,a=7,y=4.7)(2)(float)(a+b)/2+(int)x%(int)y=3.5(设a=2,b=3,x=3.5,y=2.5)3.10写出下面程序的运行结果:#include<stdio.h>void main(){int i,j,m,n;i=8;j=10;m=++i;n=j++;printf("%d,%d,%d,%d\n",i,j,m,n);}解:结果: 9,11,9,104.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.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1='a' or 97(ASCII)c2='B' or 98(ASCII)解:main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y=z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c' or %d(ASCII)\n",c1,c2);printf("c2='%c' or %d(ASCII)\n",c2,c2);}4.5请写出下面程序的输出结果.结果:575 767.856400,-789.12396267.856400 ,-789.12396267.86,-789.12,67.856400,-789.123962,67.856400,-789.1239626.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,17777,ffff,-1COMPUTER, COM4.6用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a',问在键盘上如何输入?main(){int a,b;float x,y;char c1,c2;scanf("a=%d b=%d,&a,&b);scanf(" x=%f y=%e",&x,&y);scanf(" c1=%c c2=%c",&c1,&c2);}解:可按如下方式在键盘上输入:a=3 b=7x=8.5 y=71.82c1=A c2=a说明:在边疆使用一个或多个scnaf函数时,第一个输入行末尾输入的"回车"被第二个scanf函数吸收,因此在第二\三个scanf函数的双引号后设一个空格以抵消上行入的"回车".如果没有这个空格,按上面输入数据会出错,读者目前对此只留有一初步概念即可,以后再进一步深入理解.4.7用下面的scanf函数输入数据使a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=57.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f %f",&a,&b,&c1,&c2,&y,&z);解:main(){int a,b;float x,y,z;char c1,c2;scanf("%5d%5d%c%c%f%f",&a,&b,&c1,&c2,&x,&y,&z);}运行时输入:10 20Aa1.5 -3.75 +1.5,67.8注解:按%5d格式的要求输入a与b时,要先键入三个空格,而后再打入10与20。
《C程序设计》课外作业及参考答案说明:(1)章节顺序按照PowerPoint电子教案;(2)教材上的作业注明了章节和题号;(3)所用教材是《C程序设计(第二版)》谭浩强清华大学出版社;第一章C语言概述1.1 简答题:写出C语言的主要特点(教材习题1.1)。
1.2填空题:1.C语言与操作系统并称“栾生兄弟”。
2.C语言俗称为形式。
3.C源程序文件经过处理后产生目标文件,目标文件经处理后生成可执行文件。
1.3 单项选择题1. 以下说法中正确的是。
(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main函数中定义(C)C语言程序总是main函数开始(D)C语言程序中的main函数必须放在程序的开始部分2. 以下正确的C标识符是。
(A)_125 (B)C# (C)C++ (D)A$1.4 多项选择题1. 以下关于C语言的说法中,错误的是。
(A)俗称为“低级语言的高级形式”,因此功能简单(B)不是结构化程序设计语言(C)可能直接访问内存(D)语法限制不严2. 以下标识符属于C语言关键字的有。
(A)integer (B)else (C)include (D)while第二章C语言基本数据类型、变量、常量与表达式2.1简答题1.求下面算术表达式的值。
(教材习题3.9)a)x+a%3*(int)(x+y)%2/4设x=2.5, a=7, y=4.7b)(float)(a+b)/2+(int)x%(int)y设a=2, b=3, x=3.5, y=2.52.写出下面程序的运行结果。
(教材习题3.10)main(){ int i, j, m, n;i=8; j=10; m=++i; n=j++;printf("%d,%d,%d,%d", i, j, m, n);}3.写出下面表达式运算后a的值,设原来a=12。
设a和n已定义为整型变量。
(教材习题3.12)a)a+=a b) a-=2 c) a*=2+3b)d) a/=a+a e) a%=(n%=2), n的值等于5 f) a+=a-=a*=a4.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?2.2 填空题1. 写出下面各逻辑表达式的值。
C语⾔程序设计第三版谭浩强课后习题答案完整版C语⾔程序设计第三版谭浩强课后习题答案完整版第⼀章1.5请参照本章例题,编写⼀个C程序,输出以下信息:**************************值,输出其中最⼤值。
解:mian(){int a,b,c,max;printf(“请输⼊三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(maxmax=b;if(maxmax=c;\1aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc Aㄩ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’,并输{是%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.5设量。
(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=c1=c2=printf("a=%2d b=%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=%6ld n=%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)"); }ˊA ˊ,;); 4.8设圆半径r=1.5,圆柱⾼h=3,求圆周长、圆⾯积、圆球表⾯积、圆球体积、圆柱体积。
c程序设计第四版谭浩强课后答案谭浩强的《C程序设计》第四版是一本广泛使用的C语言教材,它详细介绍了C语言的基本概念和编程技巧。
课后答案对于学习者来说是一个重要的参考资源,可以帮助他们检验自己的学习成果和理解程度。
以下是一些可能的课后答案的概述,但请注意,由于具体问题和答案可能因版本和出版社的不同而有所变化,以下内容仅供参考。
第一章:C语言概述- 问题1:C语言的主要特点是什么?答案:C语言是一种结构化语言,具有高级语言的特点,同时具备汇编语言的许多功能。
它具有可移植性、简洁性、高效性等特点。
- 问题2:C语言的发展历史是什么?答案:C语言由丹尼斯·里奇在20世纪70年代初期开发,最初用于UNIX操作系统的编写。
随着UNIX操作系统的普及,C语言也逐渐流行起来。
第二章:数据类型、运算符和表达式- 问题1:C语言中的基本数据类型有哪些?答案:C语言中的基本数据类型包括整型(int)、字符型(char)、浮点型(float)和双精度型(double)。
- 问题2:什么是运算符优先级?答案:运算符优先级决定了在表达式中不同运算符的执行顺序。
例如,乘法和除法的优先级高于加法和减法。
第三章:控制语句- 问题1:C语言中的控制语句有哪些?答案:C语言中的控制语句包括条件语句(if、switch)、循环语句(for、while、do-while)和跳转语句(break、continue、return、goto)。
- 问题2:for循环的基本结构是什么?答案:for循环的基本结构是:```cfor (初始化表达式;条件表达式;迭代表达式) {// 循环体}```第四章:数组- 问题1:一维数组的声明和初始化方式有哪些?答案:一维数组的声明方式是指定数组名和数据类型,初始化方式可以是静态初始化或动态初始化。
- 问题2:多维数组与一维数组有什么区别?答案:多维数组可以看作是数组的数组,具有多个索引维度,而一维数组只有一个索引维度。
C语言程序设计-第三版-谭浩强主编第6—8章课后习题答案第六章循环语句6.1输入两个正数,求最大公约数和最小公倍数.#includevoidmain(){inta,b,num1,num2,temp;printf(\请输入两个正整数:\\n\canf(\if(num1temp=num1;num1=num2;num2=temp;}a=num1,b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf(\它们的最大公约数为:%d\\n\printf(\它们的最小公倍数为:%d\\n\}编译已通过6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数.解:#includevoidmain(){charc;intletter=0,pace=0,degit=0,other=0;printf(\请输入一行字符:\\n\while((c=getchar())!='\\n'){if(c>='a'&&c<='z'||c>'A'&&c<='Z')letter++;eleif(c=='')pace++;eleif(c>='0'&&c<='9')digit++;eleother++;}printf(\其中:字母数=%d空格数=%d数字数=%d其它字符数=%d\\n\digit,other);}6.3求(n)=a+aa+aaa++aaa之值,其中a是一个数字,n表示a的位数。
解:voidmain(){inta,n,count=1,n=0,tn=0;printf(\请输入a和n的值:\\n\canf(\printf(\while(count<=n){tn=tn+a;n=n+tn;a=a某10;++count;}printf(\\\n\}6.4求(即1+2!+3!+4!++20!)voidmain(){floatn,=0,t=1;for(n=1;n<=20;n++){t=t某n;=+t;}printf(\\\n\}阶乘利用递归,再求和:#includeuingnamepacetd;longFunc(intn){ if(1==n)returnn;if(n>1)returnn某Func(n-1);}main(){long=0;inti=1;while(i<=6){=+Func(i);i++;}cout<6.5求voidmain(){intk,N1=100,N2=50,N3=10;float1=0.0,2=0.0,3=0.0;for(k=1;k<=N1;k++)/某计算1到100的和某/{1=1+k;}for(k=1;k<=N2;k++)/某计算1到50各数平方和某/{2=2+k某k;}for(k=1;k<=N3;k++)/某计算1到10各数倒数之和某/{3=3+1.0/k;}printf(\总和=%8.2f\\n\}已通过intmain(){intk=1,i=11,j=51;float=0.0;while(k<=10){=+k+k某k+1.0/k;while(k==10&&i<=50){=+i+i某i;while(i=50&&j<=100){ =+j;j++;}i++;}k++;}}6.6所谓“水仙开数”是指一个3位数,其个位数字立方和等于该数本身。
(完整)C语言程序设计第三版谭浩强课后习题答案完整版C语言程序设计第三版谭浩强课后习题答案完整版第一章1。
5请参照本章例题,编写一个C程序,输出以下信息:************************** Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1。
6 编写一个程序,输入a、b、c三个值,输出其中最大值。
解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c); max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d",max);}第三章3.6写出以下程序运行的结果。
main(){char c1=’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语言程序设计第三版谭浩强课后习题答案完整版为,'C'、’h'、’i’、'n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、'm’、'r’、’e’,并输出。
1.MP3播放机容量减少、无法在电脑上格式化、不能开机的解决办法。
解决办法:先把本机SW1置于OFF起始状态(U盘状态),然后按住大圆键不放,在按住大圆键KYE2的同时再将SW1推至播放状态,并一直按住大圆键10秒以上不放,此时LED 灯显示为双色灯同时亮,放开大圆键,等待大约2分钟后,绿灯熄灭后表示低格结束。
再重新拷入歌曲,即可恢复听歌。
2.MP3播放机中有歌曲,但是有的歌曲无法播放,或者播放到某一首歌就死机。
解决办法:请检查MP3歌曲是否为标准格式,有的MP3歌曲虽然在电脑上可以播放,但在MP3播放机上却薹úシ拧R蛭狹P3播放机对MP3格式要求严格,请更换标准格式的MP3歌曲文件。
3.MP3播放机中有歌曲,但是全部不能播放。
解决办法:请在电脑上选择用FAT格式来格式化MP3播放机。
如果误采用FAT32或者NTFS 格式来格式化MP3播放机,就可造成MP3播放机无法播放歌曲的故障。
4.播放MP3歌曲噪音特别大。
解决办法:现在MP3歌曲很多都是直接从盗版MP3歌碟上拷贝出来,由于盗版MP3歌碟制作水平不一,里面的很多歌曲都存在明显的噪音。
最好的办法是直接用电脑转录音乐CD 为MP3格式,再复制到MP3播放机中欣赏。
或者先在电脑上试听一边MP3文件,确定没有背景噪音再将文件复制到MP3播放机上。
5.MP3播放机开机就马上关机,或者无法开机解决办法:请把MP3播放机连接到电脑USB端口或者专用充电器上充电(大约充电3~5小时)。
再开机看是否正常。
采用5号或者7号电池的产品,请更换新电池试试。
请经销商注意,新到货的MP3播放机付送的5号或者7号电池有可能没有电,请自己准备电量充足的电池试用!6.MP3播放机不能和电脑联机。
解决办法:1.请更换USB连接电缆,再测试。
2.请确保电脑USB端口已经打开。
3.在WIN98下请正确安装随机驱动程序。
7.MP3播放机播放歌曲不正常,程序混乱。
解决办法:请安装随机应用软件,然后使用随机软件提供的UPDATE功能重写一下MP3播放机的芯片,然后用随机软件提供的FORMA T功能格式化一下MP3播放机的内存。
8.MP3歌曲播放次序乱跳,或者播放时突然中断0.5秒,然后又继续播放。
解决办法:请格式化MP3播放机,重新复制歌曲进去。
9.MP3播放机连接电脑有时候可以找到,有时候不能找到。
解决办法:MP3播放机从电脑上拔出的时候,WIN98下请使用“弹出”功能再拔出,WINME/2000下请使用右下角的“拔下或弹出硬件”功能再拔出。
XP中为“安全删除硬件”。
mp3故障现象原因解决方法mp3不能开机:电池没电、电池没正确安装解决方法:更换电池、正确安装电池mp3没有声音:耳机没接好、音量调至最低解决方法:接好耳机、调节音量mp3与计算机连接不上:没接好解决方法:正确连接,重新拨插mp3开机后马上关机了:电池电量太低解决方法:更换新电池即可mp3无法工作,无法播放MP3音乐:MP3文件格式不对,解决方法:转换格式mp3格式化的方法把MP3接到电脑上,然后在MP3中建立一个名字叫@erase的目录,然后重新拨出和插入MP3到电脑的接口,这时,MP3就会自动格式化,可以看到,MP3的指示灯在不停的闪烁,等闪烁停止,表示格式化完成。
MP3播放机容量减少,不能开机听歌的解决办法。
先把本机SW1置于OFF起始状态(U盘状态),然后按住大圆键不放,在按住大圆键KYE2的同时再将SW1推至播放状态,并一直按住大圆键10秒以上不放,此时LED灯显示为双色灯同时亮,大约2分钟后,绿灯熄灭后表示低格结束。
再重新拷入歌曲,即可恢复听歌。
(适用于金点甲壳虫、子弹头系列)解决Mp3播放器不能识别文件的故障近日,一个朋友碰到一件很奇怪的事情:有一些mp3文件拷到mp3播放器内不能播放,在电脑里面却能够正常播放,而且显示的属性也是mp3文件类型。
经过笔者的了解,发现了问题所在:这些文件是通过豪杰超级解霸所带的mp3数字抓轨工具从CD上抓取的。
但是,在抓取音轨的选项中,都是采用系统默认的方式,而压缩方法的默认值是“方法二(最快)”,于是,造成了压缩出来的文件并不是标准的mp3文件,在电脑上能正常播放,却不被mp3播放器所识别。
解决方法也很简单,就是利用超级解霸的mp3格式转换器,把刚才生成的mp3文件再转换一次,在设置选项中,把压缩层次设为第三层(如图)。
再拷到mp3播放器里,果然又听到了熟悉的旋律。
其实,除了压缩层次,频率和位率也是需要注意的。
例如有的播放器只支持128Kbps 的位率,如果在压缩的时候选择了320Kbps的位率,结果当然是被播放器所拒绝喽!所以,各位在进行数字抓轨时,一定要先研究一下播放器的说明书,了解自己的播放器的“脾气”,然后在压缩时才能选择适当的参数,既保持尽可能高的音质,又让自己的爱机能够认同。
1.问:电脑为什么不能识别MP3?答:没有正确连接。
或MP3没有开机。
或固件版本不对,或电脑USB口故障(机械损坏,供电不足等)。
或电脑操作系统故障,最好重现启动或安装系统软件。
或是驱动安装失败,不能正确识别MP3。
或MP3硬件存在故障。
2.问:为什么MP3会自动关机?答:首先明确电池是否充足,如果电量不足肯定会自动关机。
其次是了解附近是否有电磁或静电干扰,闪光灯及人体内所携带的静电都有可能使MP3播放机停止工作。
3.问:为什么在网上下的wma不能播放?答:因为wma文件的版权保护,有破解软件,但是并不完善,建议自行制作wma。
在使用WMP(win dowsmediaplayer)制作wma时,注意不要选择版权保护。
4.问:为什么超级解霸制作的MP3无法播放?答:超级解霸制作的实际上是MP3文件名的MP2文件,部分MP3机无法识别这种文件,在播放时会发生死机,跳过歌曲等问题。
5.问:为什么播放MP3时会出现跳过、死机的现象?答:因为某些MP3文件和MP3机支持的范围不同,容易出现跳过、死机的现象,一般有几个原因:采用率不对,一般是44.1KHz,有时48KHz的文件就不能用;压缩率,如果MP3机不支持该MP3的压缩率(太高或太低);VBR不支持;还有一个容易出现的问题,就是一些文件采用超级解霸压缩而来,默认的是压缩成MP2格式的,但显示的是MP3格式,大部分MP3机都不支持。
6.问:为什么合并了WMI歌词库里的歌词文件后会出现乱码?答:请在歌词制作软件MEDIASYNC中选择语言为简体中文。
7.问:为什么进入未完成下载任务的文件夹时出现死机?答:由于下载没有顺利完成会造成机器内数据结构的混乱,此时可能会产生多余无用的文件,同时造成机器的死机,建议重新开机并格式化内置闪存。
1、为什么有些MP3歌曲在本MP3播放器不能播放?答:标准MP3歌曲是指MPEGI第三层、MPEG2第三层、MPEG2.5第三层的歌曲。
其它MPEG1第二层等虽然也是以MP3为后缀名,但都不是标准的MP3歌曲,不能在本机上播放。
用户可以在电脑上用相关驱动程序进去转换。
2、为什么在操作系统上显示存储容量与标称值不一致?答:因为MP3播放机的机内软件会用去存储器中的一小部分空间,所以在操作系统中显示的存储器容量会少与标称值,这是符合有关标准的。
3、关于W A V格式答:当您的MP3播放器只支持IMA ADPCM格式的WA V文件时,如果您希望用MP3存放其它格式的W A V,请在可移动硬盘中新建一个文件夹,然后把W A V文件放到该新建文件夹中存放。
请不要把其它格式的W A V放到可移动硬盘的根目录和VOICE文件夹中,否则当播放到该W A V文件时,将可能造成死机现象。
4、为什么MP3播放器反映速度会变慢?答:因为MP3播放器长时间使用或做频繁的文件删除后,其内部闪存可能会出现碎片(类似于硬盘的碎片),而导致速度变慢。
解决办法:用专用软件把闪存格式化,便可以很好地解决问题。
5、有些MP3播放器使用普通7号电池可正常工作,但用7号充电电池则无法工作或根本打不开电源,这是为何?答:充电电池的标准电压为1.2V,而一般的碱性电池电压为1.5V。
一般的MP3用充电电池也是没有问题的,你可以换其他充电电池试试,看看你的MP3是不是支持充电电池。
通常MP3是可以使用1.2V的充电电池的,只不过电量会显示不准确。
6、什么是“直接编码”功能?答:“直接编码”功能就是可将任何声源直接编码,能够在没有PC的情况下创建mp3文件。
例如你有大量的CD音乐,可将CD上的歌曲分别作为mp3文件保存。
此外,通过直接编码录制的声音和FM广播可以直接转换成mp3文件。
7、如果MP3播放器的机被软件被破坏了怎么办?答:这是由于不正常操作造成的。
可对软件进行升级、恢复。
8、如果MP3播放器出现异常(如死机)怎么办?答:就目前来看,当机器开启不了时90%以上的原因是由于用户的各类误操作导致MP3内部的固件(Firmware)损坏造成的。
因此只要对其进行重新格式化并写入Firmware就可。
可将电池拿下,按住播放键不放,连上电脑,运行驱动程序,然后进行格式化及固件升级即可。
9、MP3播放器长时间未被使用,当再次被使用时无法开机怎么办?答:为保证锂电池的使用寿命,当电池电量过低或出现异常断电时,锂电池将被保护,故无法开机。
此时只要把MP3播放器插到电脑USB端口或专用充电器上,充电后便可正常使用了。
10、用户误用Windows的格式化程序对MP3进行格式化,此时开机时屏幕上会显示“!Media Error”,随后会自动关机!答:解决方法:只要重新用MS-5511/5512的驱动程序进行格式化就可以了!11、用户用光盘自带的驱动进行升级后,只能显示繁体中文?答:解决方法:上网下载简体中文的固件,然后照上面的步骤重新升级并格式化就可以了!12、用户升级到一半,因为意外原因突然终止,导致机器无法开启,这是为什么?解决方法:将电池拿下,按住播放键不放,连上电脑,运行驱动程序,然后进行格式化及固件升级即可。
13、为什么完好的WMA文件在MP3播放器上无法播放,而说明书上却说是可以兼容的?答:部分WMA文件有DRM(数码权利管理)标签格式的版权保护。
他们有效地锁定音乐,使这些乐曲只能在你的电脑上播放,要使他们能在你的MP3播放器上播放,则必须用Windows Media Player 下载音乐。
14、MP3播放器在使用过程中为何经常出现跳过歌曲及死机现象?答:跳过歌曲的现象在MP3播放器当中十分普遍,其中大多数都是因为所播放音乐的压缩格式出现了问题或采样率不对,导致播放器不能正确识别,最终跳过或死机。
另外,有些机型的芯片本身就存在问题,因此在非常规操作状态下出现死机也比较正常,一般机身不显著部位都会有RESET按键,可通过该按键重新启动。