分支结构和循环结构总结(经典案例解析)

写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了。现在由于准备升本考试,不得不从头开始学C。这里从零开始,记录C语言学习点滴。欢迎正在学习C语言的小伙伴一起学习,未来可期,一起加油!

前面两篇学了分支结构循环结构,这篇来看几个利用分支结构和循环结构解决的经典问题,巩固一下前面两篇学的分支结构循环结构

阶乘计算

输入一个正整数n,计算n的阶乘。
【分析】首先需要输入一个数字n,计算n的阶乘。可以循环n次,在循环中计算n的阶乘。具体代码如下:

#include<stdio.h>

int main(){
    int i, n, sum = 1;

    printf("请输入一个数字:");
    scanf("%d", &n);     /* 输入一个数字n */
    /* 计算n的阶乘 */
    for(i = 1; i <= n; i++){    /* 循环n次计算n的阶乘 */
        sum = sum * i;
    }
    printf("%d的阶乘为:%d\n", n, sum);

    return 0;
}

运行结果如下:
在这里插入图片描述

求和

计算1 - 1/3 + 1/5 - 1/7+…共n项之和。
【分析】首先需要从键盘输入一个数字n,确定需要求解几项的和。之后同样可以循环n次,计算n项的和。
根据题目可以分析出,分母每次是递增2的,所以在循环中,下一项的分母等于前一项分母+2。
由于题目双数项为负,单数项为正,可以通过一个 if 判断解决,也可以定义一个变量flag = 1,循环一次改变一下变量的正负 flag = -flag。在求和时乘flag。
具体代码如下:

#include<stdio.h>

int main(){
    int denominator = 1, flag = 1, i, n;  /* denominator为每项的分母,flag表示每项的符号(正数负数) */
    double sum = 0;

    printf("请输入一个数字n:");
    scanf("%d", &n);

    /* 循环n次,求和 */
    for(i = 1; i <= n; i++){
        sum = sum + flag * 1.0/denominator;     /* 计算并累加第i项的值 */
        flag = -flag;  /* 改变下一项项的符号 */
        denominator = denominator + 2;  /* 下一项分母的值 */
    }

    printf("sum = %f\n", sum);

    return 0;
}

运行效果如下:
在这里插入图片描述

判断是否为素数

判断一个正整n是否为素数。
【分析】只能被1或本身整除的数称为素数。
同样输入一个数字n,判断n是否为素数,从2循环到n/2(可以被1整除)。
判断2~n/2中间的数据是否能够被n整除,能整除其中任何一个数则不是素数,反之为素数。
具体代码如下:

#include<stdio.h>

int main(){
    int i, n;
    printf("请输入一个数字n:");
    scanf("%d", &n);

    /* 循环2~n/2 */
    for(i = 2; i <= n/2; i++){
        if(n % i == 0){
            break;      /* 若n能被某个i整除,则n不是素数,提前结束循环 */
        }
    }
    if(i > n/2 && n != 1){  /* 若循环正常结束,说明n不能被任何一个i整除 */
        printf("%d是一个素数\n", n);
    }else{
        printf("%d不是一个素数\n", n);
    }

    return 0;
}

运行结果如下:
在这里插入图片描述

打印九九乘法表

九九乘法表相信大家都不陌生吧!利用循环打印出一个九九乘法表。
【分析】打印一个九九乘法表,乘法表共9行,第一行1一个式子,第二行2个式子…。所以我们可以采用两个循环,第一个循环,循环1~9,打印9行数据。第二个循环打印每行中的式子。具体代码如下:

#include<stdio.h>

int main(){
    int i, j;

    for(i = 1; i <= 9; i++){    /* 乘法表共9行,循环1~9 */
        for(j = 1; j <= i; j++){    /* 第一行只有1个乘法式子,第二行2个乘法式子 */
            printf("%d * %d = %d\t", j, i, j*i);    /* 打印乘法表式子 */
        }
        printf("\n");
    }

    return 0;
}

运行结果如下:
在这里插入图片描述


由于初学C语言,上述内容如有错误地方,恳请各位大佬指出!

猜你喜欢

转载自blog.csdn.net/qq_40205116/article/details/105598979