标题:从键盘获取一个short整数,计算它有多少个bit是1.
只看楼主
网络小白
Rank: 2
等 级:论坛游民
帖 子:26
专家分:35
注 册:2014-9-13
结帖率:77.78%
已结贴  问题点数:20 回复次数:1 
从键盘获取一个short整数,计算它有多少个bit是1.
从键盘获取一个short整数,计算它有多少个bit是1.
#include <stdio.h>
#include<stdlib.h>
#include<tchar.h>
#include<conio.h>
#include<string.h>

int main(void)
{
    printf("请随意按键:");
    short int n;
    scanf_s("%d", &n);
    int q = 0;
    int num = 1;
    int f = n;
    while (q < 16)
    {
        
        if (((f = f >> q) & 1) == 1)
        {
            num = num + 1;
        }
        q++;

    }
    printf("该整数有%d个bit是1", num);
    system("pause");
    return 0;

}
我写的但是超过15就不对了。而且每次都报错Run-Time Check Failure #2 - Stack around the variable 'n' was corrupted.

[此贴子已经被作者于2016-5-23 22:39编辑过]

搜索更多相关主题的帖子: 键盘 system include 
2016-05-23 22:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
程序代码:
#include <stdio.h>

main()
{
    printf("请随意按键:");
    short int n;
    scanf("%hd", &n);
    printf("DEC: %hd\n", n);
    printf("BIN: ");
    int num=0;
    for (int b=0, i=0; i<16; i++)
    {
        b = (n>>(15-i))&1;
        num += (b != 0) ? 1 : 0;
        printf("%d", b);
    }
    printf("\n该整数有%d个bit是1", num);
}


[此贴子已经被作者于2016-5-24 00:18编辑过]

2016-05-24 00:14



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




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

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