达不到第三个效果,问题在哪,325187没有输出

img


/*(3)数字字符与整数转换算法:将字符串“#b78c15fk23d*”中整型数据提取出来,合成一个整型数781523并输出来。再将781523整数的各个数位数字拆开存放到一维数组int b[10]中,将一维数组中的元素转换为字符数组s[100]中,输出该数字字符串“325187”。*/
#include <iostream>
#include <string>
using namespace std;
void show_string(char t[200])//输出字符串
{
    cout << t << endl;
}
int tiqu(char t[200], int len)
{
    int j = 0;
    for (int i = 0; i < len; i++)
    {
        if (t[i] >= '0' && t[i] < '9')
        {
            j = j * 10 + t[i] - '0';
        }
    }
    return j;
}
int store_int(int z,int o[10])
{
    int m = z;//防止z数据丢失
    int n = 0;//记录m的位数
    while (m) { m /= 10; n++; }
    for (int i = n-1; i >=0; i--)
    {
        
        o[i] = z%10;
        z = z / 10;
    }
    return n;
}
void show_int(int q[],int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << q[i];
    }
}
void store_string(int t[10],int len, char s[100])
{
    for (int i = 0; i < len; i++)
    {
        s[i] = (char)t[i];//将t中元素储存到s中
    }
    char* p1 = &s[0];//z指向s[0]的位置
    char* p2 = &s[len-1];//z指向s[len-1]的位置
    while (p1 < p2);
    {
        char *t = 0;
        *t = *p1;
        *p1 = *p2;
        *p2 = *t;
        p1++;
        p2--;
    }
    cout << s;
}

int main()
{
    char d[200] = { "#78c15fk23d" };
    show_string(d);
    int j = strlen(d);//计算字符串长度
    int k = tiqu(d, j);//提取出781523
    cout << k << endl;
    int b[10];
    int c=store_int(k, b);//返回k的位数
    show_int(b,c);
    char s[100];
    store_string(b, c, s);
    show_string(s);
    return 0;

while后面多了一个分号,需要把它删了

img

存到字符串数组时,要加上'0'

img

临时变量应该是char类型,而不是char*类型

img

完整代码:


/*(3)数字字符与整数转换算法:将字符串“#b78c15fk23d*”中整型数据提取出来,合成一个整型数781523并输出来。再将781523整数的各个数位数字拆开存放到一维数组int b[10]中,将一维数组中的元素转换为字符数组s[100]中,输出该数字字符串“325187”。*/
#include <iostream>
#include <string>
using namespace std;
void show_string(char t[200])//输出字符串
{
    cout << t << endl;
}
int tiqu(char t[200], int len)
{
    int j = 0;
    for (int i = 0; i < len; i++)
    {
        if (t[i] >= '0' && t[i] < '9')
        {
            j = j * 10 + t[i] - '0';
        }
    }
    return j;
}
int store_int(int z, int o[10])
{
    int m = z;//防止z数据丢失
    int n = 0;//记录m的位数
    while (m) { m /= 10; n++; }
    for (int i = n - 1; i >= 0; i--)
    {

        o[i] = z % 10;
        z = z / 10;
    }
    return n;
}
void show_int(int q[], int len)
{
    for (int i = 0; i < len; i++)
    {
        cout << q[i];
    }
    cout << endl;
}
void store_string(int t[10], int len, char s[100])
{
    for (int i = 0; i < len; i++)
    {
        s[i] = (char)t[i] + '0';//将t中元素储存到s中
    }
    char* p1 = &s[0];//z指向s[0]的位置
    char* p2 = &s[len - 1];//z指向s[len-1]的位置
    while (p1 < p2)
    {
        char t = 0;
        t = *p1;
        *p1 = *p2;
        *p2 = t;
        p1++;
        p2--;
    }
    cout << s << endl;
}

int main()
{
    char d[200] = { "#78c15fk23d" };
    show_string(d);
    int j = strlen(d);//计算字符串长度
    int k = tiqu(d, j);//提取出781523
    cout << k << endl;
    int b[10];
    int c = store_int(k, b);//返回k的位数
    show_int(b, c);
    char s[100] = { 0 };
    store_string(b, c, s);
    show_string(s);
    return 0;
}