C语言必做30道练习题

C语言练习30题(分支循环,数组,函数,递归,操作符)

目录

  • 分支循环
    • 1.闰年的判断
    • 2.阅读代码,计算代码输出的结果
    • 3.输入一个1~7的数字,打印对应的星期几
    • 4.输入任意一个整数值,计算除3之后的余数
    • 5.输入一个人的年龄
    • 6.输入一个年龄,>= 18岁就输出:成年,否则就输出:未成年
    • 7.输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数。
    • 8.计算1~100之间3的倍数的数字之和
    • 9.输入一个正整数,逆序打印这个整数的每一位
    • 10.输入一个正整数,计算这个整数是几位数?
    • 11.找出100~200之间的素数,并打印在屏幕上。
  • 数组
    • 12. 多个字符从两端移动,向中间汇聚
    • 13. 二分查找
  • 函数
    • 14. 写一个函数判断一年是否是闰年。
    • 15.函数判断素数
    • 16.乘法口诀表
    • 17.使用函数实现数组操作
    • 18..求 1!+2!+3!+4!+...10! 的和
    • 19.喝汽水问题
    • 20.打印菱形
    • 21.打印水仙花数
    • 22.计算求和
    • 23.计算n的阶乘(不考虑溢出),n的阶乘就是1~n的数字累积相乘。
    • 24.输入一个整数m,按照顺序打印整数的每一位。
  • 递归
    • 25.求第n个斐波那契数
    • 26.青蛙跳台阶问题
    • 27. 汉诺塔问题
      • 1.求次数
      • 2.求步骤
    • 28.递归实现n的k次方
    • 29.计算一个数的每位之和(递归实现)
  • 操作符
    • 30.不能创建临时变量(第三个变量),实现两个整数的交换。
    • 31.编写代码实现:求一个整数存储在内存中的二进制中1的个数。
    • 32.二进制位置0或者置1
    • 33.单身狗1
    • 34.打印整数二进制的奇数位和偶数位
    • 35.求两个数二进制中不同位的个数
  • 总结

分支循环

1.闰年的判断

闰年判断的规则:

  1. 能被4整除并且不能被100整除是闰年
  2. 能被400整除是闰年
#include <stdio.h>
//代码1
int main()
{
	int year = 0;
	scanf("%d", &year);
	if(year%4==0 && year%100!=0)
	printf("是闰年\n");
	else if(year%400==0)
	printf("是闰年\n");
	else
	printf("不是闰年\n");
	return 0;
}
//代码2
int main()
{
	int year = 0;
	scanf("%d", &year);
	if((year%4==0 && year%100!=0) || (year%400==0))
	printf("是闰年\n");
	return 0;
}

2.阅读代码,计算代码输出的结果

#include <stdio.h>
int main()
{
	int i = 0,a=0,b=2,c =3,d=4;
	i = a++ && ++b && d++;
	//i = a++||++b||d++;
	printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
	return 0;
}

运行结果
在这里插入图片描述

i=a++ || ++b || d++

运行结果
在这里插入图片描述

3.输入一个1~7的数字,打印对应的星期几

例如:
输⼊:1 输出:星期⼀
输⼊:2 输出:星期⼆
输⼊:3 输出:星期三
输⼊:4 输出:星期四
输⼊:5 输出:星期五
输⼊:6 输出:星期六
输⼊:7 输出:星期天


#include <stdio.h>
int main()
{
	int day = 0;
	printf("请输入星期几\n");
	scanf("%d",&day);
	switch (day)
	{
		case 1:
			printf("星期一\n");
			break;
		case 2:
			printf("星期二\n");
			break;
		case 3:
			printf("星期三\n");
			break;
		case 4:
			printf("星期四\n");
			break;
		case 5:
			printf("星期五\n");
			break;
		case 6:
			printf("星期六\n");
			break;
		case 7:
			printf("星期天\n");
			break;
	}
	return 0;
}

4.输入任意一个整数值,计算除3之后的余数

#include <stdio.h>
int main()
{
	int n = 0;
	printf("请输入n的值\n");
	scanf("%d", &n);
	if (n % 3 == 0)
		printf("整除,余数为0\n");
	else if (n % 3 == 1)
		printf("余数是1\n");
	else
		printf("余数是2\n");
	return 0;
}

5.输入一个人的年龄

