#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/结构体初始化
struct people
{
char name[12];
char tele[20];
char sex[5];
int high;
};
struct str
{
struct people p;
int num;
float f;
};
int main()
{
struct people p1 = { "张三","15298711138","男",180 };
struct str s = { {"张三","15298711138","男",180},100,3.14f };
return 0;
}
///一个数二进制中1的个数
//int count_num_of_1(int n)
int count_num_of_1(unsigned int n)
{
int count = 0;
while (n)
{
if ((n%2)==1)
{
count++;
}
n /= 2;
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
int n = count_num_of_1(num);
printf("%d\n", n);
return 0;
}
//改版 n&1///
int count_num_of_1(int n)
{
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
{
count++;
}
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
int n = count_num_of_1(num);
printf("%d\n", n);
return 0;
}
//改版 n&(n-1)///
int count_num_of_1(int n)
{
int count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
int n = count_num_of_1(num);
printf("%d\n", n);
return 0;
}
如果要判断一个数是不是2的你次方
//if(n & (n - 1) == 0)
随便输入2个数二进制数不一样的个数
int count_diff_bit(int n,int m)
{
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if (((m >> 1) & 1) != ((n >> 1) & 1))
{
count++;
}
}
return count;
}
int main()
{
int n = 0;
int m = 0;
scanf("%d %D", &n, &m);
int ret = count_diff_bit(n, m);
printf("%d\n", ret);
return 0;
}
///随便输入2个数二进制数不一样的个数,改版
int count_diff_bit(int n,int m)
{
int count = 0;
int ret = m^n;
while (ret)
{
ret = ret & (ret - 1);
count++;
}
return count;
}
int main()
{
int n = 0;
int m = 0;
scanf("%d %D", &n, &m);
int ret = count_diff_bit(n, m);
printf("%d\n", ret);
return 0;
}
/列出一个数二进制奇函数和偶函数的数
int main()
{
int i = 0;
int num = 0;
scanf("%d", &num);
for (i = 30; i >= 0; i -= 2)
{
printf(" %d", (num >> i) & 1);
}
printf("\n");
for (i = 31; i >= 1; i -= 2)
{
printf(" %d", (num >> i) & 1);
}
return 0;
}
// 针对每行输入,输出*组成的x型图案
int main()
{
int n = 0;
while (scanf("%d", &n) == 1)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (i == j)
{
printf("*");
}
else if (i + j == n - 1)
{
printf("*");
}
else
printf(" ");
}
printf("\n");
}
}
}
/获得月份天数
int is_leap_year(int y)
{
return ((y % 4 == 0) && (y %100 != 0)) || (y % 400 == 0);//返回1或者0
}
int main()
{
int y = 0;
int m = 0;
int d = 0;
int day[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
while (scanf("%d %d",&y, &m) ==2)
{
int d = day[m];
if ((is_leap_year(y) == 1) && (m == 2))
{
d++;
}
printf("%d\n", d);
}
return 0;
}