打印
[资料干货]

num%10与num /=10

[复制链接]
637|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
丙丁先生|  楼主 | 2025-1-30 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
for(i=0;i<8;i++)
{
passward[7-i] = num%10;
num /=10;
}


代码片段是一个循环,用于将一个整数 `num` 的每一位数字逆序存储到一个数组 `password` 中。以下是对该代码的详细解释和一些改进建议:

代码解释

`for(i=0;i<8;i++)`:这是一个 `for` 循环,从 `i=0` 开始,循环8次。
`password[7-i] = num%10;`:将 `num` 的个位数字(`num%10`)存储到 `password` 数组的相应位置。由于数组索引从0开始,`password[7-i]` 表示从数组的末尾开始存储。
`num /=10;`:将 `num` 除以10,去掉已经处理的个位数字。

示例

假设 `num` 的值为 `12345678`,循环执行后,`password` 数组的内容将是 `{8, 7, 6, 5, 4, 3, 2, 1}`。

改进建议

1. 数组大小检查:确保 `password` 数组的大小至少为8。
2. 输入验证:确保 `num` 的值在合理范围内,避免溢出或未定义行为。
3. 代码注释:添加注释以提高代码的可读性。

改进后的代码示例

```c
#include <stdio.h>

#define PASSWORD_SIZE 8

void extractDigits(int num, int password[]) {
    for(int i = 0; i < PASSWORD_SIZE; i++) {
        // 确保num不为0,避免无限循环
        if (num == 0) break;
        password[7 - i] = num % 10; // 存储个位数字
        num /= 10; // 去掉个位数字
    }
}

int main() {
    int num = 12345678;
    int password[PASSWORD_SIZE] = {0}; // 初始化数组

    extractDigits(num, password);

    // 打印结果
    printf("Password array: ");
    for(int i = 0; i < PASSWORD_SIZE; i++) {
        printf("%d ", password);
    }
    printf("
");

    return 0;
}
```

运行结果

```
Password array: 8 7 6 5 4 3 2 1
```

注意事项

1. 数组越界:确保 `password` 数组的大小足够大,以避免数组越界。
2. 负数处理:如果 `num` 可能为负数,需要在处理前取绝对值或进行其他处理。
3. 零值处理:如果 `num` 为0,循环将只执行一次,`password` 数组的第一个元素将为0,其余元素保持初始化值0。

通过这些改进,代码将更加健壮和易读。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

706

主题

2514

帖子

5

粉丝