C++简单问题

9.假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是______。A.chars[5]={"ABCDE"};put... 9. 假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是______。
A.char s[5]={"ABCDE"};puts(s) B.char s[5]={‘A’,’B’,’C’,’D’,’E’}; puts(s);
C.char *s;scanf(“%s”,s);puts(s); D.char *s; s="ABCDE";puts(s);

B不可以吗? C如果改成C.char *s;scanf(“%s”,&s);puts(s);是不是就可以了?
展开
 我来答
zkgogogo
推荐于2017-12-15 · TA获得超过458个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:0
展开全部
要正常输出ABCDE必须在字符串的末尾有'\0'作为结束,这样输出函数才知道什么时候终止。
A选项中字符串数组大小为5只能放ABCDE,放不下'\0'了。如果大小为6,会自动在后面补'\0'
B选项与A一样,放不下'\0'
C选项,楼主要知道,字符串读入进来是要存起来的,而s只是个指针,存不下这么多字符。必须是char s[6];scanf("%s",s);puts(s);
D选项是正确的,"ABCDE"作为静态常量存储于程序段,地址赋给s,可以正常输出。
百度网友cb8d0e198
2010-12-26 · TA获得超过1198个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:774万
展开全部
char *s;scanf(“%s”,s);puts(s);
没有给s分配内存,所以不能接收数据,而不是格式问题,因此,改成char *s;scanf(“%s”,&s);puts(s);,仍然不行!
B应改成char s[6]={‘A’,’B’,’C’,’D’,’E’,'\0'}; puts(s);
因为puts(s)中的s要有字符串结束标志,否则后面会输出乱码!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b36ecb836ca
2020-04-03 · TA获得超过3859个赞
知道大有可为答主
回答量:3113
采纳率:31%
帮助的人:269万
展开全部
cout提供了控制符:
dec、hex和oct,分别用于指示cout以十进制、十六进制和八进制格式显示整数。
cout<<hex<<42<<endl;
//结果为:2a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式