【C语言】斐波那契分数数列和、水仙花数、素数、pi值计算

1. 斐波那契分数数列的前n项之和

斐波那契分数数列为2+3/2+5/3+8/5+13/8+…

#include"stdio.h"    //斐波那契分数:下一个分数的分母是前一个分数的分子,分子是前一个分数的分子和分母的和。
void main()
{ 
    int n,a=2,b=1,i,c;    
    float s=0;
    scanf("%d",&n);        //计算n个斐波那契分数
    for (i=1;i<=n;i++)
    {
      s=s+(float)a/b;  //a是分子,b是分母。
      c=b;                     //分母的值赋值给c。
      b=a;                    //将分子的值赋值给b(下一个分数的分母)。
      a=a+c;                //将分子和分母的值赋值给a(下一个分数的分子)。
    }
    printf("%.2f\n",s);  
}

2.水仙花数

水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+   3^3 = 153)

#include<stdio.h> //3^3 = 153)
void main()
{
    int x,m,n,k;
    for(x=100;x<1000;x++)
    {
       m=x/100;       //m代表该数的百位数字
       n=x/10%10;   //n代表该数的百位的数字
       k=x%10;          //k代表该数的个位数字
       if(x==m*m*m+n*n*n+k*k*k)  //判断如果是水仙花数
       printf("%d\n",x);                        //输出函数的值
    }
}

3. 素数

#include<stdio.h>
void main()
{
    int m;
    scanf("%d",&m);
    prime(m);
}

prime(int n)
{
    int i,k;
    k=n/2;                                  //执行循环k次
    for(i=2;i<=k;i++)                 //依次判断是否i被整除
        if(n%i==0) break;          //若整除,则退出
    if(i>=k+1)    
        printf("This is a prime number");
    else    
        printf("This isn't a prime number");
}

4. 二维数组行列互换

#include<stdio.h>
void main()
{
    int i,j,a[2][3],b[3][2];  //定义一个两行三列和一个三行两列的数字
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=2;j++)
            scanf("%d",&a[i][j]);
         printf("\n");
    }                                    //输入数列
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=2;j++)
            b[j][i]=a[i][j];           //交换行与列
    }
    for(i=0;i<=1;i++)
    {
        for(j=0;j<=2;j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }                            //输出原来的数列
    for(j=0;j<=2;j++)
    {
         for(i=0;i<=1;i++)
             printf("%4d",b[j][i]);  //输出交换后的数列
         printf("\n");
    }
}

5.计算PI的值

#include <math.h>
double pi(long n)
{
    double s=0.0;
    long i;
    for(i=0;i<n;i++)
        s+=1/i*i;
    s=squr(6*s);
    return (s);
}

squr函数用于求平方根。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值