C语言解释~~~
答案:2 悬赏:30
解决时间 2021-01-09 07:59
- 提问者网友:情歌越听越心酸
- 2021-01-08 11:37
C语言解释~~~
最佳答案
- 二级知识专家网友:山君与见山
- 2021-01-08 12:51
首先是预处理,#define F (t<=n && t*2>=n),也就是把后面这一个表达式起了一个别名,叫做F,可以理解为F 等于(t<=n && t*2>=n), 然后进入主函数,定义了三个整型变量,
然后是while循环,循环括号里面是一个从键盘输入字符的语句,这句话的意思就是,如果你输入的字符不大于0或者为空的时候,则停止这个while循环,现在假设输入一个4,则现在n = 4,进入这个while循环,对m 和t 进行初始化, 然后是while(!F),这句话也就相当于 while(!(t<=n && t*2>=n)),就是在括号内的表达式算出值之后取反,现在已知n = 4,则 括号内((1 <=4) && (1*2 >=4))第一个式子成立,第二个式子不成立,因为是与关系,所以式子不成立,值为0,然后取反之后是 1,则执行 while循环里面的语句,然后t = t *2 = 1*2= 2; m ++ = 1; 再进行while(!F)的循环,一直到不成立为止,最后打印这个数
然后是while循环,循环括号里面是一个从键盘输入字符的语句,这句话的意思就是,如果你输入的字符不大于0或者为空的时候,则停止这个while循环,现在假设输入一个4,则现在n = 4,进入这个while循环,对m 和t 进行初始化, 然后是while(!F),这句话也就相当于 while(!(t<=n && t*2>=n)),就是在括号内的表达式算出值之后取反,现在已知n = 4,则 括号内((1 <=4) && (1*2 >=4))第一个式子成立,第二个式子不成立,因为是与关系,所以式子不成立,值为0,然后取反之后是 1,则执行 while循环里面的语句,然后t = t *2 = 1*2= 2; m ++ = 1; 再进行while(!F)的循环,一直到不成立为止,最后打印这个数
全部回答
- 1楼网友:酒醒三更
- 2021-01-08 13:54
#include
#define F(t<=n && t*2>=n) //定义F,如果满足t<=n且2*t>=n,F的值就为1否则就为0
void main()
{
int m,t,n;
while(scanf("%d",&n),n>0) //从键盘输入参数n,n>0就进入执行while循环里的操作, 输入0或者小于0的数就退出循环
{
m=0;t=1;
while(!F) //!F等价于F==0也就是当t>n或者2*t {
t=t*2; //将2*t的值赋给t,再判断满不满足F的条件,满足时就退出循环,不满足就继续执行,知道满足为止
m++; //记录循环的次数
}
printf("%d %d ",n,m); //输出n,m的值
}
}
#define F(t<=n && t*2>=n) //定义F,如果满足t<=n且2*t>=n,F的值就为1否则就为0
void main()
{
int m,t,n;
while(scanf("%d",&n),n>0) //从键盘输入参数n,n>0就进入执行while循环里的操作, 输入0或者小于0的数就退出循环
{
m=0;t=1;
while(!F) //!F等价于F==0也就是当t>n或者2*t
t=t*2; //将2*t的值赋给t,再判断满不满足F的条件,满足时就退出循环,不满足就继续执行,知道满足为止
m++; //记录循环的次数
}
printf("%d %d ",n,m); //输出n,m的值
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