C基础案例

  1. 案例1,水仙花数
  2. 案例2,数组翻转
  3. 案例3,冒泡排序

案例1,水仙花数

输出0-1000以内的水仙花数,水仙花算法:一个数=它的各位的立方和,例如:153=1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3. 提示:for循环取余(%),取整(/)运算符;

    for (int i = 0; i < 1000; i++) {
        int baiWeiShu = i / 100 %10;                //百位数
        int geWeiShu = i/1 % 10;                  //个位数
        int shiWeiShu = i / 10 %10 ;      //十位数
        int resault = baiWeiShu * baiWeiShu * baiWeiShu + shiWeiShu * shiWeiShu * shiWeiShu + geWeiShu * geWeiShu * geWeiShu;
        if (i == resault) {
            printf("水仙花数:%d\n", i);
        }
    }
    设一个数为n,则在C语言中其个位、十位、百位、千位依次这样计算:
    n/1%10,n/10%10,n/100%10,n/1000%10
    代码如下:
    #include<stdio.h>
    int main(){
        int n = 123456;
        int unitPlace = n / 1 % 10;
        int tenPlace = n / 10 % 10;
        int hundredPlace = n / 100 % 10;
        int thousandPlace = n / 1000 % 10;
        printf("个位:%d\n十位:%d\n百位:%d\n千位:%d\n", unitPlace, tenPlace, hundredPlace, thousandPlace);
        getchar();
        return 0;
    }

案例2,数组翻转

将int类型的数组进行翻转操作

    //数组翻转,两头堵模型
    int array[] = { 3, 7, 79, 465, 2, 65, -346, 798, 1, 0 };
    int size = sizeof(array) / sizeof(array[0]);

    for (int i = 0; i < size / 2; i++) {
        int temp = array[i];
        array[i] = array[size - 1 - i];
        array[size - 1 - i] = temp;
    }

    for (int i = 0; i < size; i++) {
        printf("%d\n", array[i]);
    }

案例3,冒泡排序

void BubblingSorting()
{
    //冒泡排序
    int array[] = {  7, 79, 465,  65, -345, -346, 798, 1, 0, 45 };
    int size = sizeof(array) / sizeof(array[0]);

    // 在 for (int x = 0; x < size; x++) 中,可以取出所有的值,但是比较是可以少取一次的
    // 因为 array[x]取出当前的一个值,array[x+1]取出下一个值,这样取值,for循环中必须少循环一次
    // 必须写成 for (int x = 0; x < size -1 ; x++) 才可以正常使用array[x+1]取出下一个值
    // 第一次相邻的2个数字循环比较完成之后,数组的最后一个值必定是当前数组中的最大或者最小的值,
    // 第二次相邻的2个数字循环比较完成之后,数组的倒数第二个值必定是当前数组中的最大或者最小的值,
    // 第三次相邻的2个数字循环比较完成之后,数组的倒数第三个值必定是当前数组中的最大或者最小的值,
    // ...
    // 所以每次执行完一个比较循环之后,数组的倒数的值就不必要参与比较循环中,即如果共有10个数
    // 第n次比较(外层循环)   遍历的比较循环     倒数第x个值不参与比较    比较的下标从 i 到 j(内层循环)
    //   1(0)                   9                  无                           0    9
    //   2(1)                   8                  1                            0    8
    //   3(2)                   7                  2                            0    7
    //   4(3)                   6                  3                            0    6
    //   5(4)                   5                  4                            0    5
    //   6(5)                   4                  5                            0    4
    //   7(6)                   3                  6                            0    3
    //   8(7)                   2                  7                            0    2
    //   9(8)                   1                  8                            0    1
    int count = 0;
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - 1 - i; j++) {
            printf("%d      %d\n", j, j + 1);
            if (array[j] > array[j + 1]) {
                int temp = array[j];
                array[j] =   array[j + 1];
                array[j + 1] = temp;
            }
        }
        count++;
        printf("=================%d\n", i);
    }
    printf("=================count = %d\n", count);

    for (int i = 0; i < size; i++) {
        printf("%d\n", array[i]);
    }
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1487842110@qq.com

Love

Title:C基础案例

文章字数:773

Author:诸子百家-谁的天下?

Created At:2020-05-08, 11:41:32

Updated At:2021-03-28, 02:59:27

Url:http://yoursite.com/2020/05/08/algorithm/%E6%A1%88%E4%BE%8B/

Copyright: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

爱你,爱世人