• HDU1390 ZOJ1383 Binary Numbers


    问题链接:HDU1390 ZOJ1383 Binary Numbers入门练习题,用C语言编写程序。

    对输入的整数的各个二进制位进行判断,如果为1则输出其所在的位(从右边开始分别是0,1,2,3,...位),结果是一个集合,从小到大输出集合的各个元素。

    这里给出两个程序,一个是计算出结果放入数组中再行输出,另外一个是一边计算一边输出。

    AC的C语言程序(正解)如下:

    /* HDU1390 ZOJ1383 Binary Numbers */
    
    #include <stdio.h>
    
    int main(void)
    {
        int t, n, element, ecount;
    
        scanf("%d", &t);
        while(t--) {
            scanf("%d", &n);
    
            // 计算集合并且输出结果
            ecount = 0;
            element = 0;
            while(n) {
                if(n & 1) {
                    ecount++;
                    if(ecount == 1)
                        printf("%d", element);
                    else
                        printf(" %d", element);
                }
                element++;
    
                n >>= 1;
            }
            putchar('
    ');
        }
    
        return 0;
    }

    另外一个AC的C语言程序如下:

    /* HDU1390 Binary Numbers */
    
    #include <stdio.h>
    
    int main(void)
    {
        int t, n, ans[64], count, element, i;
    
        scanf("%d", &t);
        while(t--) {
            scanf("%d", &n);
    
            // 计算集合
            count = 0;
            element = 0;
            while(n) {
                if(n & 1)
                    ans[count++] = element;
                element++;
    
                n >>= 1;
            }
    
            // 输出结果
            for(i=0; i<count; i++) {
                if(i != 0)
                    putchar(' ');
                printf("%d", ans[i]);
            }
            putchar('
    ');
        }
    
        return 0;
    }


  • 相关阅读:
    链表的Java实现
    java知识点
    java知识点
    Android基础知识总结
    Android基础知识总结
    路由知识之ip route 命令中的疑惑
    Integer与int的种种比较
    求二叉树的宽度C语言版
    求二叉树的宽度C语言版
    二叉树的建立与递归遍历C语言版
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564565.html
Copyright © 2020-2023  润新知