带你刷(牛客网)C语言百题(第十六天)
✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步!
📃个人主页:@每天都要敲代码的个人主页
🔥系列专栏:牛客网刷题专栏
💬推荐一款模拟面试、刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习
目录
习题一:公务员面试
描述
输入描述:
输出描述:
示例1
习题二:反向输出一个四位数
描述
输入描述:
输出描述:
习题三:小乐乐与进制转换
描述
输入描述:
输出描述:
示例1
示例2
习题四:[NOIP2015]金币
描述
输入描述:
输出描述:
示例1
示例2
习题五:回文对称数
描述
输入描述:
输出描述:
示例1
习题六:线段图案
描述
输入描述:
输出描述:
示例1
结束语
习题一:公务员面试
描述
公务员面试现场打分。有7位考官,从键盘输入若干组成绩,每组7个分数(百分制),去掉一个最高分和一个最低分,输出每组的平均成绩。
(注:本题有多组输入)
输入描述:
每一行,输入7个整数(0~100),代表7个成绩,用空格分隔。
输出描述:
每一行,输出去掉最高分和最低分的平均成绩,小数点后保留2位,每行输出后换行。
示例1
输入:99 45 78 67 72 88 60
输出:73.00
#include int main() { //存储数据 int arr[7] = {0}; int i = 0; while (scanf("%d%d%d%d%d%d%d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4], &arr[5], &arr[6]) != EOF) { //找最大值 int max = arr[0]; for (i = 0; i max) { max = arr[i]; } } //找最小值 int min = arr[0]; for (i = 0; i < 7; i++) { if (arr[i] < min) { min = arr[i]; } } //求和 int sum = 0; for (i = 0; i < 7; i++) { sum = sum + arr[i]; } //求平均值 float ret = (sum - max - min) / 5.0; printf("%.2f\n", ret); } return 0;}
习题二:反向输出一个四位数
描述
将一个四位数,反向输出。
输入描述:
一行,输入一个整数n(1000 <= n <= 9999)。
输出描述:
针对每组输入,反向输出对应四位数。
#include int main(){ int n=0; scanf("%d",&n); while(n) { printf("%d",n%10); n=n/10; } return 0;}
习题三:小乐乐与进制转换
描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:
输入一个正整数n (1 ≤ n ≤
)
输出描述:
输出一行,为正整数n表示为六进制的结果
示例1
输入:6
输出:10
示例2
输入:120
输出:320
#include int main() { long a; scanf("%ld", &a); long i = 1; long n = 6; long sum = 0; while (a / 6 != 0 || a % 6 != 0) { sum = sum + (a % 6) * i; a = a / 6; i = i * 10; } printf("%ld", sum); return 0;}
习题四:[NOIP2015]金币
描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。
请计算在前K天里,骑士一共获得了多少金币。
输入描述:
输入只有1行,包含一个正整数K,表示发放金币的天数。
输出描述:
输出只有1行,包含一个正整数,即骑士收到的金币数。
示例1
输入:6
输出:14
说明:骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14枚金币。
示例2
输入:1000
输出:29820
#include int main() { int k, n = 0, s = 0; scanf("%d", &k); for (int i = 1; n <= k; i++) { if (i <= k - n) s = s + i * i; else s = s + (k - n) * i; n = i + n; } printf("%d", s); return 0;}
习题五:回文对称数
描述
今天牛牛学到了回文串,他想在数字里面找回文,即回文数,回文数是正着读与倒着读都一样的数,比如1221,343是回文数,433不是回文数。请输出不超过n的回文数。
输入描述:
输入一个整数n(1 <= n <= 100000)
输出描述:
从1开始按从小到大的顺序输出所有回文数
示例1
输入:10
输出:1 2 3 4 5 6 7 8 9
int main() { int n, sum, b; scanf("%d", &n); for (int i = 1; i <= n; i++) { b = i; sum = 0; while (b) { sum = sum * 10 + b % 10; b /= 10; } if (sum == i) { printf("%d\n", sum); } } return 0;}
习题六:线段图案
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的线段图案。
输入描述:
多组输入,一个整数(1~100),表示线段长度,即“*”的数量。
输出描述:
针对每行输入,输出占一行,用“*”组成的对应长度的线段。
示例1
输入:10 2
输出:
**********
**
#include int main() { int n = 0; while (scanf("%d", &n) != EOF) { int i = 0; for (i = 1; i <= n; i++) { printf("*"); } printf("\n"); } return 0;}
结束语
今天的分享就到这里啦!
快快通过下方链接注册加入刷题大军吧!各种大厂面试真题在等你哦!
💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习