• C语言刷题篇(备赛中......)--------( 篇章1 )


    前言:

    博主报名了一个小比赛,用来写一些基础的C语言题目,正好借此巩固一下基础

    希望这些题对你们也有帮助

    猫猫跟你说:该学习了

    目录

    前言:

    题目( 1 ) 

    解题思路 

    题目( 2 ) 

     解题思路 

    题目( 3 )

    解题思路 

    题目( 4) 

    解题思路 

    题目( 5 ) 

    解题思路 

    题目( 6 )

    解题思路  

    题目讲解结束,方法讲解开始!!!!

    方法讲解(一)冒泡排序


    题目( 1 ) 

    题目描述

    有一堆煤球,堆成三角棱锥形。具体: 第一层放 1 个, 第二层 3 个(排列成三角形), 第三层 6 个(排列成三角形), 第四层 10 个(排列成三角形), .... 如果一共有 N 层,共有多少个煤球?

    输入格式     一个整数n,表示有多少层 (0

    输出格式    一个整数,表示第 N 层有多少煤球。

    输入输出样例

    输入   30 

    输出   4960

    1. #include
    2. int main()
    3. {
    4. int N;
    5. int count=0;
    6. int a=0;
    7. scanf("%d",&N);
    8. for(int b=0;b
    9. {
    10. //每层有几个煤球
    11. count=count+(b+1);
    12. //从第一层开始相加,一直加到(N-1)层(因为从第0层开始计数,所以到N-1层)
    13. a=a+count;
    14. }
    15. printf("%d",a);
    16. }

    解题思路 

    博主找规律得出每一层的求法,利用for循环进行求解,最后得出结果,进行验证


    题目( 2 ) 

    题目描述

    输入一个整数 n,输出小于 n 并且能被 37 整除的所有自然数之和。 没有则输出 0

    输入格式   一个整数。

    输出格式   一个整数。

    输入输出样例

    输入输出
    3837
    75111

    说明/提示

    如输入的值为75, 小于 75 并且能被 37 整除的自然数为 37 74。 即和为 37 + 74 = 111

    1. #include
    2. int main()
    3. {
    4. int n;
    5. scanf("%d",&n);
    6. int a=37;
    7. int b=0;
    8. while(n>a)
    9. {
    10. b=a+b;
    11. a=a+37;
    12. }
    13. if(n<37)
    14. {
    15. printf(0);
    16. }
    17. printf("%d",b);
    18. }

     解题思路 

    题中说了小于n且能被37整除的数,我就投机取巧用a+37判断,利用while循环判断n与a+37的关系,如果n<=a的话,就离开while循环,输出


    题目( 3 )

    题目描述

    x 的阶乘,即= x * (x-1) * (x-2) * ··· * 2 * 1。 输入一个整数 m,计算并输出其阶乘的值。

    输入格式   一个整数

    输出格式   一个整数

    输入  4

    输出  24

    说明   m = 4m! = 4! = 4 * 3 * 2 * 1 = 24

    提示   0 的阶乘为 1

    1. #include
    2. int main()
    3. {
    4. int m;
    5. int sum=1;
    6. scanf("%d",&m);
    7. if(m>0)
    8. {
    9. for(int b=1;b<=m;b++)
    10. {
    11. sum=b*sum;
    12. }
    13. printf("%d",sum);
    14. }
    15. else
    16. {
    17. printf("%d",sum);
    18. }
    19. }

    解题思路 

    求阶层的题应该都会吧,if 判断m的值,如果大于0进入for循环,然后用sum=sum*b就是最终的值


    题目( 4) 

    题目描述

    本关任务:函数 fun 的功能是:将两个两位数的正整数 a、b 合并形成一个整数放在 c 中。合并的方式是:将 a 数的十位和个位数依次放在 c 数的十位和千位上,b 数的十位和个位数依次放在 c数的百位和个位上。

    注意:请勿改动主函数 main 和其它函数中的任何内容,仅在函数 fun 中填入你编写的若干语句

    输入格式    整数 a、b

    输出格式    计算得到的结果c

    输入1         45 12

    输出1         5142

    1. #include
    2. long fun(int a,int b,long *c)
    3. {
    4. int qianwei=a%10;
    5. int shiwei=a/10;
    6. int baiwei=b/10;
    7. int gewei=b%10;
    8. *c=qianwei*1000+baiwei*100+shiwei*10+gewei;
    9. }
    10. void main()
    11. { int a,b;
    12. long c;
    13. scanf("%d%d",&a,&b);
    14. fun(a,b,&c);
    15. printf("%ld\n",c);
    16. }

    解题思路 

    求出每个数字所对应的位置,然后相乘


    题目( 5 ) 

    题目描述

    猴子第一天摘下若干个桃子,当天吃了一半,后面又多吃一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。后面每天猴子都吃了前一天剩下的一半零一个。到第十天想再吃时,只剩下一个桃子。求第一天共摘了多少桃子。

    输入格式   无。

    输出格式   一个整数

    1. #include
    2. int main()
    3. {
    4. int day=9;
    5. int taozi=1;
    6. while(day>0)
    7. {
    8. taozi=(taozi+1)*2;
    9. day--;
    10. }
    11. printf("%d",taozi);
    12. return 0;
    13. }

    解题思路 

    从第9天开始,往回算直到day=0


    题目( 6 )

    题目描述

    现在给出两种硬币,它们的价值为 AB,它们满足 GCD(A,B)=1。在这里,你可以假设这两种货币都有足够的硬币。请计算您不能支付的最大值和您不能支付的总数。

    输入格式 输入包含两个整数 AB,含义如题目描述所示。 整数之间以空格间隔。

    输出格式 针对输入,打印出不能支付的最大值和不能支付的总数。 整数之间以空格间隔

    输入输出样例1

    输入 2 3 输出 1 1

    输入输出样例2

    输入 3 4 输出 5 3

    1. #include
    2. int main()
    3. {
    4. int A,B,count,c;
    5. scanf("%d %d",&A,&B);
    6. c=A*B-(A+B);
    7. count=(c+1)/2;
    8. printf("%d %d",c,count);
    9. }

    解题思路  

    这道题的意思是,有无限个面值是A和B的硬币,求出这两个硬币不能支付的最大金额和不能支付的金额有几个

    这个博主是通过找规律得出的


    题目讲解结束,方法讲解开始!!!!

    方法讲解(一)冒泡排序

    两两相邻的元素进行比较,如果前面元素大于后面元素就交换两个元素的位置,最终的结果是最大的一个元素移动到了最后的位置, 这个过程为冒泡。如果有n个元素重复n-1次即可排序完成

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include
    3. void bubble_sort(int arr[], int a)
    4. {
    5. int i = 0;
    6. for (i; i < a-1; i++)
    7. {
    8. for (int j = 0; j < a -1- i; j++)
    9. {
    10. if (arr[j] > arr[j+1])
    11. {
    12. int temp = arr[j];
    13. arr[j] = arr[j+1];
    14. arr[j+1] = temp;
    15. }
    16. }
    17. }
    18. }
    19. int main()
    20. {
    21. int arr[] = { 9,7,4,3,2,8,6,1,5,0};
    22. bubble_sort(arr, sizeof(arr) / sizeof(arr[0]));
    23. int k = 0;
    24. for (k; k < (sizeof(arr) / sizeof(arr[0])); k++)
    25. printf("%d ", arr[k]);
    26. return 0;
    27. }

    注意:

    1.第一个for循环是控制进行几次冒泡的,for循环的次数的是待排序序列元素个数减一次(博主最开始写的时候就写错了,忘记减一了)

    2.第二个for循环是控制每一趟冒泡两两元素间进行比较的,j < a -1- i,是因为前面的已经排好顺序了,重新遍历没有必要

    如果有解释的不对或者不清晰,麻烦大佬们海涵,如果可以烦请从评论区指出,我一定会加以修改,万分感谢

    最后麻烦大佬们动一下发财的小手一键三连,万分感谢

  • 相关阅读:
    Vue.js 的模板语法
    Linux驱动设备号分配与自动创建设备节点
    虚拟内存和LRU页面置换算法
    从 Wepy 到 UniApp 变形记
    腾讯笔试题总结2
    Harmony设计模式-单例模式
    面试经验——面试项目准备工作
    【SpringCloud微服务】- Eureka服务注册与服务发现Discovery
    django settings.py STATICFILES_FINDERS 设置
    pytorch模型(.pt)转onnx模型(.onnx)的方法详解(1)
  • 原文地址:https://blog.csdn.net/2201_75886757/article/details/133306017