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怎么用,有完整程序最好!感谢!! 展开
有多组测试数据,请用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怎么用,有完整程序最好!感谢!! 展开
4个回答
展开全部
这里的意思是这样:
使用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;
}
使用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);
打断点,调试。
展开全部
#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);
}
}
}
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);
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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");
}
}
}
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");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询