程序举例(初学者)

例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。

提示:两个功能:

一、输入原文译成密码。

二、输入密码译成原文。

  

    

posted on 2019-01-19 00:18 巫师笔记 阅读(...) 评论(...) 编辑 收藏

Powered by .NET Core 3.0 Preview 8 on Linux

导航

统计