如果年龄<18岁,打印"少年"
如果年龄在18岁⾄44岁打印"⻘年"
如果年龄在45岁⾄59岁打印"中老年"
如果年龄在60岁⾄89岁打印"老年"
如果90岁及以上打印"老寿星"

#include <stdio.h>
int main()
{
	int age = 0;
	printf("请输入年龄\n");
	scanf("%d", &age);
	if (age < 18)
		printf("少年\n");
	else if (age <= 44)
		printf("青年\n");
	else if (age <= 59)
		printf("中老年\n");
	else if (age <= 89)
		printf("老年\n");
	else
		printf("老寿星\n");
	return 0;
}

6.输入一个年龄,>= 18岁就输出:成年,否则就输出:未成年

#include <stdio.h>
int main()
{
	int age = 0;
	printf("请输入年龄\n");
	scanf("%d", &age);
	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	return 0;
}

7.输入一个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数。

#include <stdio.h>
int main()
{
	int num = 0;
	printf("请输入数值\n");
	scanf("%d", &num);
	if (num % 2 == 1)
		printf("%d 是奇数\n", num);
	else
		printf("%d 是偶数\n", num);
	return 0;
}

8.计算1~100之间3的倍数的数字之和

#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for(i=1; i<=100; i++)
	{
		if(i % 3 == 0)
		sum += i;
	}
	printf("%d\n", sum);
	return 0;
}
//⼩⼩的优化
//如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for(i=3; i<=100; i+=3)
	{
		sum += i;
	}
	printf("%d\n", sum);
	return 0;
}

在这里插入图片描述

9.输入一个正整数,逆序打印这个整数的每一位

例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	while(n)
	{
		printf("%d ", n%10);
		n /= 10;
	}
	return 0;
}

在这里插入图片描述

10.输入一个正整数,计算这个整数是几位数?

例如:
输⼊:1234 输出:4
输⼊:12 输出:2

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int cnt = 0;
	do
	{
		cnt++;
		n = n / 10;
	} while (n);
	printf("%d\n", cnt);
	return 0;
}

11.找出100~200之间的素数,并打印在屏幕上。

注:素数又称质数,只能被1和本身整除的数字。

#include <stdio.h>
int main()
{
	int i = 0;
	//循环产⽣100~200的数字
	for(i=100; i<=200; i++)
	{
		//判断i是否为素数
		//循环产⽣2~i-1之间的数字
		int j = 0;
		int flag = 1;//假设i是素数
		for(j=2; j<i; j++)
		{
			if(i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if(flag == 1)
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述

数组

12. 多个字符从两端移动,向中间汇聚

编写代码,演示多个字符从两端移动,向中间汇聚

#include<stdio.h>
#include<stdlib.h>

int main()
{
	char arr1[] = "hello wrold" ;
	char arr2[] = "***********" ;
	int left = 0;
	int right = strlen(arr1) - 1;
	int i = 0;
	while (left < right)
	{
		Sleep(1000);//休眠1000毫秒
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n",arr2);
		left++;
		right--;
	}
	return 0;
}

在这里插入图片描述

13. 二分查找

在⼀个升序的数组中查找指定的数字n,很容易想到的方法就是遍历数组
但是这种方法效率比较低。
比如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。
你还是好奇,你想知道到底多少,我就让你猜,你会怎么猜?
你会1,2,3,4…这样猜吗?显然很慢;一般你都会猜中间数字,比如:150,
然后看大了还是小了,这就是二分查找,也叫折半查找

求中间元素的下标,使用mid = (left+right)/2 ,
如果left和right比较大的时候可能存在问题,可以使用下面的代码:

mid = left+(right-left)/2;
#include<stdio.h>

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//升序的数组
	int left = 0;
	int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int key = 3;//要找的数字
	int mid = 0;//中间值的下标
	int find = 0;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else
		{
			find = 1;
			break;
		}
	}
	if (find == 1)
		printf("找到了,下标为%d\n", mid);
	

	return 0;
}

在这里插入图片描述

函数

14. 写一个函数判断一年是否是闰年。

#include<stdio.h>

int is_leap_year(int y)
{
	if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
		return 1;
	else
		return 0;
}

//测试函数
int main()
{
	int y;
	int input;
	int a;
	do//判断完是不是闰年后,可以接着判断,也可以选择退出
	{
		printf("请输入年份\n");
		scanf("%d", &y);
		input = is_leap_year(y);
		if (input == 1)
			printf("是闰年\n");
		if (input == 0)
			printf("不是闰年\n");
		printf("继续输入1,结束输入0\n");
		scanf("%d", &a);
	} while (a);
	
	return 0;
}

在这里插入图片描述

15.函数判断素数

#include<stdio.h>
#include<math.h>//要用sqrt函数

int is_prime(int d)
{
	int i;
	for (i = 2; i < sqrt(d); i++)
	{
		if (0 == d % i)
			return 0;
	}
	return 1;//无法整除满足条件
}
int main()
{
	int i;
	for(i = 100; i <= 200; i++)//打印100到200的素数
	{
		is_prime(i);
		if (is_prime(i)==1)
		{
			printf("%d\n", i);
		}
	}
	
	return 0;
}

在这里插入图片描述

16.乘法口诀表

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

如:输入9,输出99口诀表,输出12,输出1212的乘法口诀表。

void PrintMulTable(int n)
{
	
	int i, j;
	
	for (i = 1; i <= n; ++i)
	{
		for (j = 1; j <= i; ++j)
		{
			printf("%d*%d=%2d ", i, j, i * j);
		}
		printf("\n");
	}
	
}
//使用函数
int main()
{
	printf("hehe\n");
	int a = 12;
	PrintMulTable(a);
	
	return 0;
}

在这里插入图片描述

17.使用函数实现数组操作

创建一个整形数组,完成对数组的操作
1.实现函数init() 初始化数组为全0
2.实现print() 打印数组的每个元素
3.实现reverse() 函数完成数组元素的逆置。
要求:自己设计以上函数的参数,返回值。

void Int(int arr[], int sz, int set)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		 arr[i] = set;
	}
}
void Print(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

void Reverse(int arr[], int sz)
{
	int i = 0;
	int left = 0;
	int right = sz - 1;
	int tmp;
	while (left <= right)
	{
		tmp = arr[right];
		arr[right] = arr[left];
		arr[left] = tmp;
		left++;
		right--;
	}

}

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("hehe\n");
	
	Print(arr, sz);
	Reverse(arr, sz);
	Print(arr, sz);
	Int(arr, sz, 0);
	Print(arr, sz);
	return 0;
}

在这里插入图片描述

18…求 1!+2!+3!+4!+…10! 的和

#include<stdio.h>

int main()
{
	int n;
	printf("求1到n的阶乘\n");
	printf("请输入n\n");
	scanf("%d ", &n);
	int i, j;
	int sum = 0;
	printf("开始计算\n");
	for (i = 1; i <= n; i++)
	{
		int ret = 1;
		
		for (j = 1; j <= i; j++)
		{
			ret *= j;
		}
		sum += ret;
	}
	printf("%d\n", sum);
	return 0;
}

在这里插入图片描述

19.喝汽水问题

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。

#include<stdio.h>

int main()
{
	int empty;
	int money;
	int total;

	scanf("%d", &money);

	total = money;
	empty = money;
	while (empty > 1)
	{
		total += empty / 2;
		empty = empty / 2 + empty % 2;
	}
	printf("total=%d\n", total);
	return 0;
}


在这里插入图片描述

20.打印菱形

用C语言在屏幕上输出以下图案:

在这里插入图片描述

#include<stdio.h>

int main()
{
	int i, j;
	
	printf("请输入行数\n");
	int line;//(行数)
	scanf("%d", &line);
	int a;//(上半部分)
	int b;//(下半部分)
	b = line / 2;
	a = line-b ;
	
	for (i = 0 ; i < a; i++)
	{
		
		for (j = 0; j < a-i-1 ; j++)//(找规律)
		{
			printf(" ");
		}
		for (j = 0; j < 2*i+1 ; j++)//(等差递增)
		{
			printf("*");
			
		}
		printf("\n");///(记得换行)
	}

	for (i = 0; i <b ; i++)
	{
		for (j = 0; j <=i ; j++)//(正好与i的个数一样)
		{
			printf(" ");
		}
		for (j = 0; j <2*(b-i)-1 ; j++)//(等差递减)
		{
			printf("*");
		}
		printf("\n");
	}

	return 0;
}

在这里插入图片描述

21.打印水仙花数

求出0~100000之间的所有“水仙花数”并输出。
水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,
如:153=1^ 3+ 5 ^ 3+3^3,则153是一个“水仙花数”。

#include<stdio.h>
#include<math.h>

