C语言写代码给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。
时间: 2023-05-20 19:03:05 浏览: 131
可以使用以下代码实现:
```c
int* plusOne(int* digits, int digitsSize, int* returnSize){
int carry = 1;
for(int i = digitsSize - 1; i >= 0; i--){
digits[i] += carry;
carry = digits[i] / 10;
digits[i] %= 10;
}
if(carry == 1){
*returnSize = digitsSize + 1;
int* result = (int*)malloc(sizeof(int) * (*returnSize));
result[0] = 1;
for(int i = 0; i < digitsSize; i++){
result[i+1] = digits[i];
}
return result;
}else{
*returnSize = digitsSize;
return digits;
}
}
```
这个函数接受一个整数数组 `digits`,表示一个非负整数,返回一个新的整数数组,表示在该数的基础上加一。函数中使用了一个变量 `carry` 表示进位,从最低位开始加一,如果有进位则继续向高位进位,最后如果还有进位则需要在数组的最高位添加一个元素。
阅读全文