c语言给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
时间: 2024-09-15 19:14:10 浏览: 54
在C语言中,我们可以利用数组和循环来解决这个问题。由于数组是从低位到高位存储的,我们需要找到最高位,并检查它是否已经是9。如果是,我们就需要循环更新每一位,直到遇到可以置为1的位。如果最高位不是9,则直接加1即可。以下是简单的步骤:
```c
#include <stdio.h>
// Function to increment a non-negative integer represented by an array
void increment(int arr[], int size) {
for (int i = size - 1; i >= 0; i--) {
if (arr[i] != 9) { // 如果当前位不是9,直接加1
arr[i]++;
break; // 无需继续检查剩余位
} else { // 当前位是9,需要循环右移所有位并置最高位为0
while (i > 0 && arr[i] == 9) { // 从右往左寻找第一个非9的位置
arr[i] = 0;
i--;
}
if (i == 0) { // 找不到非9位置,需要将所有位置0然后从最低位加1
arr[0] = 1;
} else {
arr[i]++;
}
}
}
}
int main() {
int arr[] = {1, 2, 3}; // 示例数组
int size = sizeof(arr) / sizeof(arr[0]);
increment(arr, size);
for (int i = 0; i < size; i++) {
printf("%d", arr[i]); // 输出结果
}
return 0;
}
```
阅读全文