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;
}虽然可以执行但是结果如下
29 个解决方案
#1
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#2
for (i = 0; i < 6; i++) //这个b[i]调用越界了
#3
感谢!
#4
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100?
#5
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100? 感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#6
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊 这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100? 感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#7
b是char类型的,要强制转化为int
#8
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊 这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100? 感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#9
b是char类型的,要强制转化为int
#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
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
C++最好不要用这种C风格的字符串。
#15
sum初始化为0, 0*sum=0,always。
#16
在函数外一开始不是已经初始化了吗
sum初始化为0, 0*sum=0,always。
你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。
#17
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
#18
在函数外一开始不是已经初始化了吗
sum初始化为0, 0*sum=0,always。
你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。
#19
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
#20
我把你的函数,改了下。不知道这是不是你要的结果。你也没说题目是什么
#21
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
#22
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
#23
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
我上面有用图片回复,你看看。还是多看看书。
#24
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
我上面有用图片回复,你看看。还是多看看书。
#25
不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面
sum=sum*10+(*p)-'0';
2. 外面初始化sum=1;
sum *=*p-'0';
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面
sum=sum*10+(*p)-'0';
2. 外面初始化sum=1;
sum *=*p-'0';
#26
不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面
sum=sum*10+(*p)-'0';
2. 外面初始化sum=1;
sum *=*p-'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结束 的
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
我明白你的程序是对的..但我看不出我有什么逻辑错误... 喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
我上面有用图片回复,你看看。还是多看看书。
使用vs打断点,哪里不懂断哪里,一步步分析,每一步和预期的不一样就停下,查找错误。
#29
#1
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#2
for (i = 0; i < 6; i++) //这个b[i]调用越界了
#3
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#4
感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#5
这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100? 感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#6
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊 这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100? 感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#7
b是char类型的,要强制转化为int
#8
楼上不是和你说了么,越界了啊,0,1,2,3,4,5,i有6个数,你数组中只有5个,越界后会发生不可预估的情况啊 这也是个问题 那为什么i是5的时候也就是‘、0‘的时候代表的数字是-100? 感谢!
cout << "数组第" << i + 1 << "个数字为" << static_cast<int>(b[i]);
#9
b是char类型的,要强制转化为int
#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
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
C++最好不要用这种C风格的字符串。
#15
sum初始化为0, 0*sum=0,always。
#16
在函数外一开始不是已经初始化了吗
sum初始化为0, 0*sum=0,always。
你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。
#17
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
#18
在函数外一开始不是已经初始化了吗
sum初始化为0, 0*sum=0,always。
你要实现什么功能?
你使用的sum变量根本没什么用,初始化为0,sum*=sum就是sum = sum*sum
在函数开始时候,你是用int sum = 0;
*p - '0';没有这样的写法,使用数字时候不需要加引号。
#19
这样写,不用你的chumn函数。输出结果在那,不知道是不是你要达到的目地。
#20
我把你的函数,改了下。不知道这是不是你要的结果。你也没说题目是什么
#21
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
#22
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
#23
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
我上面有用图片回复,你看看。还是多看看书。
#24
喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
我上面有用图片回复,你看看。还是多看看书。
#25
不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面
sum=sum*10+(*p)-'0';
2. 外面初始化sum=1;
sum *=*p-'0';
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面
sum=sum*10+(*p)-'0';
2. 外面初始化sum=1;
sum *=*p-'0';
#26
不知道你想干嘛
分别改成这两个看有没有你需要的
1. 外面初始化 sum=0;
循环里面
sum=sum*10+(*p)-'0';
2. 外面初始化sum=1;
sum *=*p-'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结束 的
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
我明白你的程序是对的..但我看不出我有什么逻辑错误... 喔哦 我的代码我改了sum*=sum那里 可还是输出的数字为0....你知道为什么吗 可以留个QQ或者微信交流一下?
对了,补充一下。一般sum是用来定义求和的变量。不是乘法。mul是乘法的变量,变量最好不要随便起。
我上面有用图片回复,你看看。还是多看看书。
使用vs打断点,哪里不懂断哪里,一步步分析,每一步和预期的不一样就停下,查找错误。