《C语言程序设计》第4版 何钦铭、颜晖主编 课后习题答案

第2章 用C语言编写程序

Page 020

#include<stdio.h>//练习2-3 
int main(void)
{
	int i,j,k;
	for(int i=1;i<=4;i++)//第i行 
    {
    	for(int j=1;j<=i-1;j++)//j个空格
    	{
    		printf(" ");
		}
		for(k=1;k<=5-i;k++)//k个* 
		{
			printf("* ");
		}
		printf("\n");	
	}
    	
	return 0;
}

Page 023

#include<stdio.h>
int main(void)
{
	int f,c;//练习2-5 
	f=150;
	c=5*(f-32)/9;//或者是c=5/9.0*(f-32)||c=5.0/9*(f-32),但不可以是5/9,会得到0.因为:两个整型数据做除法运算,结果一定是整数。 
	printf("华氏温度%d对应的摄氏温度为%d.\n",f,c);
	
	printf("\n");
	
	/*计算物体自由下落的距离(练习2-6)*/ 
	int h,g,t;
	t=3;//下落时间 
	g=10;//重力加速度 10m/s^2
	h=g*t*t/2;
	printf("一个物体从100米的高空自由下落,前3秒内下落的距离为:%d米.\n",h);
	 
	return 0;
} 

Page 029

#include<stdio.h>
#include<math.h>
int main(void)
{
	/*计算摄氏温度(练习2-8)*/
	double c,f;
	printf("输入华氏温度:");
	scanf("%lf",&f);
	c=5*(f-32)/9.0;
	printf("华氏温度%.2lf对应的摄氏温度为%.3lf\n",f,c);
	
	printf("\n");
	
	/*整数四则运算(练习2-9)*/
	int x,y,z_1,z_2,z_3;
	double z_4;
	printf("输入两个正整数x,y:");
	scanf("%d %d",&x,&y);
	z_1=x+y;
	z_2=x-y;
	z_3=x*y;
	z_4=x/y;
	printf("%d和%d的和为%d,差为%d,积为%d,商为%lf\n",x,y,z_1,z_2,z_3,z_4);
	
	printf("\n");
	
	/*计算分段函数(判断x是否不为0)(练习2-10)*/
	double x_1,y_1;
	printf("输入x_1:");
	scanf("%lf",&x_1);
	if(x_1!=0)
	y_1=1/x_1;
	else y_1=0;
	printf("输入%.2lf时,对应的y值为%.1lf\n",x_1,y_1);
	
	printf("\n");
	
	/*计算分段函数(判断x是否小于0)(练习2-11)*/
	double x_2,y_2;
	printf("输入x_2:");
	scanf("%lf",&x_2);
	if(x_2<0)
	y_2=pow(1+x_2,2)+2*x_2+1/x_2;
	else y_2=sqrt(x_2);
	printf("输入%.2lf时,对应的y值为%.2lf\n",x_2,y_2);
	
	
	printf("\n");
	 
	return 0;
} 

Page 037

#include<stdio.h>
int main(void)
{
	int i,n,flag;//例2-8 
	double t,sum;
	printf("输入一个正整数n:");
	scanf("%d",&n);
	sum=0;
	flag=1;
	for(i=1;i<=n;i++)
	{
		t=flag*(1.0/(2*i-1));
		sum+=t;
		flag=(-1)*flag;
		
	}
	printf("sum=%lf\n",sum);
	
	printf("\n");
	
	/*求1+1/2+···的前n项和(练习2-13)*/
	int n_1,j;
	double sum_1=0;
	printf("Enter n_1(n_1>=0):");
	scanf("%d",&n_1);
	for(j=1;j<=n;j++)
	{
		sum_1+=1.0/j; 
	}
	printf("sum_1=%.2lf\n",sum_1);
	
	printf("\n");
	
	/*求1+1/3+1/5+···的前n项和(练习2-14)*/
	int n_2,k;
	double sum_2;
	printf("Enter n_2:");
	scanf("%d",&n_2);
	for(k=1;k<=n_2;k++)
	{
		sum_2+=1.0/(2*k-1);
	} 
	printf("sum_2=%.2lf\n",sum_2);
	
	printf("\n");
	
	/*求1-1/4+1/7-1/10+···的前n项和(练习2-15)*/
	int n_3,m,flag_1=1;
	double sum_3=0;
	printf("Enter n_3:");
	scanf("%d",&n_3);
	for(m=1;m<=n;m++)
	{
		sum_3+=flag_1*1.0/(3*m-2);
		flag_1=flag_1*(-1);
	}
	printf("sum_3=%.2lf\n",sum_3);
	 
	return 0;
}

Page 040

#include<stdio.h>
#include<math.h>
int main(void)
{
	int n,i;
	double power;
	printf("Enter n:");
	scanf("%d",&n);
	printf("2的乘方表:\n");
	for(i=0;i<=n;i++)
	{
		power=pow(2,i);
		printf("2的%d次方为%.0lf\n",i,power);
	}
	
	printf("\n");
	
	/*3的乘方表(练习2-17)*/
	int m,j;
	double power_1;
	printf("Enter m:");
	scanf("%d",&m);
	for(j=0;j<=m;j++)
	{
		power_1=pow(3,j);
		printf("pow(3,%d)=%.lf\n",j,power_1);
	}
	
	return 0;
}
#include<stdio.h>//练习2-18 
double fact(int n)
{
	int i;
	double product;
	product=1;
	for(i=1;i<=n;i++)
	{
		product*=i;
    }
    
	return product;
} 
int main(void)
{ 
	int n,m,i;
	double result_1,result_2,result_3,c;
	printf("输入两个正整数m和n(m<=n):");
	scanf("%d %d",&m,&n);
	for(i=0;i<=n;i++)
	{
		result_1=fact(i);
	}
	for(i=0;i<=m;i++)
	{
		result_2=fact(i);
	}
	for(i=0;i<=n-m;i++)
	{
		result_3=fact(i);
	} 
	c=result_1/(result_2*result_3);
	printf("c=%.lf",c);
	
	return 0;
}

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值