> 文档中心 > 带你刷(牛客网)C语言百题(第十六天)

带你刷(牛客网)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 ≤ 10^{9})

输出描述:

输出一行,为正整数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;}

结束语

今天的分享就到这里啦!

快快通过下方链接注册加入刷题大军吧!各种大厂面试真题在等你哦!
💬刷题神器,从基础到大厂面试题👉点击跳转刷题网站进行注册学习

​​​​​

海量搞笑GIF动态图片