#1.输入三个数比较大小

int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    scanf("%d%d%d", &a, &b, &c);//2 1 3
    //算法实现
    //a中放最大值
    //b次之
    //c中放最小值
    if(a<b)
    {
        int tmp = a;
        a = b;
        b = tmp;
    }
    if(a<c)
    {
        int tmp = a;
        a = c;
        c = tmp;
    }
    if(b<c)
    {
        int tmp = b;
        b = c;
        c = tmp;
    }

    printf("%d %d %d\n", a, b, c);
    return 0;
}

分支和循环题 做题解析(一)_零基础

#2.打印三的倍数(1-100)

int main()
{
    int i = 0;

    for (i = 1; i <= 100; i++)
    {
        if (i % 3 == 0)
            printf("%d ", i);
    }

    return 0;
}

分支和循环题 做题解析(一)_零基础_02

#3.求两个数求最大公约数

辗转相除法

int main()
{
    int m = 0;
    int n = 0;
    int r = 0;

    scanf("%d %d", &m, &n);

    while (m % n ) //0为假,非0为真,为0时跳出循环
    {
        r = m % n;
        m = n;
        n = r;
    }

    printf("%d", n);
    
}

分支和循环题 做题解析(一)_练习题_03

#4.打印闰年

2000-3000年间闰年

int main()
{
    int year = 2000;
    int count = 0;
    for (year = 2000; year <= 3000; year++)
        //判断year是否为闰年
//        //1. 能被4整除并且不能被100整除是闰年
//        //2. 能被400整除是闰年
    {
        if (year % 4 == 0 && year % 100 != 0)
        {
            printf("%d ", year);
            count++;
        }
        else if (year % 400 == 0)
        {
            count++;
            printf("%d ", year);
        }
    }
    printf("\ncount=%d个闰年", count);

    return 0;
}

int main()
{
    int year = 2000;
    int count = 0;
    for (year = 2000; year <= 3000; year++)
        //判断year是否为闰年
//        //1. 能被4整除并且不能被100整除是闰年
//        //2. 能被400整除是闰年
    {
        if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
            {
                printf("%d ", year);
                count++;
            }
    }
    printf("\ncount=%d个闰年", count);

    return 0;
}

分支和循环题 做题解析(一)_练习题_04

分支和循环题 做题解析(一)_零基础_05

#5.打印100-300间素数

1.试除法

int main()
{
    int i = 0;
    int j = 0;
    int count = 0;
    for (i = 100; i <= 300; i++)
    {    //判读i是否为素数(只能被1和自身整除)
        //素数判断的规则
        //1. 试除法
        //要产生2->i-1的数
        //例如:13要除于2-12的数
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                break;
            }
        }
        if (i == j)
        {
            printf("%d ", i);
            count++;
            }
    }
    printf("\n一共有:%d 素数", count);
    return 0;
}

分支和循环题 做题解析(一)_C语言_06

算法优化改进⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇

使用 sqrt-->开平方的数学库函数

算法思想过程:分支和循环题 做题解析(一)_简单算法_07

#include 
#include

int main()
{
    int i = 0;
    int j = 0;
    int count = 0;
    //sqrt - 开平方的数学库函数
    for(i=100; i<=300; i++)
    {
        
        for(j=2; j<=sqrt(i); j++)
        {
            if(i%j == 0)
            {
                break;
            }
        }
        if(j>sqrt(i))
        {
            count++;
            printf("%d ", i);
        }
    }
    printf("\ncount = %d\n", count);
    return 0;
}

分支和循环题 做题解析(一)_零基础_08

还可以在优化!直接跳过偶数,奇数里找素数

int main()
{
    int i = 0;
    int j = 0;
    int count = 0;
    //sqrt - 开平方的数学库函数
    for(i=101; i<=300; i+=2)
        //跳过偶数
    {
        
        for(j=2; j<=sqrt(i); j++)
        {
            if(i%j == 0)
            {
                break;
            }
        }
        if(j>sqrt(i))
        {
            count++;
            printf("%d ", i);
        }
    }
    printf("\ncount = %d\n", count);
    return 0;
}

分支和循环题 做题解析(一)_零基础_09


#6.数九的个数(1-100)

分支和循环题 做题解析(一)_C语言_10

#6.分数求和

计算1/1-1/2+1/3-4/1+5/1-6/1……+1/99-1/100的值

思考:(1)先只考虑相加

分支和循环题 做题解析(一)_C语言_11

得到1,由注释推出,应该是使用浮点型(double,float)

(2)考虑如何交错相减(+,-)

分支和循环题 做题解析(一)_练习题_12

得到结果

int main()
{
    int i = 0;
    double sum = 0.0;
    int flag = 1;

    for (i = 1; i <= 100; i++)
    {
        sum +=flag* 1.0 / i;
        flag = -flag;  //交错级数
    }
    //1/1+1/2+1/3...
    //1+0+0+0......
    printf("%lf", sum);
    return 0;
}

#7.比较数组十个数大小

int main()
{
    int arr[] = {-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
    int max = arr[0];//把数组里第一个数赋给max
    int i = 0;
    int sz = sizeof(arr)/sizeof(arr[0]);//计算数组里数个数

    for(i=1; i<sz; i++)
    {
        if(arr[i] > max)
        {
            max = arr[i];
        }
    }
    printf("max = %d\n", max);
    return 0;
}

分支和循环题 做题解析(一)_C语言_13

#8.打印乘法表9*9

//在屏幕上输出9*9乘法口诀表
//
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//4*1=4 .....
//....
//9*1=9 ....
//
int main()
{
    int i = 0;
    //确定打印9行
    for(i=1; i<=9; i++)
    {
        //打印一行中j项
        int j = 1;
        for(j=1; j<=i; j++)
        {
            printf("%d*%d=%-2d ", i, j, i*j);//%-2d打印两位数左对齐
        }
        printf("\n");
    }
    return 0;
}

分支和循环题 做题解析(一)_零基础_14