1.16(整数分解,辗转相除,水仙花数,九九乘法表)

计算f(n) = 1-1/2+1/3-1/4+…1/n

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    scanf("%d", &n);
    double ret = 0.0;  //注意这里是double
    double sign = 1;   //正负标志

    for (int i=1; i<=n; i++) {
        ret += sign/i;
        sign = -sign;
    }
    printf("f(%d) = %f",n ,ret);
    return 0;
}

整数分解

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num;
    scanf("%d", &num);
    int mask = 1;
    int t = num;

    while (t>9) {
        t /= 10;
        mask *= 10;
    }

    do {
        int d = num / mask;
        printf("%d ",d);
        num %= mask;
        mask /= 10;
    }while ( mask > 0 );


    return 0;
}

辗转相除法求gcd

#include <stdio.h>
#include <stdlib.h>

int main()
{
     int a,b;
     scanf("%d %d", &a, &b);
     while (b!=0) {
        int t=a%b;
        a=b;
        b=t;
     }
    printf("最大公约数为:%d", a);
    return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
     int a;
     scanf("%d", &a);
     int cnt = 0;

     for( int i=a ; i<a+4 ; i++ ) {
        for ( int j=a ; j<a+4 ; j++ ) {
            for (int k=a ; k<a+4 ; k++ ) {
                if (i!=j && i!=k && j!=k) {
                    printf("%d%d%d", i,j,k);
                    cnt ++;
                    if (cnt == 6) {
                        printf("\n");
                        cnt = 0;
                    }else {
                        printf(" ");
                    }
                }
            }
        }
     }
    return 0;
}

在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    scanf("%d", &n);
    int max = 1;
    int t = n;
    while (t>0) {
        t--;
        max*= 10;
    }
    int min = max/10 ;
    //printf("min=%d,max=%d",min,max);
    for ( int x=min ; x<max ; x++ ){
            int y = x;
            int ret = 0;
        while (y>0) {
            int d = y%10;
            y /= 10;
            int mi = d;
        for (int i=1 ; i<n ; i++) {
            mi *= d;
        }
            ret += mi;
        }
        if (ret==x) {
            printf("%d\n", x);
        }
        }
     return 0;

    }


如果变量之后要被用到的话,用一个新的变量记录它。
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    scanf("%d", &n);

    for (int j=1 ; j<=n ; j++) {
        for (int i=1 ; i<=j ; i++) {
            printf("%d*%d=%d",i,j,i*j);
            if (i==j) {
                printf("\n");
            }else if (i*j<10) {
                printf("   ");
            }else {
                printf("  ");
            }
        }
    }
     return 0;

    }


在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int M,N;
    scanf("%d %d", &M, &N);
    int sum=0;
    int con=0;

    for (int x=M ; x<=N ; x++) {
        int exit=0;
        for (int i=2 ; i<x ; i++) {
            if (x%i==0) {
                exit = 1;
                break;
            }
        }
        if (exit==0) {
            con++;
            sum += x;
        }
    }
    printf("%d %d",con,sum);
     return 0;

    }


在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num,n;
    scanf("%d %d", &num, &n);
    int cnt=0;
    int guess;
    //scanf("%d", &guess);
    //cnt++;

     do {
        scanf("%d", &guess);
        cnt++;
        if (guess>num) {
            printf("Too big\n");
        }else if (guess<num) {
            printf("Too small\n");
        }
    }while (guess!=num && guess>=0 && cnt<n);
    //printf("%d", cnt);
    if (cnt==1) {
        printf("Bingo!");
    }else if (cnt<=3) {
        printf("Lucky You!");
    }else if (cnt<=n) {
        printf("Good Guess!");
    }else {
        printf("Game over");
    }
     return 0;
    }

do while中放的是循环成立的条件。
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    scanf("%d", &n);
    double fenzi=2;
    double fenmu=1;
    double sum=1.0*fenzi/fenmu;
    int cnt=1;

    while (cnt<n) {
        double t = fenzi;
        fenzi += fenmu;
        fenmu = t;
        //printf("fenzi=%d,fenmu=%d\n",fenzi,fenmu);
        sum += 1.0*fenzi/fenmu;
        //printf("%f",sum);
        cnt++;
    }
    printf("%.2f\n",sum);

     return 0;

    }


这里的fenzi fenmu t 用 double 而不用 int !!
虽然分子分母都是整数,但是随着n的增大,分子分母可能会很大,如果超过整数在计算机里的范围,会变成负数,造成错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值