当前位置:文档之家› C语言程序设计(谭浩强)第四版_课后答案精讲

C语言程序设计(谭浩强)第四版_课后答案精讲

C语言程序设计(谭浩强)第四版_课后答案精讲
C语言程序设计(谭浩强)第四版_课后答案精讲

第一章程序设计和C语言【第15页】

1-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

max=b;

if (max

max=c;

printf("The largest number is %d\n",max);

return 0;

}

第2章算法——程序的灵魂【第36页】暂无答案

第3章最简单的C程序设计——顺序程序设计【第82页】3-1

#include

#include

int main()

{float p,r,n;

r=0.1;

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=0.0585;

r3=0.054;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%f\n",p1); // 输出按第1方案得到的本息和

printf("p2=%f\n",p2); // 输出按第2方案得到的本息和

printf("p3=%f\n",p3); // 输出按第3方案得到的本息和

printf("p4=%f\n",p4); // 输出按第4方案得到的本息和

printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

return 0;

}

3-2-2

#include

#include

int main()

{double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r5=0.0585;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%f\n",p1); // 输出按第1方案得到的本息和

printf("p2=%f\n",p2); // 输出按第2方案得到的本息和

printf("p3=%f\n",p3); // 输出按第3方案得到的本息和

printf("p4=%f\n",p4); // 输出按第4方案得到的本息和

printf("p5=%f\n",p5); // 输出按第5方案得到的本息和

return 0;

}

3-2-3

#include

#include

int main()

{float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;

p=1000;

r3=0.054;

r2=0.0468;

r1=0.0414;

r0=0.0072;

p1=p*((1+r5)*5); // 一次存5年期

p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期

p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期

p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。活期利息每一季度结算一次

printf("p1=%10.2f\n",p1); // 输出按第1方案得到的本息和

printf("p2=%10.2f\n",p2); // 输出按第2方案得到的本息和

printf("p3=%10.2f\n",p3); // 输出按第3方案得到的本息和

printf("p4=%10.2f\n",p4); // 输出按第4方案得到的本息和

printf("p5=%10.2f\n",p5); // 输出按第5方案得到的本息和

return 0;

}

3-3.

#include

#include

int main()

