初学C++,求助一道编程题。要按照要求来做,实在没什么想法,求前辈指点(大一学生,初学菜鸟)

图片说明
图片说明
图片说明

0

6个回答

void itostr(int num, char str[]) {
    const int MAX_LEN = 20;
    char tmp[MAX_LEN] = { '\0' };

  // 数字转字符
    int i = 0;
    while(num >= 0) {
        tmp[i++] = num % 10 + '0';
        num /= 10;
    }

    // 反转字符串
    for(int j = 0, i = i - 1; i >=0; j++, i--) {
        str[j] = tmp[i];
    }
}

大概就是这样,
十进制整数 % 10 取个位, / 10 取高位,知道这个就不难做了

1
zzzzhdx
emmmmmmzh 你的这代码我知道。。。只是老师的要求是在不改动主函数的情况下用递归算法来实现。。。所以我不会。。。。还望指教
一年多之前 回复
zzzzhdx
emmmmmmzh 你的这代码我知道。。。只是老师的要求是在不改动主函数的情况下用递归算法来实现。。。所以我不会。。。。还望指教
一年多之前 回复

前面代码有错误,我改了一下

 void itostr(int num, char str[]) {
    const int MAX_LEN = 20;
    char tmp[MAX_LEN] = { '\0' };

    int i = 0;
    while(num > 0) {
        tmp[i++] = (num % 10) + '0';  // 数字转字符
        num /= 10;
    }

  // 反转字符串
    for(int j = 0, k = i - 1; k >=0; j++, k--) {
        str[j] = tmp[k];
    }
    str[i] = '\0';
}

大概就是这样,
十进制整数 % 10 取个位, / 10 取高位,知道这个就不难做了

1

关键不能改动主函数让我难以解决

0

#include

using std::cin;
using std::cout;
using std::endl;

void itostr(int num, char str[]);

int main()
{
const int SIZE = 20;
int t, num;
char str[SIZE];

cin >> t;
while (t--)
{
    cin >> num;
    itostr(num, str);
    cout << str << endl;
}


return 0;

}

void itostr(int num, char str[])
{
_itoa_s(num, str, 40, 10);
}

0

void itostr(int num,char str[])
{
//计算sum的位数 注意:当sum是3位数的时候i=2
int n=sum;
for(int i=19;n!=0;i--)
{
n/=10;
}
i++;
//num大于等于2位数
if(i<=18)
{
str[i]=num%10+'0';
itostr(num/10,str);
}
else //sum=1位时str[19]=num;
{
str[i]=num;
for(int j=
}
}
我想不下去了,因为有一点无法弄好,那就是无法确认这个num的长度,思想是从低位数到高位数截取,每次递归截取一个,然后num消去最低位继续递归,
直到num是1位数的时候 就结束,在这个过程中一直给str[]数组赋值,每次进入递归的时候都要重新判断num的位数,用位数确认数组下标进行str[]赋值操作,
问题来了,那就是无法确认到底有多长这个数组,因为不可修改源代码,你想想怎么才能在递归函数中加一个标志字符串结束的标志位。。

0

void itostr(int num,char str[]) 例如 123 str[17]=123%10=3 str[18]=12%10=2; str[19]=1%10=1; 最终i绝对会等于19,但是你不知道之前i最小是多少的问题~
{
int n=sum;
for(int i=19;n!=0;i--)
{
n/=10;
}
i++;
//num大于等于2位数
if(i<=18)
{
str[i]=num%10+'0';
itostr(num/10,str);
}
else //sum=1位时str[19]=num;
{
str[i]=num;
for(int j=
}
}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!