欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

程序举例(初学者)

程序员文章站 2022-11-21 21:33:51
例1:用Π/4=1-1/3+1/5-1/7+...公式求Π的近似值,直到某一项的绝对值小于10^6为止。 提示:(1)要确定计算的精度,可以配合while循环语句用fabs()函数确定精度来退出。 (2)据观察,分子不变,分母却每次递增2,且正负切换。 (3)记得结果乘以4。 例2:求Fibonac ......

例1:用π/4=1-1/3+1/5-1/7+...公式求π的近似值,直到某一项的绝对值小于10^6为止。

提示:(1)要确定计算的精度,可以配合while循环语句用fabs()函数确定精度来退出。

(2)据观察,分子不变,分母却每次递增2,且正负切换。

(3)记得结果乘以4。

#include<stdio.h>
#include<math.h>

void main()
{
    int s;
    float n,t,pi;
    t=1;pi=0;n=1.0;s=1;
    while(fabs(t)>1e-6)
    {
        pi=pi+t;
        n=n+2;
        s=-s;
        t=s/n;
    }
    pi=pi*4;
    printf("pi=%f\n",pi);
}

例2:求fibonacci数列前40个数。这个数列有如下特点:第1、2两个数为1,1。从第三个数开始,该数是其前面两个数之和。

即:

f(1)=1    (n=1)

f(2)=1    (n=2)

f(n)=f(n-1)+f(n-2)

法1:(我自己做的)

#include<stdio.h>

void main()
{
    int f1,f2,n;
    n=1;
    for(f1=1;n<=40;n++)
    {
        if(n<=2)
        {
            f2=1;
            printf("%d\n",f1);
        }
        else
        {
            if(n%2==0)
                f1=f2+f1;
            else
                f2=f1+f2;
            if(f1>f2)
                printf("%d\n",f1);
            else
                printf("%d\n",f2);
        }
    }
}

 法2:(参考答案)

#include<stdio.h>

void main()
{
    int f1,f2,n;
    f1=1;
    f2=1;
    for(n=1;n<=20;n++)
    {
        printf("%d\n%d\n",f1,f2);
        f1=f1+f2;
        f2=f2+f1;
    }
}

例3:写一个程序,允许输入一个数m,并判断m是否为素数。

算法思想:让m被2到k除,如果m能被2~k之中任何一个整数整除,则提前结束循环,此时i必然小于或等于k;如果m不能被2~k之间任意一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2~k之间任意整数整除过,因此输出“是素数”。

法1:(我自己做的)

#include<stdio.h>

void main()
{
    int i,m;
    scanf("%d",&m);
    for(i=2;i<m;i++)
    {
        if(0==m%i)
        {
            printf("%d is not a prime number\n",m);
            break;
        }
    }
    if(i==m)
        printf("%d is a prime number\n",m);
}

 法2(参考答案)

#include<stdio.h>
#include<math.h>

void main()
{
    int m,i,k;
    scanf("%d",&m);
    k = sqrt(m);
    for(i=2;i<=k;i++)
    {
        if(m%i==0)
        {
            break;
        }
    }
    if(i>k)
    {
        printf("%d is a prime number",m);
    }
    else
    {
        printf("%d is not a prime number",m);
    }
}

例4:把100~200间的素数全部打印出来。

#include<stdio.h>

void main()
{
    int m,i;
    for(m=100;m<=200;m++)
    {
        for(i=2;i<m;i++)
        {
            if(0==m%i)
                break;
        }
        if(m==i)
        {
            printf("%d\n",m);
        }
    }
}

例5:按以下规律将电文变成密码:

将字母a变成字母e,a变成e,即变成其后的第四个字母,w变成a,x变成b,y变成c,z变成d。

提示:两个功能:

一、输入原文译成密码。

二、输入密码译成原文。