比较高级的算法(个人观点)

1、以系统自然数增大模式输出随机数。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    int a;
    srand((unsigned)time(NULL));
    a = rand() % 100;
    printf("%d", a); // a是一个单调增大的随机数(0~100)
    return 0;
}

2、 求一元二次方程的实根。

#include <stdio.h>
#include <math.h>
int main()
{
    double a, b, c, delta;
    scanf("%lf%lf%lf", &a, &b, &c);//ax^2+bx+c=0的各项系数
    if (a == 0)
        printf("x=%d", -c / b);
    else
    {
        delta = b * b - 4 * a * c;
        if (delta < 0)
            printf("无实根");
        else
        {
            delta = sqrt(delta);
            printf("方程有两个实根x1=%.2lf x2=%.2lf", (-b + delta) / 2.0 / a, (-b - delta) / 2.0 / a);
        }
    }
    return 0;
}

 3、输入年份,输出该年份对应的那个生肖。

#include <stdio.h>
int main()
{
    int a, b;
    scanf("%d", &a); // 输入查阅的年份,输出生肖
    if (a >= 2008)
        b = (a - 2008) % 12;
    else
        b = 12 - ((2008 - a) % 12);
    switch (b)
    {
    case 0:
        printf("%d鼠 ", a);
        break;
    case 1:
        printf("%d牛 ", a);
        break;
    case 2:
        printf("%d虎 ", a);
        break;
    case 3:
        printf("%d兔 ", a);
        break;
    case 4:
        printf("%d龙 ", a);
        break;
    case 5:
        printf("%d蛇 ", a);
        break;
    case 6:
        printf("%d马 ", a);
        break;
    case 7:
        printf("%d羊 ", a);
        break;
    case 8:
        printf("%d猴 ", a);
        break;
    case 9:
        printf("%d鸡 ", a);
        break;
    case 10:
        printf("%d狗 ", a);
        break;
    case 11:
        printf("%d猪 ", a);
        break;
    }
    return 0;
}

4、输入一个数,先判断数位,再输出各个数位上的数字。(这里小编就只列举一个5位数的例子)

#include <stdio.h>
int main()
{
    printf("请输入一个不多于5位的正整数:");
    int a;
    scanf("%d", &a);
    if (a > 9999)
    {
        printf("该数字是5位数,逆序打印出个位数字:");
        printf("%d ", a % 10);
        printf("%d ", a % 100 / 10);
        printf("%d ", a % 1000 / 100);
        printf("%d ", a % 10000 / 1000);
        printf("%d", a / 10000);
    }
    else if (a > 999)
    {
        printf("该数字是4位数,逆序打印出个位数字:");
        printf("%d ", a % 10);
        printf("%d ", a % 100 / 10);
        printf("%d ", a % 1000 / 100);
        printf("%d ", a / 1000);
    }
    else if (a > 99)
    {
        printf("该数字是3位数,逆序打印出个位数字:");
        printf("%d ", a % 10);
        printf("%d ", a % 100 / 10);
        printf("%d ", a / 100);
    }
    else if (a > 9)
    {
        printf("该数字是2位数,逆序打印出个位数字:");
        printf("%d ", a % 10);
        printf("%d ", a / 10);
    }
    else
    {
        printf("该数字是1位数,逆序打印出个位数字:");
        printf("%d ", a);
    }
    return 0;
}

 5、求一个真分数的埃及分数。

#include <stdio.h>
int main()
{
    long a, b, c;
    scanf("%ld/%ld", &a, &b); /*输入分子a和分母b*/
    printf("%ld/%ld=", a, b);
    while (1)
    {
        if (b % a != 0)    /*若分子不能整除分母*/
            c = b / a + 1; /*则分解出一个分母为b/a+1的埃及分数*/
        else
        {
            c = b / a;
            a = 1;
        } /*否则,输出化简后的真分数(埃及分数)*/
        if (a == 1)
        {
            printf("1/%ld\n", c);
            break; /*a为1标志结束*/
        }
        else
            printf("1/%ld + ", c);
        a = a * c - b; /*求出余数的分子*/
        b = b * c;     /*求出余数的分母*/
        if (a == 3)    /*若余数为3,输出最后两个埃及分数*/
        {
            printf("1/%ld + 1/%ld\n", b / 2, b);
            break;
        }
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值