3-5编程练习
来源:3-5 编程练习
qq_华仔_5
2018-03-06 14:50:44
#include<iostream>
using namespace std;
int main()
{
cout<<"请输入一个12字节数据:";
char mych[13]=" ";
cin>>mych;
char ch1[7]=" ",ch2[5]=" ";
for(int i=0;mych[i]!='\0';i++)
{
if(mych[i]>='a'&&mych[i]<='z')
{
ch1[i]=mych[i];
}else if(mych[i]>='0'&& mych[i]<='9')
{
ch2[i]=mych[i];
}
}
cout<<"字符数组ch1的值为:"<<ch1[i]<<endl;
cout<<"字符数组ch2的值为:"<<ch2[i ]<<endl;
return 0;
}
老师为啥这个运行会不对 呢
3回答
你好,代码有两个问题。
1 循环中对ch2的赋值不对,i从0开始增加,前面的字母都赋值给ch1,后面的都赋值给ch2,但是ch2的小标也是从0开始的,此时直接使用i作为ch2第一个字符的小标是不合理的
2 输出不对,你的输出方式只能输出字符串数组中的第i个元素,而不是整个数组,且字符串应该有'\0'作为结束符,这样输出时才不会乱码,加上结束符,那么ch1和ch2的字符串长度就应该定义为7和6。主函数代码修正如下
如果解决了你的问题,请采纳,祝学习愉快~
qq_华仔_5
提问者
2018-03-06
这样运行结果就不对
qq_华仔_5
提问者
2018-03-06
老师,在请教一下,就是我在定位ch1和ch2数组为啥要定义了它的长度7和5,运行才会没有错,不是可以不用写长度吗,会自动截取长度都嘛?
相似问题