目录
前言
所有程序均已经过调试
一、求100~1000的全部水仙花数
#include<stdio.h>
int main()
{
int n,i,j,k;
for(n=100;n<1000;n++)
{i=n/100;
j=(n-i*100)/10;
k=n%10;
if(i*i*i+j*j*j+k*k*k==n)
printf("%-5d",n);
}
return 0;}
注意:j=n/10%10,分解出十位。
二、求100~200的所有素数
代码如下:
#include<stdio.h>
#include<math.h>
int main ()
{
int n,i,j,k;
for(i=101,n=0;i<200;i+=2)
{
k=sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0) break;
if(j==k+1)
{n=n+1;
printf("%6d",i);
if(n%10==0)
printf("\n");
}
}return 0;
}
注意:1.大于2的素数全是奇数,每次循环i=i+2;
2.非素数,停止循环
3.if(n%10==0) printf("\n");每行10个数
三、求派的近似值
#include<stdio.h>
#include<math.h>
int main()
{
int s=1;
double n=1.0,t=1.0,p=0.0;
while(fabs(t)>=1e-6)
{p=p+t;
n=n+2;
s=-s;
t=s/n;}
printf("pi=%10.6lf\n",p*4);
return 0;}
注意:给分子,分母初始化的时候,数据类型为double型
四、百元买百鸡
#include<stdio.h>
int main()
{
int x,y,z;
for(x=1;x<=20;x++)
for(y=1;y<=33;y++)
{
z=100-x-y;
if(5*x+3*y+z/3==100&&z%3==0)
printf("cocks=%d,hens=%d,chickens=%d\n",x,y,z);
}
return 0;}
注意:小鸡是3的倍数,if条件5*x+3*y+z/3==100&&z%3==0判断
五、牛顿迭代法
#include<stdio.h>
#include<math.h>
int main()
{
int n=1;
double x0,x=0,f1,f2;
do{
x0=x;
f1=3*x*x*x-2*x*x+5*x-1;
f2=9*x*x-4*x+5;
x=x0-(f1/f2);
n++;
}
while(fabs(x0-x)>1e-6);
printf("x=%-15.10lf(n=%d)",x,n);
return 0;}
注意:循环次数不确定,不建议用for语句,可以做以下改动
#include<stdio.h>
#include<math.h>
int main()
{
int n=1;
double x0,x=0,f1,f2;
for(;fabs(x0-x)>1e-6;)
{
x0=x;
f1=3*x*x*x-2*x*x+5*x-1;
f2=9*x*x-4*x+5;
x=x0-(f1/f2);
n++;
}
printf("x=%-15.10lf(n=%d)",x,n);
return 0;}