C语言初阶——数组的定义和初始化等_作业代码测试

#include<stdio.h>

第五题:

int main()
{
    int arr[] = { 1,2,(3,4),5 };
    printf("%d\n", sizeof(arr));
    return 0;
}
//打印结果:16

第六题:

int main()
{
    char str[] = "hello bit";
    printf("%d %d\n", sizeof(str), strlen(str));
    
//sizeof是C语言中的一个单目运算符,用来计算数据类型所占空间的大小,单位为字节;
    //而strlen是一个函数,用来计算字符串长度。

    //总结摘要:sizeof就是一个计算数据类型所占空间大小的单目运算符,在计算字符串的空间大小时,包含了结束符\0的位置;
    //而strlen是一个计算字符串长度的函数,使用时需要引用头文件#include<string.h>,不包含\0,即计算\0之前的字符串长度。
    return 0;
}
//打印结果:10 9

第九题:

作业标题
【一维数组】交换数组

作业内容
将数组A中的内容和数组B中的内容进行交换。(数组一样大)

错误写法;
void Swap(int A, int B)
{
    int tmp[] = { 0 };
    tmp = A;
    A = B;
    B= tmp;
//错误原因:表达式必须为可修改的左值。
           //而数组名是首元素地址,地址为编号,不能被修改。

}
int main()
{
    int A[] = { 1,2,3,4,5 };
    int B[] = { 6,7,8,9,10 };

    Swap(A, B);

    return 0;
}

由此可知,要将数组交换,就只有将其内容对应一一交换。

正确写法①:
void print(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%-2d ", arr[i]);
    }
    printf("\n");
}
int main()
{
    int A[] = { 1,2,3,4,5 };
    int B[] = { 6,7,8,9,10 };
    int i = 0;

    int sz = sizeof(A) / sizeof(A[0]);

    for (i = 0; i < sz; i++)
    {
        int tmp = A[i];
        A[i] = B[i];
        B[i] = tmp;
    }

    print(A, sz);
    print(B, sz);

    return 0;
}

正确写法②:
int main()
{
    int A[] = { 1,2,3,4,5 };
    int B[] = { 6,7,8,9,10 };
    int i = 0;
    int sz = sizeof(A) / sizeof(A[0]);

    for (i = 0; i < sz; i++)
    {
        int tmp = A[i];
        A[i] = B[i];
        B[i] = tmp;
    }
    for (i = 0; i < sz; i++)
    {
        printf("%-2d ", A[i]);
    }
    printf("\n");
    for (i = 0; i < sz; i++)
    {
        printf("%-2d ", B[i]);
    }

    return 0;
}

正确写法③:

//打印函数
void print(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%-2d ", arr[i]);
    }
    printf("\n");
}

//交换函数
void Swap(int arr1[],int arr2[],int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        int tmp = arr1[i];
        arr1[i] = arr2[i];
        arr2[i] = tmp;
    }
}
int main()
{
    int arr1[] = { 1,2,3,4,5 };
    int arr2[] = { 6,7,8,9,10 };
    int i = 0;

    int sz = sizeof(arr1) / sizeof(arr1[0]);
    Swap(arr1, arr2, sz);

    print(arr1, sz);
    print(arr2, sz);

    return 0;
}

第十题:

作业标题
使用函数实现数组操作

作业内容
创建一个整形数组,完成对数组的操作

实现函数init() 初始化数组为全0
实现print()  打印数组的每个元素
实现reverse()  函数完成数组元素的逆置。
要求:自己设计以上函数的参数,返回值。

//实现print()  打印数组的每个元素
void print(int arr[],int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

//实现函数init() 初始化数组为全0
void init(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz; i++)
    {
        arr[i] = 0;
    }
}

//实现reverse()  函数完成数组元素的逆置。
void reverse(int arr[], int sz)
{
    int l = 0;
    int r = sz - 1;

    while (l < r)
    {
        int tmp = arr[l];
        arr[l] = arr[r];
        arr[r] = tmp;

        l++;
        r--;
    }
}
int main()
{
    int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    print(arr, sz);

    reverse(arr, sz);
    print(arr, sz);

    init(arr, sz);
    print(arr, sz);

    return 0;
}
//如果使用递归会更复杂,除非题目要求,所以我们这里直接考虑用循环。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值