C++ 将数字字符串转化成一个整数

时间:2023-01-07 08:54:03
#include<iostream>
using namespace std;
int chumn(char *p) {
int sum = 0;
while (*p) {
sum*=sum;
*p = *p - '0';
p++;
}
return sum;
}
int main() {
char b[] = { '1','2','3','4','5'};
chumn(b);
int i = 0;
for (i = 0; i < 6; i++) {
cout << "数组第" << i + 1 << "个数字为" << b[i];
}
system("pause");
return 0;
}虽然可以执行但是结果如下 C++ 将数字字符串转化成一个整数

29 个解决方案

#1


cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);

#2


for (i = 0; i < 6; i++)  //这个b[i]调用越界了
 

#3


引用 1 楼 litchgu 的回复:
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!

#4


引用 3 楼 cristiano20 的回复:
Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?

#5


引用 4 楼 cristiano20 的回复:
Quote: 引用 3 楼 cristiano20 的回复:

Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊

#6


引用 5楼litchgu 的回复:
Quote: 引用 4 楼 cristiano20 的回复:

Quote: 引用 3 楼 cristiano20 的回复:

Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊
噢噢

#7


b是char类型的,要强制转化为int

#8


引用 5楼litchgu 的回复:
Quote: 引用 4 楼 cristiano20 的回复:

Quote: 引用 3 楼 cristiano20 的回复:

Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊
老哥能不能帮我看看为什么sum的值没输出 C++ 将数字字符串转化成一个整数

#9


引用 7楼yx777777 的回复:
b是char类型的,要强制转化为int
嗯嗯明白 老哥能不能帮我看看我的sum值为什么没输出 C++ 将数字字符串转化成一个整数

#10


char b[] = { '1','2','3','4','5'};

改为
char b[] = { '1','2','3','4','5', '\0'};

定义这个数组时,注意在最后加一个'\0',因为若不加这个,下面的循环不能正常退出,可能多计算字符数字;
while (*p) {
sum*=sum;
*p = *p - '0';
p++;
}

#11


C++最好不要用这种C风格的字符串。

#12


sum初始化为0, 0*sum=0,always。

#13


引用 10楼自信男孩 的回复:
char b[] = { '1','2','3','4','5'};

改为
char b[] = { '1','2','3','4','5', '\0'};

定义这个数组时,注意在最后加一个'\0',因为若不加这个,下面的循环不能正常退出,可能多计算字符数字;
while (*p) {
sum*=sum;
*p = *p - '0';
p++;
}
那个不是本来就隐含在数组里面的吗

#14


引用 11楼yang_deyuan 的回复:
C++最好不要用这种C风格的字符串。
因为没学c刚学c++能否说清楚一些

#15


引用 12 楼 qq_37347705 的回复:
sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗

#16


引用 15 楼 cristiano20 的回复:
Quote: 引用 12 楼 qq_37347705 的回复:

sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗

你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。

#17


C++ 将数字字符串转化成一个整数
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。

#18


引用 16 楼 qq_37347705 的回复:
Quote: 引用 15 楼 cristiano20 的回复:

Quote: 引用 12 楼 qq_37347705 的回复:

sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗

你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。
1.我后面不是补充了主函数输入sum来实现输出整个数字吗2.*p - '0'是实现数字字符变成数字的写法

#19


引用 17 楼 qq_37347705 的回复:
C++ 将数字字符串转化成一个整数
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
使用chumn函数则是题目要求 现在我是不明白为什么我的sum没实现输出

#20


C++ 将数字字符串转化成一个整数

我把你的函数,改了下。不知道这是不是你要的结果。你也没说题目是什么

#21


对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。

#22


引用 21 楼 qq_37347705 的回复:
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?

#23


引用 22 楼 cristiano20 的回复:
Quote: 引用 21 楼 qq_37347705 的回复:

对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?


我上面有用图片回复,你看看。还是多看看书。

#24


引用 23楼小熊之怒 的回复:
Quote: 引用 22 楼 cristiano20 的回复:

Quote: 引用 21 楼 qq_37347705 的回复:

对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?


我上面有用图片回复,你看看。还是多看看书。
我明白你的程序是对的..但我看不出我有什么逻辑错误...

#25


不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面 
sum=sum*10+(*p)-'0';

2. 外面初始化sum=1;
sum *=*p-'0';

#26


引用 25楼3m2u 的回复:
不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面 
sum=sum*10+(*p)-'0';

2. 外面初始化sum=1;
sum *=*p-'0';
我后来改成你说的第一个了 但最后输出的sum为0

#27


你的概念不清。看起来你是要把一个字符串转成数字。
int main() {
char b[] = { '1','2','3','4','5'};
chumn(b);
你这么定义 b是不行的。c中字符串要以\0结束,
你可以这么定义 
char b[] = { '1','2','3','4','5','\0'};
也可以这么定义 
char b[]="12345";
也可以这么定义 
char* b="12345";
唯独你那个不行。后面的因为是字符串默认后面都有\0结束 的

#28


引用 24 楼 cristiano20 的回复:
Quote: 引用 23楼小熊之怒 的回复:
Quote: 引用 22 楼 cristiano20 的回复:

Quote: 引用 21 楼 qq_37347705 的回复:

对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?


我上面有用图片回复,你看看。还是多看看书。
我明白你的程序是对的..但我看不出我有什么逻辑错误...

使用vs打断点,哪里不懂断哪里,一步步分析,每一步和预期的不一样就停下,查找错误。

#29


C++ 将数字字符串转化成一个整数C++ 将数字字符串转化成一个整数

#1


cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);

#2


for (i = 0; i < 6; i++)  //这个b[i]调用越界了
 

#3


引用 1 楼 litchgu 的回复:
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!

#4


引用 3 楼 cristiano20 的回复:
Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?

#5


引用 4 楼 cristiano20 的回复:
Quote: 引用 3 楼 cristiano20 的回复:

Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊

#6


引用 5楼litchgu 的回复:
Quote: 引用 4 楼 cristiano20 的回复:

Quote: 引用 3 楼 cristiano20 的回复:

Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊
噢噢

#7


b是char类型的,要强制转化为int

#8


引用 5楼litchgu 的回复:
Quote: 引用 4 楼 cristiano20 的回复:

Quote: 引用 3 楼 cristiano20 的回复:

Quote: 引用 1 楼 litchgu 的回复:

cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
感谢!
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊
老哥能不能帮我看看为什么sum的值没输出 C++ 将数字字符串转化成一个整数

#9


引用 7楼yx777777 的回复:
b是char类型的,要强制转化为int
嗯嗯明白 老哥能不能帮我看看我的sum值为什么没输出 C++ 将数字字符串转化成一个整数

#10


char b[] = { '1','2','3','4','5'};

改为
char b[] = { '1','2','3','4','5', '\0'};

定义这个数组时,注意在最后加一个'\0',因为若不加这个,下面的循环不能正常退出,可能多计算字符数字;
while (*p) {
sum*=sum;
*p = *p - '0';
p++;
}

#11


C++最好不要用这种C风格的字符串。

#12


sum初始化为0, 0*sum=0,always。

#13


引用 10楼自信男孩 的回复:
char b[] = { '1','2','3','4','5'};

改为
char b[] = { '1','2','3','4','5', '\0'};

定义这个数组时,注意在最后加一个'\0',因为若不加这个,下面的循环不能正常退出,可能多计算字符数字;
while (*p) {
sum*=sum;
*p = *p - '0';
p++;
}
那个不是本来就隐含在数组里面的吗

#14


引用 11楼yang_deyuan 的回复:
C++最好不要用这种C风格的字符串。
因为没学c刚学c++能否说清楚一些

#15


引用 12 楼 qq_37347705 的回复:
sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗

#16


引用 15 楼 cristiano20 的回复:
Quote: 引用 12 楼 qq_37347705 的回复:

sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗

你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。

#17


C++ 将数字字符串转化成一个整数
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。

#18


引用 16 楼 qq_37347705 的回复:
Quote: 引用 15 楼 cristiano20 的回复:

Quote: 引用 12 楼 qq_37347705 的回复:

sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗

你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。
1.我后面不是补充了主函数输入sum来实现输出整个数字吗2.*p - '0'是实现数字字符变成数字的写法

#19


引用 17 楼 qq_37347705 的回复:
C++ 将数字字符串转化成一个整数
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
使用chumn函数则是题目要求 现在我是不明白为什么我的sum没实现输出

#20


C++ 将数字字符串转化成一个整数

我把你的函数,改了下。不知道这是不是你要的结果。你也没说题目是什么

#21


对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。

#22


引用 21 楼 qq_37347705 的回复:
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?

#23


引用 22 楼 cristiano20 的回复:
Quote: 引用 21 楼 qq_37347705 的回复:

对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?


我上面有用图片回复,你看看。还是多看看书。

#24


引用 23楼小熊之怒 的回复:
Quote: 引用 22 楼 cristiano20 的回复:

Quote: 引用 21 楼 qq_37347705 的回复:

对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?


我上面有用图片回复,你看看。还是多看看书。
我明白你的程序是对的..但我看不出我有什么逻辑错误...

#25


不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面 
sum=sum*10+(*p)-'0';

2. 外面初始化sum=1;
sum *=*p-'0';

#26


引用 25楼3m2u 的回复:
不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面 
sum=sum*10+(*p)-'0';

2. 外面初始化sum=1;
sum *=*p-'0';
我后来改成你说的第一个了 但最后输出的sum为0

#27


你的概念不清。看起来你是要把一个字符串转成数字。
int main() {
char b[] = { '1','2','3','4','5'};
chumn(b);
你这么定义 b是不行的。c中字符串要以\0结束,
你可以这么定义 
char b[] = { '1','2','3','4','5','\0'};
也可以这么定义 
char b[]="12345";
也可以这么定义 
char* b="12345";
唯独你那个不行。后面的因为是字符串默认后面都有\0结束 的

#28


引用 24 楼 cristiano20 的回复:
Quote: 引用 23楼小熊之怒 的回复:
Quote: 引用 22 楼 cristiano20 的回复:

Quote: 引用 21 楼 qq_37347705 的回复:

对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?


我上面有用图片回复,你看看。还是多看看书。
我明白你的程序是对的..但我看不出我有什么逻辑错误...

使用vs打断点,哪里不懂断哪里,一步步分析,每一步和预期的不一样就停下,查找错误。

#29


C++ 将数字字符串转化成一个整数C++ 将数字字符串转化成一个整数