{float d=300000,p=6000,r=0.01,m;

m=log10(p/(p-d*r))/log10(1+r);

printf("m=%6.2f\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,c2);

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;

}

3-7

#include

int main ()

{float h,r,l,s,sq,vq,vz;

float pi=3.141526;

printf("请输入圆半径r,圆柱高h∶");

scanf("%f,%f",&r,&h); //要求输入圆半径r和圆柱高h l=2*pi*r; //计算圆周长l

s=r*r*pi; //计算圆面积s

sq=4*pi*r*r; //计算圆球表面积sq

vq=3.0/4.0*pi*r*r*r; //计算圆球体积vq

vz=pi*r*r*h; //计算圆柱体积vz

printf("圆周长为: l=%6.2f\n",l);

printf("圆面积为: s=%6.2f\n",s);

printf("圆球表面积为: sq=%6.2f\n",sq);

printf("圆球体积为: v=%6.2f\n",vq);

printf("圆柱体积为: vz=%6.2f\n",vz);

return 0;

}

3-8-1

#include

int main()

{

int c1,c2; //整型定义

printf("请输入两个整数c1,c2:");

scanf("%d,%d",&c1,&c2);

printf("按字符输出结果:\n");

printf("%c,%c\n",c1,c2);

printf("%d,%d\n",c1,c2);

return 0;

}

3-8-2

#include

int main()

{

char c1,c2; //定义字符型变量

int i1,i2; //定义整型变量

printf("请输入两个字符c1,c2:");

scanf("%c,%c",&c1,&c2);

i1=c1; //赋值给整型变量

i2=c2;

printf("按字符输出结果:\n");

printf("%c,%c\n",i1,i2);

printf("按整数输出结果:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8-3

#include

int main()

{

char c1,c2; //定义为字符型

int i1,i2; //定义为整型

printf("请输入两个整数i1,i2:");

scanf("%d,%d",&i1,&i2);

c1=i1; //将整数赋值给字符变量c2=i2;

printf("按字符输出结果:\n");

printf("%c,%c\n",c1,c2);

printf("按整数输出结果:\n");

printf("%d,%d\n",c1,c2);

return 0;

}

3-8

#include

int main()

{

char c1,c2;

printf("请输入两个字符c1,c2:");

c1=getchar();

c2=getchar();

putchar(c1);

putchar(c2);

printf("\n");

printf("用printf语句输出结果为:");

printf("%c %c\n",c1,c2);

return 0;

}

第4章选择结构程序设计【第111页】

4-4-1

#include

int main()

{

int a,b,c;

printf("请输入三个整数:");

scanf("%d,%d,%d",&a,&b,&c);

if (a

if (b

printf("max=%d\n",c);

else

printf("max=%d\n",b);

else if (a

printf("max=%d\n",c);

else

printf("max=%d\n",a);

return 0;

}

4-4-2

#include

int main()

{ int a,b,c,temp,max;

printf("请输入三个整数:");

scanf("%d,%d,%d",&a,&b,&c);

temp=(a>b)?a:b; /*将a和b中的大者存入temp中*/

max=(temp>c)?temp:c; /*将a和b中的大者与c比较,取最大者*/ printf("三个整数的最大数是%d\n",max);

return 0;

}

4-5-2

#include

#include

#define M 1000

int main()

{

int i,k;

printf("请输入一个小于%d的整数i:",M);

scanf("%d",&i);

while (i>M)

{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);

scanf("%d",&i);

}

k=sqrt(i);

printf("%d的平方根的整数部分是:%d\n",i,k);

return 0;

}

4-5

#include

#include

#define M 1000

int main()

{

int i,k;

printf("请输入一个小于%d的整数i:",M);

scanf("%d",&i);

if (i>M)

{printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);

scanf("%d",&i);

}

k=sqrt(i);

printf("%d的平方根的整数部分是:%d\n",i,k);

return 0;

}

4-6.

#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=

{ 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;

}

4-7-1

#include

int main()

{

int x,y;

printf("enter x:");

scanf("%d",&x);

y=-1;

if(x!=0)

if(x>0)

y=1;

else

y=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("成绩是%5.1f,相应的等级是%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)

place=3;

else if (num>9)

place=2;

else place=1;

printf("位数:%d\n",place);

printf("每位数字为:");

ten_thousand=num/10000;

thousand=(int)(num-ten_thousand*10000)/1000;

hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;

ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;

indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);

switch(place)

{case 5:printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);

break;

case 4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d%d\n",indiv,ten,hundred,thousand);

break;

case 3:printf("%d,%d,%d",hundred,ten,indiv);

printf("\n反序数字为:");

printf("%d%d%d\n",indiv,ten,hundred);

break;

case 2:printf("%d,%d",ten,indiv);

printf("\n反序数字为:");

printf("%d%d\n",indiv,ten);

break;

case 1:printf("%d",indiv);

printf("\n反序数字为:");

printf("%d\n",indiv);

break;

}

return 0;

}

4-10-1

#include

int main()

{

int i;

double bonus,bon1,bon2,bon4,bon6,bon10;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+100000*0.05;

bon6=bon4+100000*0.03;

bon10=bon6+400000*0.015;

printf("请输入利润i:");

scanf("%d",&i);

if (i<=100000)

bonus=i*0.1;

else if (i<=200000)

bonus=bon1+(i-100000)*0.075;

else if (i<=400000)

bonus=bon2+(i-200000)*0.05;

else if (i<=600000)

bonus=bon4+(i-400000)*0.03;

else if (i<=1000000)

bonus=bon6+(i-600000)*0.015;

else

bonus=bon10+(i-1000000)*0.01;

printf("奖金是: %10.2f\n",bonus);

return 0;

}

4-10-2

#include

int main()

{

int i;

double bonus,bon1,bon2,bon4,bon6,bon10;

int branch;

bon1=100000*0.1;

bon2=bon1+100000*0.075;

bon4=bon2+200000*0.05;

bon6=bon4+200000*0.03;

bon10=bon6+400000*0.015;

printf("请输入利润i:");

scanf("%d",&i);

branch=i/100000;

if (branch>10) branch=10;

switch(branch)

{ case 0:bonus=i*0.1;break;

case 1:bonus=bon1+(i-100000)*0.075;break;

case 2:

case 3: bonus=bon2+(i-200000)*0.05;break;

case 4:

case 5: bonus=bon4+(i-400000)*0.03;break;

case 6:

case 7:

case 8:

case 9: bonus=bon6+(i-600000)*0.015;break;

case 10: bonus=bon10+(i-1000000)*0.01;

}

printf("奖金是%10.2f\n",bonus);

return 0;

}

4-11

#include

int main()

{int t,a,b,c,d;

printf("请输入四个数:");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

if (a>b)

{ t=a;a=b;b=t;}

if (a>c)

{ t=a;a=c;c=t;}

if (a>d)

{ t=a;a=d;d=t;}

if (b>c)

{ t=b;b=c;c=t;}

if (b>d)

{ t=b;b=d;d=t;}

if (c>d)

{ t=c;c=d;d=t;}

printf("排序结果如下: \n");

printf("%d %d %d %d \n" ,a,b,c,d);

return 0;

}

4-12

#include

int main()

{

int h=10;

float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;

printf("请输入一个点(x,y):");

scanf("%f,%f",&x,&y);

d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); /*求该点到各中心点距离*/

d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);

d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);

d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);