int main()
{
	int i;
	for (i = 1; i < 99999; i++)
	{
		int sum = 0;//每位数的次方和
		int count = 0;//位数
		int tmp = i;//存放水仙花数
		while (tmp != 0)
		{
			tmp /= 10;
			count++;
		}
		tmp = i;
		while (tmp)
		{
			sum += pow(tmp % 10, count);
			tmp /= 10;
		}
		if (sum == i)
		{
			printf("%d是水仙花数\n", i);
		}
	}
	return 0;
}

在这里插入图片描述

22.计算求和

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222

#include<stdio.h>

int main()
{
	int i;
	int a;
	int n;
	int tmp=0;
	int sum=0;
	printf("请输入要求的数字和个数\n");
	scanf("%d %d", &a, &n);
	for (i = 0; i < n; i++)
	{
		tmp = tmp * 10 + a;//后面的每个数就是前面一个数乘上10再加上这个数
		sum += tmp;

	}
	printf("%d\n", sum);
	return 0;
}

在这里插入图片描述

23.计算n的阶乘(不考虑溢出),n的阶乘就是1~n的数字累积相乘。

#include<stdio.h>

int Fact(int n)
{
	if (n == 0)
		return 1;
	else
		
		return n*Fact(n-1);
	
}

int main()
{
	printf("请输入要求的数字\n");
	int n = 0;
	scanf("%d", &n);
	Fact(n);
	int ret = Fact(n);
	printf("%d\n", ret);

	return;

}

在这里插入图片描述


#include<stdio.h>

int main()
{
	int n = 0;//(求n的阶乘)
	printf("请输入n\n");
	scanf("%d", &n);
	int i = 0;
	int sum = 0;
	sum = n;//存放阶乘
	int a = 0;
	a = n;
		
	for (i = 1; i < a; i++)
	{
		
		sum *= (n - 1);
		n = n - 1;
		
		
	}
	printf("%d\n", sum);
	return 0;
}

在这里插入图片描述

24.输入一个整数m,按照顺序打印整数的每一位。

#include<stdio.h>

void Print(int n)
{
	
	if (n > 9)
	{
		Print(n / 10);

	}
	printf("%d ", n%10);
}

int main()
{
	printf("请输入要打印的数字\n");
	int m = 0;
	scanf("%d", &m);
	Print(m);
	printf("\n");
	return 0;
}

在这里插入图片描述

递归

25.求第n个斐波那契数

递归和非递归分别实现求第n个斐波那契数

#include<stdio.h>



int Fib(int n)
{
	if (n < 2)
	{
		return n;
	}
	else
	{
		return Fib(n - 1) + Fib(n - 2);
	}
}

int main()
{
	printf("请输入要求的是第几个斐波那契数\n");

	int n = 0;
	scanf("%d", &n);

	int ret;
	ret = Fib(n);
	printf("第%d个斐波那契数是%d\n",n, ret);
	return 0;
}

在这里插入图片描述

#include<stdio.h>

int Fib(int n)

