Day_05

一:圣诞树_牛客题霸_牛客网 (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++的使用非常值得借鉴
  • 注意输出格式,这题后面就需要再加一个换行

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值