if (d1>1 && d2>1 && d3>1 && d4>1) h=0; /*判断该点是否在塔外*/

printf("该点高度为%d\n",h);

return 0;

}

第5章循环结构程序设计【第140页】

5-2

#include

#include // 程序中用到数学函数fabs,应包含头文件math.n int main()

{

int sign=1,count=0; // sign用来表示数值的符号,count用来统计循环次数double pi=0.0,n=1.0,term=1.0; // pi开始代表多项式的值,最后代表π的值, n代表分母,term代表当前项的值

while(fabs(term)>=1e-8) // 检查当前项term的绝对值是否大于或等于10的(-6)次方

pi=pi+term; // 把当前项term累加到pi中

n=n+2; // n+2是下一项的分母

sign=-sign; // sign代表符号,下一项的符号与上一项符号相反term=sign/n; // 求出下一项的值term

count++; // count累加1

}

pi=pi*4; // 多项式的和pi乘以4,才是π的近似值

printf("pi=%10.8f\n",pi); // 输出π的近似值

printf("count=%d\n",count); // 输出循环次数

return 0;

}

5-3

#include

int main()

{

int p,r,n,m,temp;

printf("请输入两个正整数n,m:");

scanf("%d,%d,",&n,&m);

if (n

{

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=0)

{

r=n%m;

n=m;

m=r;

}

printf("它们的最大公约数为:%d\n",n);

printf("它们的最小公约数为:%d\n",p/n);

return 0;

}

5-4

#include

int main()

{

char c;

int letters=0,space=0,digit=0,other=0;

printf("请输入一行字符:\n");

while((c=getchar())!='\n')

if (c>='a' && c<='z' || c>='A' && c<='Z')

letters++;

else if (c==' ')

space++;

else if (c>='0' && c<='9')

digit++;

else

other++;

}

printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);

return 0;

}

5-5

#include

int main()

{

int a,n,i=1,sn=0,tn=0;

printf("a,n=:");

scanf("%d,%d",&a,&n);

while (i<=n)

{

tn=tn+a; /*赋值后的tn为i个a组成数的值*/

sn=sn+tn; /*赋值后的sn为多项式前i项之和*/

a=a*10;

++i;

}

printf("a+aa+aaa+...=%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!=%22.15e\n",s);

return 0;

}

#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=%15.6f\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

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

if ((m%i)==0) s=s+i;

if(s==m)

{printf("%d,its factors are ",m);

for (i=1;i

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=%16.10f\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 %5.2f is %8.5f\n",a,x1);

return 0;

}

5-14

#include

#include

int main()

{double x1,x0,f,f1;

x1=1.5;

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 %5.2f\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=%6.2f\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)

if (i!='x' && k!='x' && k!='z')

printf("A--%c\nB--%c\nC--%c\n",i,j,k);

return 0;

}

第6章利用数组处理批量数据【第168页】

6-1

#include

#include

int main()

