鱼C论坛

 找回密码
 立即注册
查看: 4280|回复: 8

用栈的方法将二进制数转化为十进制数的问题

[复制链接]
发表于 2017-11-8 20:21:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
。。。。。//前面初始化栈就省略了,
。。。。直接从int main 开始

。。
int main()
{
ElemType c;      //ElemType  是   char
sqStack s;
int len, sum, i;
InitStack ( &s );
printf("请输入有效的二进制数再以#结束\n");
scanf("%c", &c);
while ( c!='# ' )
{
Push( &s, c );
scanf("%c", c);
..........
.........
.........
.............//后面的也省略了
}
}


问题:
int mian中在while 循环中为什么还要使用一个scanf()函数?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-8 20:51:24 From FishC Mobile | 显示全部楼层
因为上面代码是通过一个一个字符的读取输入的内容,只有遇到#才应该结束读取
如果while循环中没有scanf,那判断条件就没法被修改,要么死循环,要么不执行循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-8 20:53:01 | 显示全部楼层
因为scanf("%c", &c)每次值会从输入流中拿取一个字符,要是输入的是1010101010#,循环外面先拿一个,剩下的都没拿,所以循环里要不段的拿取,然后入栈。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-11-8 21:23:43 | 显示全部楼层
丶忘却的年少o 发表于 2017-11-8 20:53
因为scanf("%c", &c)每次值会从输入流中拿取一个字符,要是输入的是1010101010#,循环外面先拿一个,剩下的 ...

哦哦,那就是说scanf函数除了有输入进去的功能, 也有读取的功能吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-8 21:25:05 | 显示全部楼层
BngThea 发表于 2017-11-8 20:51
因为上面代码是通过一个一个字符的读取输入的内容,只有遇到#才应该结束读取
如果while循环中没有scanf, ...

那C语言里面scanf  的功能也能读取吗?
以往都是给某个数赋值,也能读取吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-8 21:27:38 | 显示全部楼层
xq123456 发表于 2017-11-8 21:25
那C语言里面scanf  的功能也能读取吗?
以往都是给某个数赋值,也能读取吗

scanf函数的功能就是将用户的额输入赋值到某个变量当中啊
比如scanf("%c", &c)
就是将用户输入的一个字符存放到c当中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-8 21:37:12 | 显示全部楼层
xq123456 发表于 2017-11-8 21:23
哦哦,那就是说scanf函数除了有输入进去的功能, 也有读取的功能吗

输入的时候肯定是读取输入流再输入给某个变量呀。就像你写的,就是从输入流stdin中拿到一个,然后给变量c。对了,读取是不放回到输入流的,所以说是拿,不是读
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-15 17:14:52 | 显示全部楼层
你while里面的scanf是不是少了&呀??????

scanf("%c",&c);是只能输入一个字符,而不是字符串;
所以就算你一次在屏幕上输入了一个字符串,字符串也会待在缓冲区里面,而只有第一个字符被真正的读入。
你可以改成char data[MAX];scanf("%c",data);注意data前没有&;这样的话字符串就会被读入data;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-15 17:16:54 | 显示全部楼层
marszx 发表于 2017-11-15 17:14
你while里面的scanf是不是少了&呀??????

scanf("%c",&c);是只能输入一个字符,而不是字符串;

这样的话你可以不在while里面加scanf,但是判断条件改成for(int i=0;data[i] != '#';i++)这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 00:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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