一:圣诞树_牛客题霸_牛客网 (nowcoder.com)
题解:
#include <stdio.h>
/*
找数量关系:只有一个高度已知,我们要打印空格和*.h层就有由*构成的h个小三角形,左边空格和h的关系是3*h-1,下面树干*的个数是h个,*前面的空格是3*h-1个。第i层就有第i倍和小三角形每层相同的*和空格数
先打印上面树枝叶部分,再打印树干部分,打印时先打印空格再打印*
*/
int main() {
int h = 0;//树高
scanf("%d",&h);
int space = 3*h-1;
for(int i=1;i<=h;i++)
{
//打印-小三角形第一层
for(int j = space; j > 0; j--)
{
printf(" ");
}
for(int k = 0; k < i; k++)
{
printf("* ");
}
printf("\n");
//打印-小三角形第二层
for(int m = space-1; m > 0; m--)
{
printf(" ");
}
for(int n = 0; n < i; n++)
{
printf("* * ");
}
printf("\n");
//打印-小三角形第三层
for(int x = space-2; x > 0; x--)
{
printf(" ");
}
for(int y = 0; y < i; y++)
{
printf("* * * ");
}
printf("\n");
space-=3;
}
//打印树干
for(int i = 0; i < h; i++)
{
for(int j = 0; j < (3*h-1); j++)
{
printf(" ");
}
printf("*\n");
}
return 0;
}
总结:
图形类图形找规律就行了
二:小乐乐与进制转换_牛客题霸_牛客网 (nowcoder.com)
描述
小乐乐在课上学习了二进制八进制与十六进制后,对进制转换产生了浓厚的兴趣。因为他的幸运数字是6,所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。
输入描述:
输入一个正整数n (1 ≤ n ≤ 109)
输出描述:
输出一行,为正整数n表示为六进制的结果
示例1
输入:6
输出:10示例2
输入:120
输出:320
/*
进制转换的规则:短除法,几进制就除几,然后余数倒过来写。
*/
#include <stdio.h>
void Hex_six(int n)
{
if(n==0)return;
else
{
Hex_six(n/6);
printf("%d",n%6);
}
}
int main() {
int n = 0;
scanf("%d",&n);
//使用函数递归来做
Hex_six(n);
return 0;
}
三:公务员面试_牛客题霸_牛客网 (nowcoder.com)
#include <stdio.h>
//写代码需要创造性,而不是被训练。培训机构。。
int main() {
int a,c = 0;
int sum = 0;
int max = 0, min = 100;
while(scanf("%d",&a)!=EOF)
{
sum+=a;
c++;
if(max < a)
max = a;
if(min > a)
min = a;
if(c==7)
{
double aver = (double)(sum-max-min) / 5.0;
printf("%.2lf\n",aver);
c = 0,min = 100,max = 0,sum = 0;
}
}
return 0;
}
总结:合理利用循环进行求和等需要重复迭代的数据操作,这样时间复杂度能减低很多。
四:水仙花数_牛客题霸_牛客网 (nowcoder.com)
#include <stdio.h> #include <stdbool.h> int three(int num) { return num * num * num; } bool is_flower(int n) { int sum = 0; int t = n; while (t > 0) {//这里不能等于0 int tmp = t % 10; sum += three(tmp); t /= 10; } if (sum == n) return true; else return false; } int main() { int n, m; while (scanf("%d %d", &m, &n) != EOF) {//妈的有病吧换一下m和n的顺序就过不了 int c = 0; for (int i = m; i <= n; i++) { if (is_flower(i)) { printf("%d ", i); c++; } } if (c == 0) printf("no\n"); else printf("\n"); } return 0; }
总结:
- 这个c++的使用非常值得借鉴
- 注意输出格式,这题后面就需要再加一个换行