{
	int a = 0;
	int b = 1;
	int c = 0;
	int tmp = 0;
	while (n >= 2)
	{
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}

int main()
{
	printf("请输入要求的是第几个斐波那契数\n");
	
	int n = 0;
	scanf("%d", &n);
	
	int ret;
	if (n <= 2)
	{
		ret = 1;
		
	}
	
	else
	{
		ret = Fib(n);
	}
	printf("第%d个斐波那契数是%d\n", n, ret);
	return 0;
}

在这里插入图片描述

26.青蛙跳台阶问题

一只青蛙一次可以跳一级台阶或两级台阶,问每级台阶有几种跳法


#include<stdio.h>
//观察可知,每级台阶的跳法为前两级台阶的跳法之和
int Jump(int n)
{
	int ret;
	if (n <= 2 )
	{
		ret = n;
	}
	else
	{
		ret = Jump(n - 1) + Jump(n - 2);
	}
	return ret;
}

int main()
{
	printf("请输入青蛙要跳几级台阶\n");
	int n;
	scanf("%d", &n);
	int ret;
	ret = Jump(n);
	printf("青蛙跳%d台级阶有%d种跳法\n",n,ret);
	return 0;
}

在这里插入图片描述

27. 汉诺塔问题

汉诺塔问题:即在一个装置上有A,B,C三根杆。
在A杆自下而上、由大到小按顺序放置n个圆盘,
我们需要保存原有顺序把A杆上的圆盘全部移到C杆上。
操作过程中,每次只能移动一个圆盘,
并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,
操作过程中盘子可以置于A、B、C任一杆上。

1.求次数

#include<stdio.h>

int hanoi_num(int n)
{
	if (n > 1)
	{
		return 2 * hanoi_num(n - 1) + 1;
	}
	else
	{
		return 1;
	}
}
int main()
{
	int n;
	scanf("%d", &n);
	printf("次数为:%d", hanoi_num(n));
	return 0;
}

2.求步骤

#include<stdio.h>


void hanoi_move(int n, char A, char B, char C)
//参数A,B,C分别为所在杆,中间杆,目标杆
{
	if (n > 1)
	{
		//传入的参数为当前情况下的所在杆,中间杆,目标杆
		hanoi_move(n - 1, A, C, B);
		printf("%c -> %c\n", A, C);
		hanoi_move(n - 1, B, A, C);
	}
	else
	{
		printf("%c -> %c\n", A, C);
	}
}

int main()
{
	int n;
	scanf("%d", &n);
	hanoi_move(n, 'A', 'B', 'C');
	return 0;
}

28.递归实现n的k次方

编写一个函数实现n的k次方,使用递归实现。

#include<stdio.h>

int Pow(int n, int k )
{
	if (k == 0)
	{
		return 1;
	}
	else
	{
		return n * Pow(n,k - 1);
	}
}


int main()
{
	printf("请输入要求什么数的几次方\n");
	int n;
	scanf("%d", &n);
	int k;
	scanf("%d", &k);
	int ret;
	ret = Pow(n, k);
	printf("计算结果为:%d\n",ret);
	return 0;

在这里插入图片描述

29.计算一个数的每位之和(递归实现)

写一个递归函数DigitSum(n),输入一个非负整数,
返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
输入:1729,输出:19


#include<stdio.h>

int DigitSum(int n)
{
	if (n <= 9)
	{
		return n;
	}
	else
	{
		return DigitSum(n / 10) + DigitSum(n % 10);
	}
}


int main()
{
	printf("请输入要计算的数字\n");
	int n;
	scanf("%d", &n);
	int ret;
	ret = DigitSum(n);
	printf("值为%d\n", ret);
	return 0;
}

在这里插入图片描述

操作符

30.不能创建临时变量(第三个变量),实现两个整数的交换。

#include<stdio.h>

int main()
{
	int a;
	int b;
	printf("请输入要交换的两个数\n");
	scanf("%d %d", &a, &b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("a = %d b = %d", a, b);

	return 0;
}

在这里插入图片描述

31.编写代码实现:求一个整数存储在内存中的二进制中1的个数。

#include<stdio.h>

int Calculate(int x)
{
	int count = 0;
	while (x)
	{
		count++;
		x = x & (x - 1);
	}
	return count;
}

int main()
{
	int ret = 0;
	printf("请输入要计算的数字\n");
	int x;
	scanf("%d", &x);
	ret = Calculate(x);
	printf("数字中二进制中的1的个数为%d\n", ret);
	return 0;
}

在这里插入图片描述

32.二进制位置0或者置1

#include<stdio.h>

int main()
{
	int a = 13;
	//0000000000000000000001101
	//0000000000000000000011101 将第五位置1
	//0000000000000000000001101 再将第五位置0
	a = a | (1 << 4);
	printf("打印第五位置1后的值:%d\n",a);//29
	a = a & ~(1 << 4);
	printf("打印置为0的值:%d\n",a);
	return 0;
}

在这里插入图片描述

33.单身狗1

在一个整型数组中,只有一个数字出现一次,
其他数组都是成对出现的,请找出那个只出现一次的数字。
例如:
数组中有:1 2 3 4 5 1 2 3 4,只有5出现一次,
其他数字都出现2次,找出5

#include<stdio.h>


int Find_single_dog(int arr[], int sz)
{
	int ret = 0;
	int i;
	for ( i = 0; i < sz; i++)
	{
		ret ^= arr[i];
	}
	return ret;
}

int main()
{
	int arr[9] = { 1,2,3,4,5,1,2,3,4 };
	int sz = sizeof(arr) /sizeof(arr[0]);
	int ret = Find_single_dog(arr,sz);
	printf("只出现一次的数字是%d\n", ret);
	return 0;
}

在这里插入图片描述

34.打印整数二进制的奇数位和偶数位

获取一个整数二进制序列中所有的偶数位和奇数位,
分别打印出二进制序列

#include<stdio.h>

void Printbit(n)
{
	int i = 0;
	int j = 0;
	for (i = 31; i >= 1; i-=2)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	for (i = 30; i >= 0; i -= 2)
	{
		printf("%d ",(n >> i) & 1);
	}
	printf("\n");
}

int main()
{
	printf("请输入一个整数:\n");
	int n;
	scanf("%d", &n);
	Printbit(n);
	return 0;
}

在这里插入图片描述

35.求两个数二进制中不同位的个数

编程实现:
两个int(32位)整数m和n的二进制表达中,
有多少个位(bit)不同?

输入例子:
1999 2299
输出例子:7


#include<stdio.h>

int main()
{
	int a, b;
	printf("请输入两个整数:\n");
	scanf("%d %d", &a, &b);
	int count = 0;
	int n = 32;
	int tmp;
	tmp = a ^ b;
	while (tmp)
	{
		 
		tmp = tmp & (tmp - 1);
		count++;
	}
	int ret = count;
	printf("有%d位不同\n",ret);

	return 0;
}

在这里插入图片描述

总结

归纳了30道在学习指针前的基础练习,希望反复练习,需掌握
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/910319.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

进程与线程+多线程优势

区别&#xff1a; 1、进程中包含线程&#xff0c;每一个进程都至少一个线程&#xff08;主线程&#xff09; 2、进程是申请系统资源的最小单位 3、进程是CPU调度的最小单位 4、线程之间共享进程申请的系统资源 5、一个线程崩溃了会影响整个进程 进程的组织方式&#xff1…

期权懂|期权策略中两边开卖方实值对冲会有盈利区间吗?

期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 期权策略中两边开卖方实值对冲会有盈利区间吗&#xff1f; 一、期权策略中两边开卖方实值对冲的盈利区间可以‌核心策略‌分析‌&#xff1a; 期权对冲策略的核心是利用期权的特…

Follow软件的使用入门教程

开篇 看到很多兄弟还不知道怎么用这个当下爆火的浏览器&#xff01;在这里简单给需要入门的小伙伴一些建议&#xff1a; 介绍 简单解释一下&#xff0c;RSS 意思是简易信息聚合&#xff0c;用户可以通过 RSS 阅读器或聚合工具自主订阅并浏览各个平台的内容源&#xff0c;不用…

数字孪生的建构之路:从数据到智能

数字孪生是一种将物理实体系统或产品的数字化表示与其实体对应物相结合的概念&#xff0c;通过这种数字化技术&#xff0c;可以实时监测、预测和优化管理实体系统。实现数字孪生需要经历从数据采集、处理到智能化决策等多个步骤。以下是关于如何实现数字孪生的详细介绍。 1. 数…

【C#】创建一个主菜单和弹出菜单系统

文章目录 1. 创建WinForms项目2. 设计窗体3. 添加MenuStrip4. 配置菜单项5. 添加TextBox6. 编写事件处理代码7. 运行和测试 根据您提供的文件内容&#xff0c;看起来您需要在C# WinForms应用程序中设置一个窗体&#xff0c;其中包含一个文本框和几个菜单项&#xff0c;用于改变…

运维告警策略优化与实践

在运维行业中&#xff0c;告警策略的制定与执行是确保系统稳定性和业务连续性的关键环节。面对日益复杂的IT环境和不断变化的运维需求&#xff0c;如何合理制定并优化告警策略&#xff0c;成为运维团队必须面对的重要课题。本文将结合运维行业的现状、挑战及需求&#xff0c;深…

算法通关(3) -- kmp算法

KMP算法的原理 从题目引出 有两个字符串s1和s2,判断s1字符串是否包含s2字符串&#xff0c;如果包含返回s1包含s2的最左开头位置&#xff0c;不包含返回-1&#xff0c;如果是按照暴力的方法去匹配&#xff0c;以s1的每个字符作为开头&#xff0c;用s2的整体去匹配&#xff0c;…

vue3+vite搭建脚手架项目使用eletron打包成桌面应用+可以热更新

当前Node版本&#xff1a;18.12.0&#xff0c;npm版本&#xff1a;8.19.2 1.搭建脚手架项目 搭建Vue3ViteTs脚手架-CSDN博客 可删掉index.html文件的title标签 2.配置package.json {"name": "my-vite-project","private": true,"versi…

Java学习者的福音:SpringBoot教学辅助平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理教学辅助平台的相关信息成为必然。开发合适…

JAVA基础:数组 (习题笔记)

一&#xff0c;编码题 1&#xff0c;数组查找操作&#xff1a;定义一个长度为10 的一维字符串数组&#xff0c;在每一个元素存放一个单词&#xff1b;然后运行时从命令行输入一个单词&#xff0c;程序判断数组是否包含有这个单词&#xff0c;包含这个单词就打印出“Yes”&…

网络层5——IPV6

目录 一、IPv6 vs IPv4 1、对IPv6主要变化 2、IPv4 vs IPv6 二、IPv6基本首部 1、版本——4位 2、通信量类——8位 3、流标号——20位 4、有效载荷长度——16位 5、下一个首部——8位 6、跳数限制——8位 7、源 、 目的地址——128位 8、扩展首部 三、IPv6地址 1…

AIRIS 是一种学习型人工智能,它正在自学如何玩 Minecraft

AI开发公司SingularityNET和人工超级智能联盟&#xff08;ASI Alliance&#xff09;表示,随着人工智能学习如何通过操作玩游戏,一种新的学习型AI已被留在Minecraft的实例中。名为AIRIS&#xff08;自主智能增强推断象征主义&#xff09;的AI基本上是从Minecraft内部开始学习如何…

嵌入式学习-网络高级-Day01

嵌入式学习-网络高级-Day01 【1】Modbus协议 起源 分类 优势 应用场景 【2】Modbus TCP 特点 组成 报文头&#xff1a;7个字节 寄存器&#xff08;存储数据&#xff09; 功能码 总结 练习 【3】工具安装 Modbus Slave、Poll安装 网络调试助手 wireshark 练习 【1】Modbus协议 起…

Java项目实战II基于Spring Boot的问卷调查系统的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 在当今信息爆炸的时代&#xff0c;问卷调查…

【c++语言程序设计】数组(对象数组)

数组是一种按照特定顺序排列的对象集合体&#xff0c;数组中的每个对象称为“元素”。数组的每个元素都用“数组名下标”的形式来表示&#xff0c;并且同一数组内的所有元素类型相同。数组可以由任何类型的数据构成&#xff08;除 void 外&#xff09;&#xff0c;且数组的概念…

5分钟跑起来:Java构建的AI人工智能智能问答系统_springboot_spring ai_LLM_人工智能_开源免费使用

Agenda&#xff1a; 1&#xff09;介绍一下AI支持下的智能问答系统有哪些主要模块 2&#xff09;一个可以跑起来的代码样例&#xff0c;说明怎么用Java构建这个AI智能问答系统 AI人工智能智能问答系统简介 智能问答系统是一种利用人工智能技术理解并回答用户提问的应用。该系…

如何基于pdf2image实现pdf批量转换为图片

最近为了将pdf报告解析成为文本和图片&#xff0c;需要将大量多页的pdf文件拆分下单独的一页一页的图像&#xff0c;以便后续进行OCR和图像处理&#xff0c;因此就需要实现将pdf2image&#xff0c;本文主要结合开源的pdf2image和poppler&#xff0c;实现了pdf转换为png格式图片…

Pytorch用BERT对CoLA、新闻组文本数据集自然语言处理NLP:主题分类建模微调可视化分析

原文链接&#xff1a;https://tecdat.cn/?p38181 原文出处&#xff1a;拓端数据部落公众号 自然语言处理&#xff08;NLP&#xff09;领域在近年来发展迅猛&#xff0c;尤其是预训练模型的出现带来了重大变革。其中&#xff0c;BERT 模型凭借其卓越性能备受瞩目。然而&#…

Kaggle:免费 GPU 使用指南,Colab 的理想替代方案

如果电脑显卡性能不足&#xff0c;又无法访问 Colab 的免费 GPU&#xff0c;那该怎么开始之后的学习呢&#xff1f; 答案是 Kaggle。 Kaggle 不仅提供免费的 GPU 计算资源&#xff0c;还可以直连而无需翻墙&#xff0c;同时不需要海外手机号验证。接下来&#xff0c;文章将详细…

Zookeeper 简介 | 特点 | 数据存储

1、简介 zk就是一个分布式文件系统&#xff0c;不过存储数据的量极小。 1. zookeeper是一个为分布式应用程序提供的一个分布式开源协调服务框架。是Google的Chubby的一个开源实现&#xff0c;是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。 2. 提…