c语言小技巧

打印二进制数

 

void printBinary(unsigned int n) {
    int i;
    for (i = sizeof(n)*8-1; i >= 0; i--) {  // 遍历整数的每一位
        if ((n >> i) & 1) {  // 如果该位为 1,则输出字符 '1'
            printf("1");
        } else {  // 如果该位为 0,则输出字符 '0'
            printf("0");
        }
    }
    printf("\n");
}

有符号版本

void print_binary(int  n){
    int i, mask;
    if (n < 0) {  // 如果是负数,则先将其转换为补码
        n = -n ;  // 先取反,再减去 1
        printf("1");  // 输出符号位 '1'
    } else {
        printf("0");  // 输出符号位 '0'
    }
//    mask = 1 << (sizeof(int)*8-1);  // 初始化 mask 变量
//    for (i = 0; i < sizeof(int)*8; i++) {  // 遍历整数的每一位
//        if (n & mask) {  // 如果该位为 1,则输出字符 '1'
//            printf("1");
//        } else {  // 如果该位为 0,则输出字符 '0'
//            printf("0");
//        }
//        mask >>= 1;  // 将 mask 右移一位,准备判断下一位
//    }
//    printf("\n");

    for (int j = sizeof(n)*8-2; j >=0; --j) {
        if((n>>j)&1){
            printf("1");
        }else{
            printf("0");
        }
    }
};

 


c语言函数 实现任意多个数相加

#include <stdio.h>
#include <stdarg.h>
double sum(int count, ...) {
    double sum = 0;
    va_list args;
    va_start(args, count);
    for (int i = 0; i < count; i++) {
        sum += va_arg(args, double);
    }
    va_end(args);
    return sum;
}
int main() {
    double result = sum(5, 1.0, 2.0, 3.0, 4.0, 5.0);
    printf("The result is: %f\n", result);
    return 0;
}

上面的程序怎么去掉count

#include <stdio.h>
#include <stdarg.h>
double sum(double arg, ...) {
    double sum = arg;
    va_list args;
    va_start(args, arg);
    double num;
    while ((num = va_arg(args, double)) != 0) {
        sum += num;
    }
    va_end(args);
    return sum;
}
int main() {
    double result = sum(1.0, 2.0, 3.0, 4.0, 5.0, 0);
    printf("The result is: %f\n", result);
    return 0;
}

 

 

posted on   shenhshihao  阅读(24)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示