{int i,j,n,a[101];

for (i=1;i<=100;i++)

a[i]=i;

a[1]=0;

for (i=2;i

for (j=i+1;j<=100;j++)

{if(a[i]!=0 && a[j]!=0)

if (a[j]%a[i]==0)

a[j]=0;

}

printf("\n");

for (i=2,n=0;i<=100;i++)

{ if(a[i]!=0)

{printf("%5d",a[i]);

n++;

C语言程序设计谭浩强第四版期末复习重点

C语言程序设计谭浩强第四版期末复习重点 Newly compiled on November 23, 2020

第一章 程 序设计和C 语言 .什么是计算机程序 程序.. :一组计算机能识别和执行的指令。只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作 计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。 什么是计算机语言 计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。 计算机语言发展阶段:机器语言(由0和1组成的指令) 符号语言(用英文字母和数字表示指令) 高级语言(接近于人的自然语言和数学语言) 面向过程的语言(非结构化的语言、结构化语言);面向对象的语言 语言的发展及其特点 C 语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件。因此C 语言问世以后得到迅速推广。 C 语言主要特点: 语言简洁、紧凑,使用方便、灵活。(只有37个关键字、9种控制语句;程序书写形式 自由,源程序短) 运算符丰富。(34种运算符;把括号、赋值、强制类型转换等都作为运算符处理;表达 式类型多样化) 数据类型丰富。(包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型;C99又扩充了复数浮点类型、超长整型、布尔类型;指针类型数据,能用来实现各种复杂的数据结构的运算。)

具有结构化的控制语句。(如if…else语句、while语句、do…while语句、switch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化;C语言是完全模块化和结构化的语言) 语法限制不太严格,程序设计自由度大。(对数组下标越界不做检查;对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用;C语言允许程序编写者有较大的自由度,因此放宽了语法检查) 允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。(C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件;这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言) 用C语言编写的程序可移植性好。(C的编译系统简洁,很容易移植到新系统;在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码;几乎所有计算机系统都可以使用C语言) 生成目标代码质量高,程序执行效率高。 1.C语言允许用两种注释方式:计算法 3.编写程序 4.对源程序进行编辑、编译和连接 5. 运行程序,分析结 6.编写程序文档 第二章算法——程序的灵魂 一个程序主要包括以下两方面的信息: (1) 对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构。 (2) 对操作的描述。即要求计算机进行操作的步骤,也就是算法。 数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。 着名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:算法 + 数据结构 = 程序

C程序设计第四版谭浩强_习题&例题第7章

第7章函数 例7.1 #include int main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); return 0; } void print_star() { printf("***********************************\n"); } void print_message() { printf("How do you do!\n"); } 例7.2 int max(int x,int y) { int z; z=x>y?x:y; return(z); } #include int main() { int max(int x,int y); int a,b,c; printf("please enter two integer number:"); scanf("%d,%d",&a,&b); c=max(a,b); printf("max is %d\n",c); return 0; }

例7.3 #include int main() { int max(float x,float y); float a,b; int c; printf("please enter two integer number:"); scanf("%f,%f",&a,&b); c=max(a,b); printf("max is %d\n",c); return 0; } int max(float x,float y) { float z; z=x>y?x:y; return(z); } 例7.4 #include int main() { float add(float x,float y); float a,b,c; printf("please enter a and b:"); scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f\n",c); return 0; } float add(float x,float y) { float z; z=x+y; return(z); }

C语言程序设计第四版第六章答案_谭浩强

1、用筛选法求100之内的素数。解: #include #include int main() {int i,j,n,a[101]; for (i=1;i<=100;i++) a[i]=i; a[1]=0; for (i=2;i int main() {int i,j,min,temp,a[11]; printf("enter data:\n"); for (i=1;i<=10;i++)

{printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include int main() { int a[3][3],sum=0; int i,j; printf("enter data:\n"); for (i=0;i<3;i++) for (j=0;j<3;j++) scanf("%3d",&a[i][j]); for (i=0;i<3;i++) sum=sum+a[i][i]; printf("sum=%6d\n",sum);

《C语言程序设计》_谭浩强版教案

《C 语言程序设计》教案 职称: 助教 ____________ 单 位:湖南理工职业技术学院 学院(教研室):风能工程学院 工业机器人专业 授课教师: 周常欣

教 学 重 占 八、、 和 难 占 八、、 一、 程序设计和 C 语言 重点:计算机程序、计算机语言、 C 语言编译软件的安装、最简单的 C 语言程序 二、 算法:程序的灵魂 重点:简单的算法举例、算法的特性、用流程图表示算法。 三、 顺序结构程序设计 重点:C 语言的数据类型、C 语句的种类、赋值语句、数据的输入输出及输入输出 中最常用的 控制格式。 四、 选择结构程序设计 重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、 二条分支语句的格 式及基本应用、多分支的选择语句。 五、 循环结构程序设计 重点:C 构成循环的四种方法,尤其是后三种方法、 break 与continue 语句的基本作 用。 难点:while 语句;do-while 语句;for 语句;循环的嵌套; break 与continue 语句。 六、 数组 重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处 理函数及字符处理函数;数组的应用 难点:二维数组的定义与引用;字符数组;数组的应用 七、 函数 重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的 递归调 用;数组作为函数参数;变量作用域;量存储类别; 难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调 用;数组作 为函数的参数、变量的存储类别与作用域。 八、 指针 重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字 符串、指针 数组与二级指针;指针的应用 九、 建立自己的数据类型 重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型 十、文件 重点:文件的基本知识、 fopen 、fclose 函数打开与关闭文件、顺序读与数据文件、 随机读写数据文件 难点:用二进制方式向文件读写一组数据。 十一、常见错误分析 重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。 十二、数组高级应用 重点:不定长数组与二维数组的应用 难点:不定长数组与二维数组的应用 十三、综合应用 重点:数组、if 语句、循环语句、函数知识的综合应用 难点:二维数组、指针 教材、 参 考书 教材:《C 程序设计》(第四版) 谭浩强著 清华大学出版社2010年6月 参考书:《C 程序设计语言》 Kernighan&Ritchie 机械工业出版社 《C 语言程序设计》教案 第1-2课时

C语言程序设计课后习题答案第四版谭浩强完整版

C语言程序设计课后习 题答案第四版谭浩强 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-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

2.2简单的算法举例17 2.3算法的特性21 2.4怎样表示一个算法22 2.4.1用自然语言表示算法22 2.4.2用流程图表示算法22 2.4.3三种基本结构和改进的流程图26 2.4.4用N S流程图表示算法28 2.4.5用伪代码表示算法31 2.4.6用计算机语言表示算法32 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42

C语言程序设计谭浩强重点笔记

C语言设计 学习笔记 早晨:06:40 起床 07:20——08:20 英语 1小时 新概念英语(单词、语法、听读背) 大学英语(单词、语法、听读背) 上午:08:30——10:30 计算机基础 2小时 10:50——11:30 计算机科学技术导论 计算机组成原理 微机原理及接口技术 Intel微处理器结构编程与接口 深入理解计算机系统 80x86汇编语言程序设计 8086-8088宏汇编语言程序设计教程 BIOS研发技术剖析 自己动手写操作系统 操作系统原理 Windows操作系统原理 Windows内部原理系列 Windows程序内部运行原理 计算机网络第五版 中午:12:00——02:00 午休 下午:02:30——04:30 计算机应用及编程 Windows用户管理指南、AD配置指南、网络专业 指南、Windows即学即会教程 Windows下32位汇编语言程序设计、C#编程 晚上:05:30——08:00 锻炼、晚餐 08:00——09:00 辅导 09:00——11:00 专业基础 2小时 大学数学、大学物理、电机及拖动、电力电子技 术、通信技术 11:30 休息

目录 第一章C语言概述................................................................................................................................. - 1 - 1.1 C程序结构特点16 ................................................................................................................ - 1 - 1.2 C程序上机步骤17 ................................................................................................................... - 1 -第二章程序的灵魂——算法23 ............................................................................................................ - 2 - 2.1 算法24 ..................................................................................................................................... - 2 - 2.2 算法的三种基本结构............................................................................................................... - 2 - 2.3 结构化程序设计方法42 .......................................................................................................... - 2 -第三章数据类型运算符与表达式48 .................................................................................................. - 2 - 3.1 C语言的基本元素48 ............................................................................................................... - 2 - 3.2 C的数据类型48 ....................................................................................................................... - 2 - 3.3 常量与变量48 .......................................................................................................................... - 3 - 3.4 基本类型................................................................................................................................... - 3 - 3.5 变量63 ..................................................................................................................................... - 4 - 3.6 不同类型数据间的混合运算................................................................................................... - 5 - 3.7 函数的调用过程(补充)....................................................................................................... - 5 -第四章最简单的C程序设计——顺序程序设计77 ........................................................................... - 5 - 4.1 字符数据的输入输出............................................................................................................... - 5 -第五章选择结构的程序设计97 ............................................................................................................ - 6 -第六章循环结构程序设计..................................................................................................................... - 6 - 6.1 语句标号................................................................................................................................... - 6 - 6.2 break语句和continue语句 ...................................................................................................... - 6 -第七章数组132 ...................................................................................................................................... - 6 - 7.1 构造类型................................................................................................................................... - 6 - 7.2 数组133 ................................................................................................................................... - 6 - 7.3 二维数组................................................................................................................................... - 7 - 7.4 字符串——字符数组............................................................................................................... - 7 - 7.5 字符串处理函数#include ...................................................................................... - 7 -第八章函数153 ...................................................................................................................................... - 8 - 8.1 c程序的结构154 ...................................................................................................................... - 8 - 8.2 函数调用参数传递................................................................................................................... - 8 - 8.3 函数变量的作用范围............................................................................................................... - 8 - 8.4 变量的存储类别....................................................................................................................... - 9 -第九章预处理命令197 ........................................................................................................................ - 10 - 9.1 预编译命令作用..................................................................................................................... - 10 -第十章指针211 .................................................................................................................................... - 11 - 10.1 变量的访问方式................................................................................................................... - 11 - 10.2 指针变量............................................................................................................................... - 11 -第十一章结构体270 ............................................................................................................................ - 12 - 11.1 结构体270 ............................................................................................................................ - 12 -

C程序设计谭浩强第二章习题与答案

C程序设计谭浩强第二 章习题与答案 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

习题 2.1什么是算法?是从日常生活中找三个例子,描述他们的算法 答:对操作的描述,即操作步骤,就是算法。 广义的说;为解决一个问题而采取的方法和步骤,就称为“算法”。 例:(略) 2.2什么叫结构化的算法为什么要提倡结构化的算法 2.3 答:由基本节构所构成的算法属于“结构化”的算法。 结构化的算法便于编写、阅读、便于修改和维护。这就减少了程序出错的机会、提高了程序的可靠性,保证了程序的质量。 2.4试述三种基本结构的特点,你能否自己另外设计两种基本结构(要符合基本结构 的特点)。

答:基本结构有以下共同点: 1:只有一个入口。图2-中的a点为入口。 2:只有一个出口。图2-中的b点为出口。注意,一个判断框有两个出口,但一个选择结构只有一个出口。不能混淆。 3:结构内的每一部分都有被执行到的机会。也就是说,对每一个框来说,都应当有一条到出口的路径通过它。图2-20中就没有一条从入口到出口的路径通过A框。 4:结构内不存在死循环(无终止的循环)。图2-21就是一个死循环。 需要说明的是基本结构并不一定只限于以上3中,只要有以上四种特点就可以。人们可以自己定义之。例:如下两图 2.5用传统流程图表示求解一下问题的算法。 (1)有两个瓶子A和B,分别放醋和酱油,要求将他们互换。 #include<>void main(){int a;int b;int c;a=10;b=5;printf("%d,%d\n",a,b);c=a;a=b;b=c;printf("%d,%d\n",a,b);} (2)一次将10个数输入,要求将将其中最大的数输出。 #include<>void main(){int a[10];int i;int max;printf("input 10 numbers.\n");for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n");max=a[0];for(i=1;i<10;i++) if(maxvoid main(){int a;int b;int c;int t;scanf("%d%d%d",&a,&b,&c);printf("\n");printf("the first numbers:");printf("%d,%d,%d\n",a,b,c);if(a

C程序设计(第四版)(谭浩强)第二章课后习题答案

C程序设计(第四版)(谭浩强)第2章课 后习题答案 算法——程序的灵魂 P017 2.1 计算机1-5相乘的积. #include int main() { int i,s=1; //在执行数值操作前一定要先有个初值. for(i=1;i<6;i++) //这里是到6. { s=s*i; //相乘 } printf("The sum is %d .\n",s); return 0; } #include //作出要求:换成1到11间奇数相乘. int main() { int i,s=1; //在执行数值操作前一定要先有个初值. for(i=1;i<12;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.3 判断2000-2500年中的闰年,并输出. 年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动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个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)……+(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.68172

(完整版)《C语言程序设计》课后习题答案(第四版)谭浩强

第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-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

2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include #include int main() {float p,r,n; r=0.1; 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;

相关主题
文本预览
相关文档 最新文档