首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C语言编程笔试题(二)

C语言编程笔试题(二)

作者头像
RAIN7
发布2021-08-11 16:30:34
发布2021-08-11 16:30:34
9490
举报

一、求最小公倍数

题目描述:

  正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

输入描述:

输出A和B的最小公倍数。

示例:

输入:

5 7

输出:

35

思想步骤

1.方法一

在做最小公倍数的题目之前,我们先了解一下最大公约数。

如何求解两数的最大公约数?

我们可以利用辗转相除法进行计算。

辗转相除法:

  好的,我们可以根据上图的思考过程和百度百科的介绍了解,知道了求最大公约数的过程。

思路:

1.先求出最大公约数 q

2.计算出最小公倍数 p

实现代码

代码语言:javascript
复制
#include 

int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d", &a);
	scanf("%d", &b);

	int m = a;
	int n = b;
	int tmp = 0;
	
   //a存放较大的值
	if (a < b)
	{
		tmp = a;
		a = b;
		b = tmp;
	}
	
	while (a%b != 0)
	{
		c = a%b;
		a = b;
		b = c;
	}
	
	if (a%b == 0)
	{
		c = b;
	}
	printf("%d\n",(m*n)/c);

	return 0;
}

2.方法二

  i从i=a开始每次加1,直到 i%a=0 && i%b=0,此时i为最小公倍数。

实现代码

代码语言:javascript
复制
#include 

int main()
{
	int a = 0;
	int b = 0;
	scanf_s("%d%d", &a, &b);
	int tmp = 0;

	//a存放较大的值
	if (a < b)
	{
		tmp = a;
		a = b;
		b = tmp;
	}

	int i = 0;
	for (i = a; i>0; i++)
	{
		if (i%a == 0 && i%b == 0)
		{
			break;
		}
	}
	printf("%d\n", i);
	return 0;
}

二.找单身狗

题目标题:

找单身狗

题目描述

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。

编写一个函数找出这两个只出现一次的数字。

思考步骤

1.将只出现一次的两个数字找出来

2.按照二进制位的规律将 这两个“单身狗”分别分进新的数组中

3.根据位操作符的用法将两组中的两只单身狗找出

实现代码

代码语言:javascript
复制
int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 4, 3, 2, 1 };

	int sz = sizeof(arr) / sizeof(arr[0]);

	int i = 0;
	int num = 0;
	for (i = 0; i < sz; i++)
	{
		num ^= arr[i];
	}
	//我们得到了只出现了一次的两个数字的按位异或的结果。

	//根据异或的结果,我们得到这两个数字在二进制第几位开始不同


	//记录下异或结果中1第一次出现的位置pos,将原数组中的数字根据二进制第pos位是1/0进行分组。

	int pos = 0;

	for (i = 0; i < sz; i++)
	{
		if ((num >> i) == 1)

			pos = i;
	}

    //我们根据这一点,将这两个数字分在两个新的数组中

	
	int n1 = 0;

	int n2 = 0;
	
	//我们将二进制位中第pos位是0的数字分成新的一组

	for (i = 0; i < sz; i++)
	{
		if (((arr[i] >> pos) & 1) == 0)
			n1 ^= arr[i];  //新数组中的数字全部异或得到那个只出现一次的数字
	}

	//我们将二进制位中第pos位是1的数字分成新的一组

	for (i = 0; i < sz; i++)
	{
		if (((arr[i] >> pos) & 1) == 1)
			n2 ^= arr[i];  //新数组中的数字全部异或得到那个只出现一次的数字
	}

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

切记:要牢记C语言中位操作符的使用!!

今天的题目就分享到这里,谢谢大家的欣赏与关注!!!

未完待续…

C语言编程笔试题(三)已更新

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、求最小公倍数
    • 思想步骤
    • 1.方法一
    • 实现代码
    • 2.方法二
    • 实现代码
  • 二.找单身狗
    • 思考步骤
    • 实现代码
  • 未完待续…
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档