QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

新鱼友

Rank: 1

积分
16
查看: 136|回复: 8

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

[复制链接]
最佳答案
0 
累计签到:2 天
连续签到:1 天
xq123456 发表于 2017-11-8 20:21:22 1368 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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()函数?


楼层
跳转到指定楼层
最佳答案
208 
累计签到:159 天
连续签到:8 天
BngThea 发表于 2017-11-8 20:51:24 From FishC Mobile | 显示全部楼层
因为上面代码是通过一个一个字符的读取输入的内容,只有遇到#才应该结束读取
如果while循环中没有scanf,那判断条件就没法被修改,要么死循环,要么不执行循环
最佳答案
222 
累计签到:142 天
连续签到:89 天
丶忘却的年少o 发表于 2017-11-8 20:53:01 | 显示全部楼层
因为scanf("%c", &c)每次值会从输入流中拿取一个字符,要是输入的是1010101010#,循环外面先拿一个,剩下的都没拿,所以循环里要不段的拿取,然后入栈。
最佳答案
0 
累计签到:2 天
连续签到:1 天
xq123456  楼主| 发表于 2017-11-8 21:23:43 | 显示全部楼层
丶忘却的年少o 发表于 2017-11-8 20:53
因为scanf("%c", &c)每次值会从输入流中拿取一个字符,要是输入的是1010101010#,循环外面先拿一个,剩下的 ...

哦哦,那就是说scanf函数除了有输入进去的功能, 也有读取的功能吗
最佳答案
0 
累计签到:2 天
连续签到:1 天
xq123456  楼主| 发表于 2017-11-8 21:25:05 | 显示全部楼层
BngThea 发表于 2017-11-8 20:51
因为上面代码是通过一个一个字符的读取输入的内容,只有遇到#才应该结束读取
如果while循环中没有scanf, ...

那C语言里面scanf  的功能也能读取吗?
以往都是给某个数赋值,也能读取吗
最佳答案
208 
累计签到:159 天
连续签到:8 天
BngThea 发表于 2017-11-8 21:27:38 | 显示全部楼层
xq123456 发表于 2017-11-8 21:25
那C语言里面scanf  的功能也能读取吗?
以往都是给某个数赋值,也能读取吗

scanf函数的功能就是将用户的额输入赋值到某个变量当中啊
比如scanf("%c", &c)
就是将用户输入的一个字符存放到c当中
最佳答案
222 
累计签到:142 天
连续签到:89 天
丶忘却的年少o 发表于 2017-11-8 21:37:12 | 显示全部楼层
xq123456 发表于 2017-11-8 21:23
哦哦,那就是说scanf函数除了有输入进去的功能, 也有读取的功能吗

输入的时候肯定是读取输入流再输入给某个变量呀。就像你写的,就是从输入流stdin中拿到一个,然后给变量c。对了,读取是不放回到输入流的,所以说是拿,不是读
最佳答案
0 
累计签到:12 天
连续签到:1 天
marszx 发表于 2017-11-15 17:14:52 | 显示全部楼层
你while里面的scanf是不是少了&呀??????

scanf("%c",&c);是只能输入一个字符,而不是字符串;
所以就算你一次在屏幕上输入了一个字符串,字符串也会待在缓冲区里面,而只有第一个字符被真正的读入。
你可以改成char data[MAX];scanf("%c",data);注意data前没有&;这样的话字符串就会被读入data;
最佳答案
0 
累计签到:12 天
连续签到:1 天
marszx 发表于 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++)这样

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-25 06:16

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