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 2023-04-05 10:53 shenhshihao 阅读(19) 评论(0) 编辑 收藏 举报