C语言入门课程学习记录5:常量,数组,多维数组

文章介绍了C语言中常量的定义、不同类型的变量,如整型和浮点型,以及数组的基础概念、一维数组的使用、多维数组的示例和矩阵操作。通过实例展示了变量初始化、输入输出和数组特性的深入剖析。
摘要由CSDN通过智能技术生成


本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程,图片全部来源于课程PPT,仅用于个人学习记录

第23课 - C 语言中的常量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

#define FirstValue 1u
#define SecondValue 2.2f

enum
{
    ThirdValue = 333,
    FourthValue = 444,
    // TestValue = 5.5  /* ERROR */  //|error: enumerator value for 'TestValue' is not an integer constant|
};

int main()
{
    unsigned ui = FirstValue;
    int si = FourthValue;

    printf("FirstValue = %u\n", FirstValue);//%u是一种输入输出格式说明符,用于按无符号整数的格式输入或输出数据。
    printf("SecondValue = %f\n", SecondValue);

    printf("ThirdValue = %d\n", ThirdValue);
    printf("FourthValue = %d\n", FourthValue);

    printf("ui = %u\n", ui);
    printf("si = %d\n", si);

    /* ERROR:
    0.001f = 1.0;
    FirstValue = 28;
    ThirdValue = 555;
    */
    return 0;
}


    /*
    output:
FirstValue = 1
SecondValue = 2.200000
ThirdValue = 333
FourthValue = 444
ui = 1
si = 444
    */

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    const int ci = 222;
    const double cd = 1.11;

    int it = ci;
    double dd = cd;

    /* ERROR:
        ci = 333;
        cd = 2.22;
    */

    printf("it = %d\n", it);
    printf("dd = %f\n", dd);

    return 0;
}

在这里插入图片描述

第24课 - 初探程序中的数组

在这里插入图片描述
计算前n个正整数之和

#include <stdio.h>

#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int flag = 0;
    int sum = 0;

    do
    {
        printf("Input: ");

        scanf("%d", &n);

        flag = ((0 <= n) && (n <= 100));

        if( flag )
        {
            sum = 0;

            for(i=0; i<=n; i++)
            {
                sum += i;
            }

            printf("Sum = %d\n", sum);
        }
    } while( flag );

    return 0;
}

利用数组存储数据,并根据下标返回数值

#include <stdio.h>

int main()
{
    int n = 0;
    int i = 0;
    int flag = 0;

    int sum[101];

    for(n=0; n<=100; n++)
    {
        sum[n] = 0;

        for(i=0; i<=n; i++)
        {
            sum[n] += i;
        }
    }

    do
    {
        printf("Input: ");

        scanf("%d", &n);

        flag = ((0 <= n) && (n <= 100));

        if( flag )
        {
            printf("Sum = %d\n", sum[n]);
        }
    } while( flag );

    return 0;
}

优化,减少循环次数

#include <stdio.h>

int main()
{
    int n = 0;
    int flag = 0;

    int sum[101];

    sum[0] = 0;

    for(n=1; n<=100; n++)
    {
        sum[n] = sum[n-1] + n;    // sum[1] = sum[0] + 1;
                                  // sum[2] = sum[1] + 2;
                                  // ......
    }

    do
    {
        printf("Input: ");

        scanf("%d", &n);

        flag = ((0 <= n) && (n <= 100));

        if( flag )
        {
            printf("Sum = %d\n", sum[n]);
        }
    } while( flag );

    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第25课 - 数组特性深入剖析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

#define size 8
int a[size];

int main()
{
    int arr[] = { 5, 4, 3, 2, 1 };
    int i = 0;
    int len = sizeof(arr)/sizeof(arr[0]);

    printf("sizeof(arr) = %d\n", sizeof(arr));
    printf("len(arr) = %d\n", len);

    // arr[1.5] = 15;
    // arr = a;

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

    return 0;
}


    /*
    output:
sizeof(arr) = 20
len(arr) = 5
arr[0] = 5
arr[1] = 4
arr[2] = 3
arr[3] = 2
arr[4] = 1
    */

在这里插入图片描述

#include <stdio.h>

int main()
{
    int arr[10] = { 0 };
    int i = 0;
    int len = sizeof(arr)/sizeof(arr[0]);
    int x = 0;

    for(i=0; i<len; i++)
    {
        printf("Input NO.%d: ", i + 1);
        scanf("%d", &arr[i]);
    }

    while( 1 )
    {
        printf("Target Number: ");
        scanf("%d", &x);

        for(i=0; i<len; i++)
        {
            if( x == arr[i] )
            {
                break;
            }
        }

        if( i < len )
        {
            printf("Index: %d\n", i + 1);
        }
        else
        {
            printf("No Target Number!\n");
        }
    }

    return 0;
}

在这里插入图片描述
#include <stdio.h>

int main()
{
int arr[] = { 9, 1, 2, 1, 1, 4, 5, 5, 5, 9, 9, 9 };
int i = 0;
int j = 0;
int len = sizeof(arr)/sizeof(arr[0]);
int n = 0;

for(i=0; i<10; i++)
{
    n = 0;

    for(j=0; j<len; j++)
    {
        if( i == arr[j] )
        {
            n++;
        }
    }

    printf("%d: %d\n", i, n);
}

return 0;

}

#include <stdio.h>

int main()
{
    int arr[] = { 9, 1, 2, 1, 1, 4, 5, 5, 5, 9, 9, 9 };
    int i = 0;
    int j = 0;
    int len = sizeof(arr)/sizeof(arr[0]);
    int cnt[10] = {0};
    int num = 0;

    for(j=0; j<len; j++)
    {
        num = arr[j];
        cnt[num] += 1;
    }

    for(i=0; i<10; i++)
    {
        printf("%d. %d\n", i, cnt[i]);
    }

    return 0;
}

在这里插入图片描述

第26课 - 多维数组的概念与示例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

int main()
{
    int a[][3] = { {1, 2, 3}, {4, 5} };
    int s1 = sizeof(a) / sizeof(a[0]);  // 2 计算行数
    int i = 0;
    int j = 0;

    printf("s1 = %d\n", s1);
    printf("sizeof(a) = %d\n", sizeof(a));
    printf("sizeof(a[0]) = %d\n", sizeof(a[0])); // int[3]

    for(i=0; i<s1; i++)
    {
        for(j=0; j<3; j++)
        {
            printf("a[%d][%d] = %d\n", i, j, a[i][j]);  // 数组的数组可以看作矩阵
                                                        // 因此,可以使用 2 个下标访问矩阵中的值
        }
    }

    return 0;
}

    /*
    output:
s1 = 2
sizeof(a) = 24
sizeof(a[0]) = 12
a[0][0] = 1
a[0][1] = 2
a[0][2] = 3
a[1][0] = 4
a[1][1] = 5
a[1][2] = 0
    */
#include <stdio.h>

int main()
{
    int a[3][3];
    int i = 0;
    int j = 0;

    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            printf("Input a[%d][%d]: ", i, j);
            scanf("%d", &a[i][j]);
        }
    }

    printf("Matrix:\n");

    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            printf("%d    ", a[i][j]);
        }

        printf("\n");
    }

    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            if( i < j )
            {
                int t = a[i][j];
                a[i][j] = a[j][i];
                a[j][i] = t;
            }
        }
    }

    printf("Matrix-T:\n");

    for(i=0; i<3; i++)
    {
        for(j=0; j<3; j++)
        {
            printf("%d    ", a[i][j]);
        }

        printf("\n");
    }

    return 0;
}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值