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

CristianoC20 2017-11-30 01:00:35
#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;
}虽然可以执行但是结果如下
...全文
1959 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
3m2u 2017-12-01
  • 打赏
  • 举报
回复
不知道你想干嘛 分别改成这两个看有没有你需要的 1. 外面初始化 sum=0; 循环里面 sum=sum*10+(*p)-'0'; 2. 外面初始化sum=1; sum *=*p-'0';
CristianoC20 2017-12-01
  • 打赏
  • 举报
回复
引用 23楼小熊之怒 的回复:
引用 22 楼 cristiano20 的回复:
[quote=引用 21 楼 qq_37347705 的回复:] 对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
我上面有用图片回复,你看看。还是多看看书。[/quote]我明白你的程序是对的..但我看不出我有什么逻辑错误...
小熊之怒 2017-12-01
  • 打赏
  • 举报
回复
引用 22 楼 cristiano20 的回复:
引用 21 楼 qq_37347705 的回复:
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
我上面有用图片回复,你看看。还是多看看书。
白菜咸肉 2017-12-01
  • 打赏
  • 举报
回复
小熊之怒 2017-12-01
  • 打赏
  • 举报
回复
引用 24 楼 cristiano20 的回复:
引用 23楼小熊之怒 的回复:
[quote=引用 22 楼 cristiano20 的回复:] [quote=引用 21 楼 qq_37347705 的回复:] 对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
我上面有用图片回复,你看看。还是多看看书。[/quote]我明白你的程序是对的..但我看不出我有什么逻辑错误...[/quote] 使用vs打断点,哪里不懂断哪里,一步步分析,每一步和预期的不一样就停下,查找错误。
3m2u 2017-12-01
  • 打赏
  • 举报
回复
你的概念不清。看起来你是要把一个字符串转成数字。 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结束 的
CristianoC20 2017-12-01
  • 打赏
  • 举报
回复
引用 25楼3m2u 的回复:
不知道你想干嘛 分别改成这两个看有没有你需要的 1. 外面初始化 sum=0; 循环里面 sum=sum*10+(*p)-'0'; 2. 外面初始化sum=1; sum *=*p-'0';
我后来改成你说的第一个了 但最后输出的sum为0
CristianoC20 2017-11-30
  • 打赏
  • 举报
回复
引用 21 楼 qq_37347705 的回复:
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
小熊之怒 2017-11-30
  • 打赏
  • 举报
回复
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
小熊之怒 2017-11-30
  • 打赏
  • 举报
回复


我把你的函数,改了下。不知道这是不是你要的结果。你也没说题目是什么
CristianoC20 2017-11-30
  • 打赏
  • 举报
回复
引用 17 楼 qq_37347705 的回复:
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
使用chumn函数则是题目要求 现在我是不明白为什么我的sum没实现输出
CristianoC20 2017-11-30
  • 打赏
  • 举报
回复
引用 16 楼 qq_37347705 的回复:
引用 15 楼 cristiano20 的回复:
[quote=引用 12 楼 qq_37347705 的回复:] sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗
你要实现什么功能? 你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum 在函数开始时候,你是用int sum = 0; *p - '0';没有这样的写法,使用数字时候不需要加引号。[/quote]1.我后面不是补充了主函数输入sum来实现输出整个数字吗2.*p - '0'是实现数字字符变成数字的写法
小熊之怒 2017-11-30
  • 打赏
  • 举报
回复

这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
小熊之怒 2017-11-30
  • 打赏
  • 举报
回复
引用 15 楼 cristiano20 的回复:
引用 12 楼 qq_37347705 的回复:
sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗
你要实现什么功能? 你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum 在函数开始时候,你是用int sum = 0; *p - '0';没有这样的写法,使用数字时候不需要加引号。
CristianoC20 2017-11-30
  • 打赏
  • 举报
回复
引用 12 楼 qq_37347705 的回复:
sum初始化为0, 0*sum=0,always。
在函数外一开始不是已经初始化了吗
CristianoC20 2017-11-30
  • 打赏
  • 举报
回复
引用 11楼yang_deyuan 的回复:
C++最好不要用这种C风格的字符串。
因为没学c刚学c++能否说清楚一些
CristianoC20 2017-11-30
  • 打赏
  • 举报
回复
引用 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++;
}
那个不是本来就隐含在数组里面的吗
小熊之怒 2017-11-30
  • 打赏
  • 举报
回复
sum初始化为0, 0*sum=0,always。
yang_deyuan 2017-11-30
  • 打赏
  • 举报
回复
C++最好不要用这种C风格的字符串。
自信男孩 2017-11-30
  • 打赏
  • 举报
回复
char b[] = { '1','2','3','4','5'};
改为
char b[] = { '1','2','3','4','5', '\0'};
定义这个数组时,注意在最后加一个'\0',因为若不加这个,下面的循环不能正常退出,可能多计算字符数字;
while (*p) {
sum*=sum;
*p = *p - '0';
p++;
}
加载更多回复(9)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