c语言题 高手进。急急急!

输出N对应的二进制或十进制,输出二进制要占满8位,如果不满8位前面用0补充。有多组测试数据,请用while(…)读入数据,直到EOF。每个测试输入一行,包含F(F为字符B... 输出N对应的二进制或十进制,输出二进制要占满8位,如果不满8位前面用0补充。
有多组测试数据,请用while(…)读入数据,直到EOF。每个测试输入一行,包含F(F为字符B或D),N(0<=N<=255)。.B代表N为二进制(二进制为8位),D代表N为十进制。

样例输入

B 00001101
D 13
样例输出
13
00001101
提示

1、用while(scanf(“%c”,&f)!=EOF)循环读取每组数据。
2、记得用getchar()读掉回车键中的换行,否则下一个%c会被错读。
这里getchar怎么用,有完整程序最好!感谢!!
展开
 我来答
龚炜林
2012-12-05 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:562万
展开全部
这里的意思是这样:
使用while(scanf(“%c”,&f)!=EOF)读取F
然后你可以判断读取的f再读取N,比如,如果F为B,那你可以读取字符串
如果你F为D,你可以使用%d读取

int main()
{
char f = 0;
char a = 0;
char b[8] = {0};
while(scanf("%c", &f)!=EOF)
{
if(f=='D')
{
scanf("%d", &a);
}
else if(f == 'B')
{
scanf("%s", b);
}
getchar();
printf("%c\nin:", f);
}
return 0;
}
追问
那这里getchar 作用是什么?如果是去掉回车的话,为什么一般情况下输入一个字符串,也都用回车换行啊,而且不用getchar也可读出来?
追答
这和输入流的控制有关,你这里是循环读取,scanf("%c")会仅从输入流读取一个字符,不管这个是什么字符,而你scanf("%s", b);时是没有读取回车键的,因此回车键是留在了输入流中。
你平常时候的读取,你可以试试这两个的区别:
scanf("%s", b);
scanf("%c", &a);

scanf("%s", b);
scanf("%d", &a);
打断点,调试。
百度网友37cdfb5
2012-12-05
知道答主
回答量:22
采纳率:100%
帮助的人:15.8万
展开全部
#include<stdio.h>

int main()
{
char F, binary[9];
intdecimal, i;
while(scanf("%c",&F)!=EOF)
{
if(F =='D')
{
scanf("%d",&decimal);
getchar();
for(i=0;i<8;i++)
{
binary[i]=decimal%2+'0';
decimal=decimal/2;
}
for(i=7;i>=0;i--)
{
printf("%c",binary[i]);
}
printf("\n");
}
else
{
scanf("%s",binary);
getchar();
decimal=0;
for(i=0;binary[i];i++)
{
decimal=decimal*2;
decimal+= binary[i]-'0';
}
printf("%d\n",decimal);
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shaoqi08110820
2012-12-05 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1715万
展开全部
#include <stdio.h>
int BchangeD(char str[])
{
int i,sum=0;
for(i=0;i<8;i++)
sum=sum*2+str[i]-'0';
return sum;
}
void DchangeB(int m,char str[])
{
int i=0,j;
while (m)
{
str[7-i]=m%2+'0';
m/=2;
i++;
}
for(j=0;j<8-i;j++)
str[j]='0';
}
void main()
{
char f,str[8];
int m,i;
while (scanf("%c",&f)!=EOF)
{
getchar();
if(f=='B')
{gets(str);
m=BchangeD(str);
printf("%d\n",m);
}
if(f=='D')
{
scanf("%d",&m);
DchangeB(m,str);
for(i=0;i<8;i++)
printf("%c",str[i]);
printf("\n");
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wushujing9209
2012-12-05
知道答主
回答量:3
采纳率:0%
帮助的人:4552
展开全部
不是吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式