编辑代码

#include <stdio.h>

void itostr_recursive(int num, char* str, int* index) {
    if (num == 0) {
        return;  // 基本情况:数字为0时停止递归
    }

    // 递归调用,处理更高位
    itostr_recursive(num / 10, str, index);

    // 当前数字的个位数转换为字符
    str[*index] = (num % 10) + '0';
    (*index)++;  // 更新索引
}

void itostr(int num, char* str) {
    // 处理负数
    int isNegative = 0;
    if (num < 0) {
        isNegative = 1;
        num = -num;  // 转换为正数以便处理
    }

    // 特殊情况:如果数字为0
    if (num == 0) {
        str[0] = '0';
        str[1] = '\0';  // 结束符
        return;
    }

    // 设置索引位置,开始递归转换
    int index = 0;
    itostr_recursive(num, str, &index);
    
    // 如果是负数,将负号加到字符串的前面
    if (isNegative) {
        // 将所有字符右移一位
        for (int i = index; i >= 0; i--) {
            str[i + 1] = str[i];
        }
        str[0] = '-';
        index++;  // 增加负号后的字符数量
    }

    str[index] = '\0';  // 结束符
}

int main() {
    int t;
    scanf("%d",&t);
    while(t--){
        int num;
        scanf("%d",&num);
        char str[20];  // 确保足够的空间
        itostr(num, str);  // 转换整数为字符串
        printf("转换后的字符串是: %s\n", str);
    }
    
    
    return 0;
}