算法竞赛入门经典_2.5_一些小练习_水仙花数_韩信点兵之类的

  看了下时间,是深夜了,我并不想熬夜,我知道熬夜对身体不好,不过经常熬夜的我已经习惯了,反而在这白天很热的夏天容易犯困,觉得晚上效率要高.

不过还是得把作息调整过来,现在是1点,以后这种博客我会提前一点.

  好,进入正题吧!今天的一节是6题算法练习,我没找到到答案,书中作者也没给答案,应该是认为简单吧,可对我来说还是有难度的.

目前勉强就做出4题来了.

第一题是水仙花数(daffodil)问题,这个比较简单,主要用拆分个,十,百就好了,看代码

#include <stdio.h>
//水仙花数问题 2017-8-15

int main(int argc, char* argv[])
{
    int a = 0, b = 0, c = 0;
    for(int i = 100; i < 1000; i++)
    {
        a = i / 100;
        b = i % 100 / 10;
        c = i % 100 % 10;
        if (i == (a*a*a + b*b*b + c*c*c))
            printf("%d\n", i);
    }
    return 0;
}

运行结果:

  第二个练习,是韩信点兵(hanxin)问题,看代码

#include <stdio.h>
//韩信点兵 2017-8-15
int main(int argc, char* argv[])
{
    int a, b, c;
    int n = 0;
    while (scanf("%d %d %d", &a, &b, &c) == 3 && a > 0 && a < 3 && b > 0&& b < 5 &&c > 0 && c < 7)
    {
        int ans = 0;
        for(int p_i = 10; p_i <= 100; p_i++)
        {
            if (p_i % 3 == a && p_i % 5 == b && p_i % 7 == c){
                ans = p_i;
                break;
            }
        }
        n++;
        if (ans != 0)
            printf("Case %d: %d\n", n, ans);
        else
            printf("Case %d: No answer\n", n);
    }

    return 0;
}

运行结果:

  第三题是倒三角形问题(triangle),这种输出题目是找规律,把它看做两部分,一部分是输出空格,另一部分是输出字符,这样就好办了,看代码

#include <stdio.h>
//倒三角形问题(trigle) 2017-8-15
int main(int argc, char* argv[])
{
    int n = 0;
    while (scanf("%d", &n) == 1 && n > 0 && n <=20)
    {
        for (int j = n; j >= 1; --j)
        {
            for (int i = 1; i <= n-j; ++i)
            {
                printf(" ");
            }
            for (int i = (2 * j - 1); i >= 1; --i)
            {
                printf("#");
            }
            printf("\n");
        }
        }
    
    return 0;
}

运行结果走你

然后是第四题,我暂时还没做出来,先跳过

看第五题,上代码,走你

#include <stdio.h>
//分数化小数 decimal 2017-8-16

#define MAX 1000000
#define MAX_POS 100
int main(int argc, char* argv[])
{
    int a, b, c,kase = 0;
    float decm ;
    while (scanf("%d %d %d", &a, &b, &c)== 3)
    {
        
        decm = (double)a / b;
        if (kase)
            printf("\n");
        //输出指定精确位的指定形式输出
        char str_form[20] = "";
        sprintf(str_form, "%s.%df\n", "Case %d: %", c);
        printf(str_form, ++kase, decm);
    }
}

在这里我是用了sprinf函数进行一个格式化输出以便于,输出指定的精确位数,鄙人愚见,不知道有没有更好的方法输出.上面还没有加结束条件

运行结果

好了今天就这么多了,时间宝贵,早点睡觉,健康还是最重要的.

注:编程不是看书看会的,也不是听课听会的,而是练会的.

转载于:https://www.cnblogs.com/ncgds/p/7368562.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值