跪求c这道语言题

来源:百度知道 编辑:UC知道 时间:2024/08/22 08:36:36
1.输入一个整数,改整数只包含0,1(是一个二进制数)显示其十进制的值。
2.编写一个程序读取一个整数,判断并显示出该整数中有多少位是7.
谢谢了,本人菜鸟。高手给个提示啊,当然给结果很感谢了就。

(1)给你写出关键部分:(怎样把输入的二进制改为十进制)
如,m为你所输入的二进制。
int i=0,sum=0;
if(m=0)printf("what you put in is 0.");
while(m!=0)
{ k=m%10; //此即为m的最后一位的数字,注:此时的m也是变化的
m=m/10; //将m的最后一位数字除去。
sum+=k*2(i++); //2(n)即为2的n次方,可自己编写这个函数。
}
printf(%f",sum);
(2) int 2(int n)
{ 2(0)=1;
m=2*2(n-1);
return m;
}
(3)第二个题目:这题也差不多,关键在于怎样取出所读取的整数的每一位数字。这一点可以用%所得,然后用“/”将整个数的余数即最后一位去掉。之后做同样操作取出每一位。用一个if语句就可以判断是否是7了,设置一个全局变量在if语句里面,if语句里使得没条件成立一次就将其+1即可。
That’s all!只给出了粗略的思路,具体你自己编写。

1.如101010101用一个比较笨的办法(好像用移位比较好):
101010101%10=1; 1*1;
(101010101/10)%10=0 0*2;
(101010101/100)%10=1 1*4;
(101010101/1000)%10=0 0*8;
(101010101/10000)%10=1 1*16;
(101010101/100000)%10=0 0*32;
(101010101/1000000)%10=1 1*64;
(101010101/10000000)%10=0 0*128;
(101010101/100000000)%10=1 1*256;
=341;
2.如707737,有4个7;
707737%10=7; 1个;
(707737/10)%10=3; 不是7