当前位置:网站首页>基础刷题(一)
基础刷题(一)
2022-06-30 06:28:00 【Yuan_o_】
1、分析下列函数
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a;//先++,再用a (c=6,a=6)
b = ++c, c++, ++a, a++;//注意(b = ++c)是一个表达式 (c=8,b=7,a=8)
b += a++ + c;//+=的优先级很低,所以先算后面 a=9,b=23
printf("a = %d b = %d c = %d\n:", a, b, c);
return 0;
}
输出结果为:
2、
写一个函数返回参数二进制中 1 的个数。
比如: 15 0000 1111 4 个 1
//方法一:
//版本一 缺陷,不能计算负数
//版本二 只需改动一处,将形参改为无符号类型既可
#include <stdio.h>
int stat1(int n)//版本一
int stat1(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 = stat1(num);
printf("%d\n", n);
return 0;
}
//方法二
#include <stdio.h>
int stat1(int n)
{
int i = 0;
int count = 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 = stat1(num);
printf("%d\n", n);
return 0;
}
//方法三
#include <stdio.h>
int stat1(int n)
{
int count = 0;
while(n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
int n = stat1(num);
printf("%d\n", n);
return 0;
}
3、编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
//方法一:
#include <stdio.h>
int count_diff_bit(int m, int n)
{
int count = 0;
int i = 0;
for (i = 0; i < 32; i++)
{
if (((m >> i) & 1) != ((n >> i) & 1))
{
count++;
}
}
return count;
}
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int ret = count_diff_bit(m, n);
printf("%d\n", ret);
return 0;
}
//方法二:
#include <stdio.h>
int count_diff_bit(int m, int n)
{
int count = 0;
int ret = m ^ n;// ^ 异或操作符 相同为0,相异为1
while (ret)
{
ret = ret & (ret - 1);
count++;
}
return count;
}
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int ret = count_diff_bit(m, n);
printf("%d\n", ret);
return 0;
}
4、获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
//10
//0000000000000000000000000001010
//规定最后一位为第一位
#include <stdio.h>
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;
}
5、分析以下代码
#include <stdio.h>
int i;//全局变量
//全局变量,静态变量都是放在静态区
//全局变量,静态变量不初始化,默认值为0
//局部变量,放在栈区,不初始化,默认值为随机值
int main()
{
i--;//-1
//sizeof这个操作符计算返回的结果是size_t类型的,是无符号整型
if (i > sizeof(i))//当他们进行比较时,发生整型提升,转换为无符号整型,此时-1是一个极大的正数
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
全局变量,没有给初始值时,编译器会默认将其初始化为0。
i的初始值为0,i–结果-1,i为整形,sizeof(i)求i类型大小是4,按照此分析来看,结果应该打印<,但是sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据,-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该打印>
6、
输入描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成“x”的反斜线和正斜线的长度。
输出描述:针对每行输入,输出用“*”组成的X形图案。
#include <stdio.h>
int main()
{
int n = 0;
while(scanf("%d", &n) == 1)
{
int j = 0;
int i = 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");
}
}
return 0;
}
7、
输入描述:
多组输入,一行有两个整数,分别表示年份和月份,用空格隔开。
输出描述:
针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
示例:
输入:2008 2
输出:29
//方法一
#include <stdio.h>
int main()
{
int year = 0;
while (scanf("%d", &year) == 1)
{
int n = 0;
scanf("%d", &n);
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
{
if (n == 2)
printf("29");
else if (n == 4 || n == 6 || n == 9)
printf("30");
else
printf("31");
}
else
{
if (n == 2)
printf("28");
else if (n == 2 || n == 4 || n == 6 || n == 9)
printf("30");
else
printf("31");
}
}
return 0;
}
//方法二
#include <stdio.h>
int is_leap_year(int y)//判断是否为闰年
{
return(((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
}
int main()
{
int y = 0;//年份
int m = 0;//月份
int d = 0;//天数
int data[13] = {
0,31,28,31,30,31,30,31,31,30,31,30,31 };//数组开头补0,使数组下标与月份相对应
while (scanf("%d%d", &y, &m) == 2)//scanf函数接收到几个值,就会返回几
{
int d = data[m];
if ((is_leap_year(y) == 1) && (m == 2))//判断是否为闰年的2月份
{
d++;
}
printf("%d\n", d);
}
return 0;
}
边栏推荐
- Go common judgments
- Completabilefuture: from understanding to mastering, here are all you want to know
- Mariadb数据库的安装与初始化
- Installing googleplay environment on Huawei mobile phones
- How does Altium designer hide some temporarily unnecessary classes, such as GND
- Multithreading advanced level
- 图片。。。。。
- 1.9 - Cache
- DOM (document object model) document XML file object model
- ES6箭头函数
猜你喜欢
随机推荐
Installation and initialization of MariaDB database
880. decoded string at index
01. regular expression overview
Idea add database
ES6 extended operator (...)
多线程进阶篇
Notes of the first week of 2021 Chengdu Arts and Sciences cloud computing intensive training class
DHCP operation
Several commands not commonly used in MySQL
与MQTT的初定情缘
Rhcsa day 3
1.3 - 码制
图像处理7-图像增强
Variable parameters of go
关于Glide加载图片模糊不清楚
Ini parsing learning documents
Getting started with research
ES6 array
2020-10-06
关注这场直播,了解能源行业双碳目标实现路径









