问题描述
- 执行下列程序是输入,123<空格>456<空格>789<回车>,输出的结果是?
-
执行下列程序是输入,123<空格>456<空格>789<回车>,输出的结果是?
main()
{char s[100];
int c,i;
scanf("%c",&c);
scanf("%d",&i);
scanf("%s",s);
printf("%c,%d,%sn",c,i,s);
}解释一下,谢谢你们
解决方案
首先从输入流 读入一个字符 付给 int型的 c 。这样是可以的 因为char型本质是短int型、因此你把 int c当 char c 使用 除了浪费内存也没多大问题
然后读入一个int i 从输入流读入 23 遇到空格 结束 将23 赋给 i
最后读入一个字符串 从输入流开始读入 直到遇到 空格 将456赋给 s
输出
解决方案二:
输出的结果为
1,23,456
因为char类型本身为一字节,存储的类型也是单个字符,在C语言中,当输入超出数据类型时,自动认为输入完成。所以当输入123时,其实在1之后就已经完成了对char类型数据的输入,后边的23是对int类型的输入,因为输完23和输完456之后有空格,标志着输入结束,所以最终结果为
1,23,456
时间: 2025-01-30 04:43:53