C语言-阶乘-九九乘法口诀表-最大公约数-闰年

3

C语言-阶乘-九九乘法口诀表-最大公约数-闰年

几个循环的小练习

学习b战上张鹏伟老师的课C语言学习

(1)计算n的阶乘

在这里不考虑溢出的情况


#include<stdio.h>
int main(void)
{   
    int i = 0;
    int n = 0;
    int ret = 1;
    printf("请输入一个整数:");
    scanf("%d",&n);
    for(i = 1;i <= n ;i++)
    {
        ret = ret * i;
    }
    printf("ret = %d",ret);
    return 0;
}

(2)计算1~10的阶乘之和

在(1)的基础上,在外面再套一个循环

#include<stdio.h>
int main(void)
{
    int i = 0;
    int n = 0;
    int ret = 1;
    int sum = 0;
    printf("请输入10计算1~10的阶乘之和:");
    scanf_s("%d", &n);
    for (n = 1; n <= 10; n++)
    {
        for (i = 1; i <= n; i++)
        {
            ret = ret * i;
        }
        sum = sum + ret;
    }
    printf("sum = %d", sum);
    return 0;
}

(3)在屏幕上打印九九乘法口诀表

//在屏幕上输出乘法口诀表
//分析:9行,多上行行号就是多少,先确定行,再确定列
#include <stdio.h>
int main(void)
{
    int i = 0;//行
    //确定打印9行
    for (i = 1; i <= 9; i++)
    {
        //打印1行
        int j = 1;
        for (j = 1; j <= i; j++)
        {
            // %-2d向左对齐 两个字符位置 不够的用空格来补充
            printf(" %d * %d = %-2d ", i, j, i*j);

        }
        //输出回车换行
        printf("\n");
    }
    return 0;
}

(4)给定两个数计算最大公约数

使用辗转相除法

#include<stdio.h>
int main(void)
{   
    int n,r,m;
    printf("请输入两个大于零的整数:");
    scanf("%d %d", &m, &n);
    while (r = m%n)
    {
        m = n;
        n = r;
    }
    printf("%d\n", n);
    return 0;
}

(5)打印1000~2000之间的闰年

判断闰年的方法 能被4整除但是不能被100整除,或者能被400整除。

#include<stdio.h>
int main(void)
{
    int year;
    for (int year = 1000; year <= 2000; year++)
    {
        if (year % 4 == 0 && year % 100 != 0)
        {
            printf("%d\n", year);
        }
        else if (year % 400 == 0)
        {
            printf("%d\n", year);
        }
    }
    return 0;
}

(5)打印100~200之间的质数(素数)

这里使用试除法 什么是质数(素数):如果一个数,除了1和它本身之外不能被其他数所整除,那么这个数就是质数(素数)。 例如:13,只能被1和13整除,所以13就是质数

#include<stdio.h>
int main(void)
{
    //定义整型并初始化
    int num = 0;
    int i = 0;
    int count = 0;

    //理解
    //让i从2开始
    //num开始被i除一直除到num-1
    //如果其中有num被i整除了,循环就终止,break
    //因为素数是除了1和他本身之外不能被其他数所整除
    //在这里只要i和Num不相等,num被其他说所整除,说明,num不是个属于素数,什么也不输出,1是默认的,可以将任意的num整除,在这里i从2开始,所以是素数的数只能被其本身所整除,即i = num,
    for (int num = 100; num <= 200; num++)
    {
        //i <num
        //筛选——输出
        //有其他可以将num整除的数也将终止循环
        for (i = 2; i < num; i++)
        {
            if (num%i == 0)
            {
                break;
            }
        }
        //跳出来
        //就是i把num-1的数字都试过了,都不能将num整除
        //那么就是剩下i = num的情况了,此时这个数肯定为素数
        // i  =num
        if (num == i)
        {
            printf("%d\n", num);
            count++;
        }
    }
    printf("一共有%d个质数\n", count);
    return 0;
}