3-5编程练习

3-5编程练习

#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。主函数代码修正如下

http://img1.sycdn.imooc.com//climg/5a9e460800019a1f04080351.jpg

如果解决了你的问题,请采纳,祝学习愉快~


  • qq_华仔_5 提问者 #1
    老师,在请教一下,就是我在定位ch1和ch2数组为啥要定义了它的长度8和6,运行才会没有错,不是可以不用写长度吗,会自动截取长度
    2018-03-06 16:25:39
提问者 qq_华仔_5 2018-03-06 16:23:43

图片加载失败这样运行结果就不对

提问者 qq_华仔_5 2018-03-06 16:21:19

老师,在请教一下,就是我在定位ch1和ch2数组为啥要定义了它的长度7和5,运行才会没有错,不是可以不用写长度吗,会自动截取长度都嘛?

  • 可以省略的前提是声明的时候就赋初值,如下: char ch1[]="imooc"; 如果声明的时候没有赋初值就必须填入确定的长度,否则系统会报错。
    2018-03-06 17:03:28
  • 提问者 qq_华仔_5 #2
    明白了,谢谢老师
    2018-03-07 09:06:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       593    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师