中易网

(87) 请选出以下程序段的输出结果

答案:4  悬赏:30  
解决时间 2021-04-27 21:01
  • 提问者网友:白越
  • 2021-04-27 10:53

(87) 请选出以下程序段的输出结果
#include<stdio.h>
main()
{ char sl[10], s2[10], s3[10], s4[10];
scanf("%s%s",s1,s2); gets(s3); gets(s4);
puts(s1); puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处<CR>代表回车符)
aaaa bbbb<CR>
cccc dddd<CR>
  A) aaaa B) aaaa C) aaaa D) aaaa bbbb
   bbbb bbbb bbbb cccc
   cccc cccc dddd dddd
   cccc dddd dddd eeee

为什么???????

最佳答案
  • 二级知识专家网友:夢想黑洞
  • 2021-04-27 12:12

s1为:aaaa  会以空格作为分隔

s2为:bbbb

s3为:空

s4为:cccc dddd

因为gets(s3)会把回车当结束符。所以没有接收到数据!

s4有cccc dddd,不会以空格作为分隔的

全部回答
  • 1楼网友:说多了都是废话
  • 2021-04-27 14:28
输出是 aaaa bbbb cccc dddd 原因的话,小姑娘你可以弄清楚一些常用的字符函数,比如 puts gets putchar getchar 已经常用的输入出函数scanf printf 等 《C程序设计语言》《C和指针》上都有专题讲解
  • 2楼网友:余生继续浪
  • 2021-04-27 13:34

gets(字符数组); 功能:从终端输入一个字符串(包括空格)赋给从字符数组起始的存储单元中,直到读入一个回车符为止。回车符读入后,不作为字符串的内容,系统将自动用’\0’替换,作为字符串结束的标志。

调用puts()函数实现字符串的输出,其调用形式为: puts(字符数组); 功能:将字符数组起始地址开始的一个字符串(以’\0’结束的字符序列)输出到终端,并将字符串结束标志’\0’转化成’\n’,自动输出一个换行符。

scanf 碰到回车 空格 TAB等都会结束 ,所以s1为aaaa s2 为bbbb

但此时gets(s3);读入的是回车,所以S3转换为"\0" 回车读入完后,结束s3的读入,然后读入s4的字符,此时的是cccc dddd 然后碰到回车,读入结束 ,此时"s4为cccc dddd\0"

所以输出为

  • 3楼网友:心痛成瘾
  • 2021-04-27 12:49
结果是
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息