文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
C程序设计(第四版)(谭浩强)第一章课后习题答案
P006 1.1 向屏幕输出文字.
#include
printf(\);
return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;.
P008 1.2 求两个数的和.
#include
int a,b,sum; a=5; b=4; sum=a+b;
printf(\,sum); return 0;
P008 1.3 调用函数比较两个数的大小.
#include
int max(int x,int y) //定义了两个形参. {
int max(int x,int y); //被调用函数在主函数后面,用前先声明. int a,b,c;
scanf(\,&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误. c=max(a,b); //a,b作为实参传入被调用函数中. printf(\,c); return 0;
1
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
}
int z; //z属于局部变量,可与主函数中相同名字. if (x>y)
z=x; z=y; else
return(z); //z作为整个程序的出口值,赋给主函数中的c.
P015 0.6 三个数的大小.(数字0表示课后练习题) #include
int max(int x , int y , int z) { }
int m;
if (x>y && x>z) //求三者之大的一种方法.
m=x; m=y; m=z; if (y>x && y>z) if (z>y && z>x)
return (m); //返回值m给主函数中的d. int a,b,c,d; //d是用于存储最大值的.
int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明. printf(\); scanf(\,&a,&b,&c);
printf(\,d); // d可以换成max(a,b,c).
d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算.
C程序设计(第四版)(谭浩强)第2章课
后习题答案 算法——程序的灵魂
P017 2.1 计算机1-5相乘的积. 2
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
#include
#include
int i,s=1; //在执行数值操作前一定要先有个初值.
for(i=1;i<12;i++) //这里是到,但题目要求的是取单数.也可以是i=i+2 { }
printf(\,s); return 0;
if(i%2!=0) //i对取模,值为非为奇数;为则为偶数.
s=s*i;
continue; //跳过这个for循环的这一次,执行下一次. else
int i,s=1; //在执行数值操作前一定要先有个初值. for(i=1;i<6;i++) //这里是到6. { }
printf(\,s); return 0;
s=s*i; //相乘
P019 2.2 按要求输出80分以上的学生信息. 暂时没法做.
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
3
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
int main() { }
int i;
for(i=2000;i<=2200;i++) { }
if((i%4==0 && i0!=0)||i@0==0) //闰年的经典判断条件.
printf(\,i); printf(\,i); else
P020 2.4 求(1)-(1/2)+(1/3)……+(1/99)-(1/100)的值.
#include
float sign=1 , sum=0 , deno , term ; //关于有小数的计算应该用float. for (deno=1;deno<=100;deno++) { }
printf(\指定值) is %f .\\n\,sum); return 0; //若是到100的话,结果为0.68172
term=sign*(1/deno); //term临时值,sing符号,deno为分母. sum=sum+term; //第一次总全存储. sign=(-1)*sign; //换号.
P021 2.5 得到一个大于3的数,并判断是否为素数.
#include
int i , num ,n ; //像13,37,这样只能让和它本身除以外,没有其它除数的叫素数. printf(\); //获取一个数值 scanf(\,&num);
for(i=2;i if(num%i==0) //除得尽,则不是. { } n=1; break; //设置跳出,才不会执行多次. 4 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. } } if(n==0) //单出口问题,虽然n=0执行多次,但仍然是n=0,这样才会只输出一次. { } else { } return 0; printf(\); printf(\); //如果是100-200可以加个”%d”,nmu进去. n=0; //按程序走的话,这里会执行多次,不能用printf语句,会输出多次. 2.6-2.10要求用流程图表示上列算法. 2.11-2.16要求用N-S图表示上列算法. … … … … 还要伪代码 P036 0.1 调换二个参数的值. #include char a='a',b='b',c; c=a; a=b; b=c; printf(\,a,b); return 0; P036 0.2 输入10个数,并输出最大的那一个数. #include int i,a[10],s=0 ; printf(\); for(i=0;i<=9;i++) { scanf(\,&a[i]); 5