鱼C论坛

 找回密码
 立即注册
查看: 4181|回复: 9

一个简单的关于输入输出的问题

[复制链接]
发表于 2013-3-5 23:19:58 | 显示全部楼层 |阅读模式
5鱼币
#include <stdio.h>
int main()
{
int a,b;
char c,d;
scanf("%d,%c",&c,&d);
printf("%d %c\n %d %c\n",c,c,d,d);
return 0;
}
Y(3]ZLD$Y1RI]9~S1(5.jpg Z5}I})F9HXVPH7LED3KBB8O.jpg

1 为什么c在格式符为%d的情况下输入字母,但是在输出时%d的输出值为什么不是这个字符的asc码值,在%c的情况下不是原字母呢?
2为什么变量d输出的结果总是不变的?在%c格式下输入字母为什么输出在格式%c下不是原数字,在%d的输出格式下不是这个数字的asc码值呢?



最佳答案

查看完整内容

关键问题在于scanf是格式化接受输入的函数,当你用%c的时候,就只能接收你的字符;当你用%d的时候,就只能接收你的整数,如果匹配不上,就会导致后面也错乱了。 你的程序,输入可以是:65,A,那就会得到你想要的结果了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-5 23:19:59 | 显示全部楼层
关键问题在于scanf是格式化接受输入的函数,当你用%c的时候,就只能接收你的字符;当你用%d的时候,就只能接收你的整数,如果匹配不上,就会导致后面也错乱了。
你的程序,输入可以是:65,A,那就会得到你想要的结果了。
QQ截图20130306083247.bmp
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-6 08:37:39 | 显示全部楼层
你看第一次你输入的是A,A,%d匹配不上,所以后面的%c也没有得到正确结果;而第二次你的输入是:65,65,%d匹配上了,%c没有匹配上,所以前面的结果是对的,后面d的结果就是错误的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-6 13:18:54 | 显示全部楼层
问题应该出在scanf上面 !你%d的时候输入一个字母“A”,应该是会出问题的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-6 21:41:59 | 显示全部楼层

原来是是这样,谢谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-6 21:43:45 | 显示全部楼层
小新110 发表于 2013-3-6 08:37
你看第一次你输入的是A,A,%d匹配不上,所以后面的%c也没有得到正确结果;而第二次你的输入是:65,65,%d匹 ...

也很谢谢你~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-6 21:44:21 | 显示全部楼层
我叫老猪 发表于 2013-3-6 13:18
问题应该出在scanf上面 !你%d的时候输入一个字母“A”,应该是会出问题的

谢谢~~~^-^
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-10 14:28:12 | 显示全部楼层
咱是来学习的····
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-3-11 18:36:06 | 显示全部楼层
int a,b;为什么要这步?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-12 21:31:11 | 显示全部楼层
l万lin 发表于 2013-3-11 18:36
int a,b;为什么要这步?

好像是忘了删了。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-7 22:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表