文档库 最新最全的文档下载
当前位置:文档库 › C程序设计4(谭浩强)完整版-课后习题答案

C程序设计4(谭浩强)完整版-课后习题答案

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

P006 1.1 向屏幕输出文字.

#include//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找.

int main()

{

printf("Welcome to https://www.wendangku.net/doc/1f2217341.html,\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;

}

P008 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 (x>y)

z=x;

else

z=y;

return(z); //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).

}

int max(int x , int y , int z)

{

int m;

if (x>y && x>z) //求三者之大的一种方法.

m=x;

if (y>x && y>z)

m=y;

if (z>y && z>x)

m=z;

return (m); //返回值m给主函数中的d.

}

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.2 按要求输出80分以上的学生信息.

暂时没法做.

年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动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);

}

}

#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

}

P021 2.5 得到一个大于3的数,并判断是否为素数.

#include

int main()

{

int i , num ,n ; //像13,37,这样只能让和它本身除以外,没有其它除数的叫素数.

printf("Please input a number :\n"); //获取一个数值

scanf("%d",&num);

for(i=2;i

{

if(num%i==0) //除得尽,则不是.

{

n=1;

break; //设置跳出,才不会执行多次.

}

n=0; //按程序走的话,这里会执行多次,不能用printf语句,会输出多次.

}

if(n==0) //单出口问题,虽然n=0执行多次,但仍然是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 0;

}

P036 0.2 输入10个数,并输出最大的那一个数.

#include

int main()

{

int i,a[10],s=0 ;

printf("Please input 10 numbers :\n");

for(i=0;i<=9;i++)

{

scanf("%d",&a[i]);

}

for(i=0;i<=9;i++)

{

if (s

}

printf("%d is the biggest number !\n",s);

return 0;

}

P036 0.3 按大小顺序输出一些数.

#include

int main()

{

int i , j , a[4] , s=0 ;

printf("Please input 5 numbers :\n"); //此处要回车.

for (i=0 ; i<=4 ; i++)

{

scanf("%d",&a[i]); //这是取多个数的代码,可以用while控制取到\n符为止.

}

for (i=0 ; i<=3 ; i++) //双重循环,先一个外循,再轮所有小循,轮完后再下一个大循.

{

for (j=i+1 ; j<=4 ; j++) //第一个循环是至n-1,第二个循环是到n.

{

if (a[i]>a[j]) //如果成立,则对换,小于号表示降序排列,大于号表示升序排列.

{

s=a[i];

a[i]=a[j];

a[j]=s;

}

}

}

for (i=0 ; i<=4 ; i++) //重新定义循环输出数组中新排列的数.

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

return 0;

}

#include

int main()

{

int i , sum=0 ; //这是一个简单的程序.

for (i=0 ; i<101 ; 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

printf ("Can not be devide by 3 and 5 !\n");

return 0;

}

//********************第一种方法.

相关文档
相关文档 最新文档