第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;
}