🔥个人主页:艾莉丝努力练剑
❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题
🍉学习方向:C/C++方向
⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平
前言:上一篇博客又带大家刷了一些相对来说简单的代码题目,本篇文章我们将继续练习下面的题目。这些题目的难度已经有的挖了大坑,大家做的时候要留意,如果做不出来,看了代码演示后要自己多敲几遍,去理解代码的逻辑。
宇宙安全声明:鉴于博主能力有限,本专栏适用于代码小白刷题,大佬们多多包涵(抱拳)!
目录
正文
一、小乐乐与进制转换
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
int arr[40] = { 0 };
int i = 0;
scanf("%d", &n);
while (n)
{
arr[i++] = n % 6;
n /= 6;
}
for (i--; i >= 0; i--)
{
printf("%d", arr[i]);
}
return 0;
}
二、小乐乐求和
(一)题目
(二)思路
1、思路1:
#define _CRT_SECURE_NO_WARNINGS 1
//代码1
#include <stdio.h>
int main()
{
long long i = 0;
long long sum = 0;
long long n = 0;
scanf("%lld", &n);
for (i = 1; i <= n; i++)
{
sum += i;
}
printf("%lld\n", sum);
return 0;
}
2、思路2:
//代码2
#include <stdio.h>
int main()
{
long long n = 0;
scanf("%lld", &n);
printf("%lld", (1 + n) * n / 2);
return 0;
}
三、小乐乐定闹钟
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int h = 0;
int m = 0;
int k = 0;
scanf("%d:%d %d", &h, &m, &k);
h = ((m + k) / 60 + h) % 24;
m = (m + k) % 60;
printf("%02d:%02d\n", h, m);
return 0;
}
四、小乐乐排电梯
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n", n / 12 * 4 + 2);
return 0;
}
五、小乐乐与欧几里得
(一)题目
(二)两种方法
1、暴力法
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//暴力求解
//耗时太久,不满足条件
int main()
{
long long n = 0;
long long m = 0;
long long tmp = 0;
scanf("%lld %lld", &n, &m);
long long max = m > n ? n : m;
while (max)
{
if (m % max == 0 && n % max == 0)
{
break;
}
max--;
}
long long min = m > n ? m : n;
while (min)
{
if (min % m == 0 && min % n == 0)
{
break;
}
min++;
}
printf("%lld\n", max + min);
return 0;
}
2、辗转相除法
//辗转相除法
#include<stdio.h>
int main()
{
long long n = 0;
long long m = 0;
long long tmp = 0;
scanf("%lld %lld", &n, &m);
int a = n;
int b = m;
while(tmp=a%b)
{
a = b;
b = tmp;
}
printf("%lld\n", b + m * n / b);
return 0;
}
六、小乐乐改数字
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int n = 0;
int ret = 0;
scanf("%d", &n);
int i = 0;
while (n)
{
//计算每一位
int w = n % 10;
//判断奇偶数
if (w % 2 == 1)
w = 1;
else
w = 0;
ret += w * pow(10, i);
n /= 10;
i++;
}
printf("%d", ret);
return 0;
}
七、小乐乐走台阶
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int fib(int n)
{
if (n <= 2)
return n;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n", fib(n));
return 0;
}
扩展学习: 剑指Offer算法题-青蛙跳台阶的问题
给大家拓展一个在《剑指offer》里面的题目,我们在介绍递归函数时提过两个问题:青蛙跳台阶和汉诺塔问题,这里我们就拓展一下这个青蛙跳台阶问题。
八、小乐乐与序列
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int n = 0;
int arr[100000] = { 0 };
int i = 0;
int tmp = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &tmp);
arr[tmp] = tmp;
}
for (i = 0; i < 100000; i++)
{
if (arr[i] != 0)
printf("%d ", arr[i]);
}
return 0;
}
九、小乐乐与字符串
1、这个题的难度在于理解题目的意思;
2、不是连续的子串;
3、只要在字符串中找到几个字符能组合成子串就算是“子串”。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//
//这个题的难度在于理解题目的意思
//不是连续的子串
//只要在字符串中找到几个字符能组合成子串就算是“子串”
//
int main()
{
char str[8000] = { 0 };
int count = 0;
scanf("%s", str);
char* p = str;
long long c = 0;
long long ch = 0;
long long chn = 0;
while (*p)
{
if (*p == 'C')
c++;
else if (*p == 'H')
ch += c;
else if (*p == 'N')
chn += ch;
p++;
}
printf("%lld\n", chn);
return 0;
}
1、这个题中的子串可以是不连续的;
2、ch的个数其实和前面出现的c的个数有关,chn的个数和n之前ch的个数有关。
十、小乐乐找最大数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int arr[4] = { 0 };
int i = 0;
for (i = 0; i < 4; i++)
{
scanf("%d", &arr[i]);
}
//假设
int max = arr[0];
for (i = 1; i < 4; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
printf("%d\n", max);
return 0;
}
十一、小乐乐转换成绩
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int score = 0;
scanf("%d", &score);
if (score < 0 || score>100)
printf("F\n");
else if (score >= 90 && score <= 100)
printf("A\n");
else if (score >= 80 && score <= 89)
printf("B\n");
else if (score >= 70 && score <= 79)
printf("C\n");
else if (score >= 60 && score <= 69)
printf("D\n");
else
printf("E\n");
return 0;
}
十二、小乐乐计算函数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int max3(int a, int b, int c)
{
int max = a;
if (b > max)
max = b;
if (c > max)
max = c;
return max;
}
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d %d", &a, &b, &c);
float m = ((float)max3(a + b, b, c) / (max3(a, b + c, c) + max3(a, b, b + c)));
printf("%.2f\n", m);
return 0;
}
结尾
往期回顾:
【C语言刷题12天IO强训】到这里博主已经写了十一篇了,列出来有水字数嫌疑,就只放第十篇的网址,博主把专栏的前九篇的网址都放在C语言刷题(十)的【往期回顾】了,点击文章下面的【传送门】就可以看了,本文就只放第十篇,专栏链接挂在文章开头。
【C语言刷题】第十天:加量加餐继续,代码题训练,融会贯通IO模式
结语:本篇文章带大家刷了十二道题目,大家认真思考一下,结合知识点就能想出来,大家一定要及时回顾前面刷过的题目。本文到这里就结束了,希望对友友们有所帮助。本文的代码相比起之前的题目,难度上已经加深了很多,大家要上手操作,后面的代码题难度上整体是逐渐递增的,博主控制了难度,这样友友们能比较丝滑地上手敲下去。