[英]Inputting numbers in char array
关于此问题,我需要在程序中输入100位数字并对其执行操作。 我想我会用一个char数组来做到这一点。
我尝试了一段时间后写了这段代码。
int main()
{
//int cases=10;
//while(cases--)
//{
int i;
char totalapples[102];
//char klaudia_apples[200] , natalia_apples[200];
for(i=0;totalapples[i]!='\0';i++)
{
cin>>totalapples[i];
}
//cin>>moreapples[200];
//cout<<moreapples[200];
while(i--)
{
cout<<totalapples[i];
}
//}
return 0;
}
运行此命令时,将得到以下结果:
Input : 1234657891234567981345698
Output : 987564321
任何人都可以告诉发生了什么事吗?
您的程序调用未定义的行为。 尽管char
数组包含未定义的值,您仍然尝试使用
totalapples[i]!='\0'
在您的for
循环中。 相反,将整个字符串读入std::string
:
string totalApplesStr;
cin >> totalApplesStr;
现在您可以遍历totalApplesStr
:
for (char c : totalApplesStr) {
/* Do whatever you need to */
}
或者,如果这不是代码中的逻辑错误,则可以从头到尾进行迭代:
for (auto it = totalApplesStr.rbegin(); it != totalApplesStr.rend(); ++it) {
/* Do whatever you need to */
}
使用std :: string代替char数组。
然后,您可以使用std :: tranform转换为int向量来进行大数计算。
您尝试从尚未初始化的数组中测试值。
尽管char数组是可用于此目的的最不安全的方法,但可以使用初始化程序对其进行修复:
char totalapples[102] = {0};
同样,您的第二个循环将向后打印结果。 尝试递增到 i
,而不是递减i
。
您新初始化了计数器/索引。 还有许多其他改进要做,但是您的代码很短
#define ARRAY_SIZE 102
int main {
char totalapples[ARRAY_SIZE];
unsigned int i = ARRAY_SIZE;
i = 0;
while (i < ARRAY_SIZE)
{
cin>>totalapples[i]; // range is 0..101
i++;
}
i = ARRAY_SIZE;
while (i > 0)
{
cout<<totalapples[i]; // range is 0..101
i--;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.