第二章 算法-程序的灵魂
例2.1 求五的阶乘
例2.3 判断2000-2500年中的每一年是否为闰年。
例2.4 1-1/2+1/3-1/4+…1/99-1/100。
课后习题1.课后习题2.课后习题3.课后习题4.课后习题5.课后习题6
例2.1 求五的阶乘
#include <stdio.h>
int main()
{
int a,s=1;
scanf("%d",&a);
while(a<6)
{
s=s*a;
a++;
}
printf("%d",s);
return 0;
}
运行结果如下:
例2.41-1/2+1/3-1/4+…1/99-1/100
#include <stdio.h>
int main()
{
int i=1,a=2;
float sum,sum1=0,sum2=0;
while(i<101)
{
sum1=sum1+1/i;
i=i+2;
}
printf("%f",sum1);
while(a<101)
{
sum2=sum2-1/a;
a=a+2;
}
printf("%f",sum2);
sum=sum1+sum2;
printf("%f",sum);
return 0;
}
运行结果如下:
例2.3判断2000-2500年中的每一年是否为闰年。
#include <stdio.h>
int main()
{
int year;
scanf("%d",&year);
while(year<=2500)
{
if(year%40&&year%100!=0||year%4000)
printf("%3d",year);
year++;
}
return 0;
}
运行结果如下:
课后习题1 依次将十个数输入,要求输出其中最大的数
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int i,max;
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
max=a[0];
for(i=1;i<N;i++)
{
if(a[i]>max)
max=a[i];
}
printf(“max=%d\n”,max);
return 0;
}
运行结果如下:
课后习题2 有三个数a b c,要求按大小顺序把它们输出
#include<stdio.h>
int main()
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
printf("%4d%4d%4d\n",a,b,c);
return 0;
}
运行结果如下:
课后习题三 求1+2+3…+100
#include<stdio.h>
int main()
{
int i=1,sum=0;
while(i<101)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
return 0;
}
运行结果如下:
课后习题四 判断一个数N能否同时被3和5整除
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n%30&&n%50)
printf("%d",n);
else
printf(“no”);
return 0;
}
运行结果如下:
课后习题五 将100~200之间的素数输出
#include<stdio.h>
#include<math.h>
int main()
{
int n,k,i;
for(n=100;n<=200;n=n+2)
{
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>=k+1)
printf("%4d",n);
}
return 0;
}
运行结果如下:
课后习题六 求两个数m和n的最大公约数
#include<stdio.h>
int main()
{
int m,n,t;
scanf("%d%d",&m,&n);
if(m<n)
{
t=n;
n=m;
m=t;
}
t=m%n;
while(t!=0)
{
m=n;n=t;t=m%n;
}
printf("%d\n",n);
return 0;
}
运行结果如下: