C语言学习记录——삼십오 C语言初级题目(2)

目录

一、结构体部分题

二、喝汽水问题,1元1瓶汽水,2个空瓶换一瓶汽水。写程序表示可以喝多少汽水

三、调试部分题

四、调整奇数偶数顺序

五、数据存储部分题

六、字符指针部分题


一、结构体部分题

struct S
{
    int a;
    int b;
};

int main()
{
    struct S a, * p = &a;
    a.a = 99;
    printf("%d\n", (*p).a);
    return 0;
}

结构体变量名为a,类型为struct S。p是指针变量名,但是它的类型是struct S*。用点能够输出结构体中的内容,但是以指针来输出时,需要打上括号,因为跟点号结合的优先性大于*。

二、喝汽水问题,1元1瓶汽水,2个空瓶换一瓶汽水。写程序表示可以喝多少汽水

int main()
{
    int money = 0;
    int total = 0;
    int empty = 0;
    scanf("%d", &money);
    total = money;
    empty = money;
    while (empty >= 2)
    {
        total += empty / 2;
        empty = empty / 2 + empty % 2;
    }
    printf("total = %d\n", total);
    return 0;
}

或者找寻一下规律,20元能喝39个,10元能喝19个,7元能喝13个。所以

int main()
{
    int money = 0;
    int total = 0;
    int empty = 0;
    scanf("%d", &money);
    if (money == 0)
        total = 0;
    else
        total = 2 * money - 1;
    return 0;
}

三、调试部分题

C语言常见的错误包括编译错误,链接错误,运行时错误。

F5是开始调试,F10是逐过程调试,遇到函数不进入函数

F11是逐语句调试,可以观察调试的每个细节

F9是设置断点和取消断点

四、调整奇数偶数顺序

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

void move(int arr[], int sz)
{
    int left = 0;
    int right = sz - 1;
    while (left < right)
    {
        while ((left < right) && (arr[left] % 2 == 1))
        {
            left++;
        }
        while ((left < right) && (arr[right] % 2 == 0))
        {
            right--;
        }
        if (left < right)
        {
            int tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
        }
    }
}

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

五、数据存储部分题

大小端字节序指的是数据在电脑上存储的字节顺序。

大端字节序是高字节内容(高位)放到低地址,低字节内容(低位)存放在高地址。

小端字节序是高字节内容放到高地址,低字节内容存放在低地址。
 

六、字符指针部分题

32位系统下任何类型指针的长度都是4个字节。

当释放掉一个指针内容后,指针变量所指向的值不会变,但此时这个内容所占的空间已经还给电脑,所以应该当设为NULL。

结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值