标题:求解这条题的思路
只看楼主
dzkdfjy
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-10-3
结帖率:0
已结贴  问题点数:20 回复次数:2 
求解这条题的思路
编写程序,求满足公式的变量k的最大值:
        2^k <= m
其中,m是程序输入的一个正整数。

2^k表示2的k次方。

输入输出格式要求:
    输入格式:m回车
    程序中要求全部使用unsigned int 类型数据。scanf和printf中使用%u
    只输出运算结果,请不要输出其他字符。
例如:
输入:16回车
输出:4
输入:2140000000回车
输出:30
搜索更多相关主题的帖子: 思路 输入 输出 格式 回车 
2017-10-03 22:30
静水且流深
Rank: 5Rank: 5
等 级:贵宾
威 望:11
帖 子:60
专家分:319
注 册:2017-7-7
得分:10 
程序代码:
    i=2140000000;
    j=1,k=0;
    for(;j<=i;j*=2,k++);
    打印k-1

不过是爱情,又能走多久
2017-10-03 23:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 

#include <stdio.h>
#include <limits.h>
#define K   sizeof(unsigned int)*CHAR_BIT
main()
{
    unsigned int  m, k;
    scanf("%u", &m);
    if (m<1 || m>(1<<(K-1)))
        return;
    for (k=0; (1<<k)<m; ++k) NULL;
    if ((1<<k) != m) --k;
    printf("%u\n", k);
}

2017-10-04 07:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-481109-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012189 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved