当前位置: 首页 > news >正文

C语言百日刷题第九天

前言

今天是刷题第9天,放弃不难,但坚持一定很酷~
快来跟我一起刷题吧。
加油,一起努力进步
在这里插入图片描述

C语言百日刷题第九天

  • 前言
  • 76.计算偶数的所有质因子
  • 77. 提取不重复的整数
  • 78.二进制中1的个数
  • 79.猴子分桃
  • 80.百钱买百鸡

76.计算偶数的所有质因子

输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
示例1
输入:180
输出:2 2 3 3 5
先普及一下什么叫做质因子

在这里插入图片描述

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    //最大除数应该是小于等于输入的自然数的平方根
    for (int i = 2; i <= sqrt(n); i++)
    {
        while (n % i == 0)
        {
            printf("%d ", i);
            n = n / i;
        }
    }
    if (n != 1)
        printf("%d ", n);
    return 0;
}

77. 提取不重复的整数

在这里插入图片描述


方法一:除以10求余,得到每一位数字,放入数组之前与数组中已存在的数据对比,不重复的数据才能存入数组

#include<stdio.h>
#include<string.h>
int main()
{
    int num=0,size=0,flag=1;
    char str[10000]={0},ch;
    scanf("%d",&num);
    for(;num%10 != 0;num=num/10)//外for循环逆序读取每一位数字
    {
        flag=1;
        ch = num%10 + '0';//整型->字符
        for(int j=0;j<=size;j++)//内for循环将每一位数字和数组中的比较
            if(str[j]==ch)
            {
                flag=0;//数字重复标志
                break;
            }
        if(flag)
        {
            str[size++]=ch;//数组大小size动态增加
        }
    }
    printf("%s",str);
    return 0;
}

方法二:首先循环提取输入数的最低位,维护一个大小为10的数组,判断数组中是否有提取的这个数位。

  • 如果有则把输入数除等于10,继续提取下一数位。
  • 如果没有仍要把输入数除等于10,并将此数位添加到数组中,结果乘10再加上此数位.
  • 提取到最高位即可输出结果
#include<stdio.h>
int main()
{
    int num = 0,result=0;
    int arr[10] = {0};
    scanf("%d",&num);
    while(num != 0)
    {
        if(arr[num%10]==0)
        {
            arr[num%10]=1;
            result=result*10+(num%10);
        }
   
        num=num / 10;
    }
    printf("%d\n",result);
}

78.二进制中1的个数

在这里插入图片描述


方法一:取余求解

#include<stdio.h>
int main()
{
	int input = 0;
	int count = 0;
	scanf("%d", &input);
	while (input)
	{
		if (input % 2 == 1)
		{
			count++;
		}
		input /= 2;
	}
	printf("%d\n", count);
	return 0;
}

方法二:位运算

#include<stdio.h>
int main()
{
    int input = 0;
    scanf("%d", &input);
    int count = 0;
    while (input)
    {
        input &= (input - 1); 
        count++;
    }
    printf("%d\n", count);
    return 0;
}

& : 按位与:转化为2进制后相同位置数有0则为0
| : 按位或:转化为2进制后相同位置数有1则为1
^ : 按位异或 :转化为2进制后相同位置相同则为0相异则为1

79.猴子分桃

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?
分析:猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。这就意味着先将桃子数减去1,然后再拿走五分之一数量的桃子,只剩下五分之四的桃子,并且下一次分桃又重复着这种操作,总共进行了5次。自然而然的想到使用循环解决。

#include<stdio.h>
int main ()
{
int monkey = 1;
int peach = 1;
int count = 1;
while (monkey <= 5) 
{
   
    if (peach % 5 == 1) 
    {
        peach = (peach / 5) * 4;
        monkey++;
    }
    else 
    {
        count++; 
        peach = count; 
        monkey = 1; 
    }
}
printf("桃的最小总数为:%d", count);
}

80.百钱买百鸡

中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?翻译成人话就是:
公鸡5元一只;母鸡3元一只;雏鸡一元3只。百钱买百鸡,问鸡翁、母、雏各几只?
分析:这题共有三个限制条件,3 种鸡的钱数总和为 100。 3 种鸡的数量之和为 100小鸡数必须是 3 的倍数
使用循环,满足三种情况的全部枚举出来就好了。

#include <stdio.h>
int main()
{
    int a,b,c;
    for (a=0;a<=20;a++)
    {
        for(b=0;b<=33;b++)
        {
            c=(100-5*a-3*b)*3;
            if(a+b+c==100)
                printf("公鸡是%d只,母鸡是%d只,雏鸡是%d只.\n",a,b,c);
        }
    }
}
 

相关文章:

  • 「避坑宝典」为大家分享笔者在22 年所遇到“匪夷所思”的 Bug 趣事
  • 什么是JUC
  • 图解LeetCode——775. 全局倒置与局部倒置(难度:中等)
  • apache 组件下载地址
  • 【JavaSE】继承那些事儿
  • 【数据结构】栈基本操作的实现(C语言)
  • MySQL纯代码复习
  • akshare复权算法-港股复权后数据代码分享
  • 通俗易懂话GC-C#的内存管理
  • 使用小程序制作一个电子木鱼,功德+1
  • Android Studio App开发之实现底部标签栏BottomNavigationView和自定义标签按钮实战(附源码 超详细必看)
  • Vue/Vuex (actions) 核心概念 使用方法、辅助函数 mapActions使用方法说明
  • Flink学习:Flink支持的数据类型
  • 【论文复现】——FEC: Fast Euclidean Clustering for Point Cloud Segmentation
  • 第十三届蓝桥杯C++B组省赛 I 题——李白打酒加强版 (AC)
  • 队列的简单实现
  • java毕业设计家庭理财记账系统(附源码、数据库)
  • 【ASM】字节码操作 工具类与常用类 asm-utils 与 asm-commons
  • 用Python把附近的足浴店都给采集了一遍,好兄弟:针不戳~
  • 计算机毕业设计之java+javaweb的医院门诊挂号系统
  • 4月一二线城市新房价格环比上涨,沪杭涨幅居百城前列
  • 摩天大楼天津117大厦复工背后:停工近十年,未知挑战和压力仍在
  • 中央网信办部署开展“清朗·整治AI技术滥用”专项行动
  • 五一“大车流”来了,今日午后G40沪陕高速开始迎来出沪高峰
  • 4月制造业PMI为49%,比上月下降1.5个百分点
  • 习近平在上海考察