C语言经典例题-12

1.杨辉三角

题目描述:

KK知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他

解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。

输入描述:

第一行包含一个整数数n。 (1≤n≤30)

输出描述:

包含n行,为杨辉三角的前n行,每个数输出域宽为5。

输入:

6

输出:

1

1 1

1   2 1

1   3   3   1

1   4   6   4   1

1   5   10   10   5   1

参考代码:

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int j = 0;
    int arr[30][30] = { 0 };
    for (i = 0; i < n; i++)
    {
        for (j = 0; j <= i; j++)
        {
            if (i == j)
            {
                arr[i][j] = 1;
            }
            if (j == 0)
            {
                arr[i][j] = 1;
            }
            if (i > 1 && j > 0)
            {
                arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        for (j = 0; j <= i; j++ )
        {
            printf("%5d", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
2.井字棋

题目描述:

KK和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。

输入描述:

三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。

输出描述:

如果KK获胜,输出“KK wins!”;

如果BoBo获胜,输出“BoBo wins!”;

如果没有获胜,输出“No winner!”。

输入:

K O B

O K B

B O K

输出:

KK wins!

参考代码:

#include <stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    int arr[3][3] = { 0 };
    char flag = 'O';
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            scanf(" %c", &arr[i][j]);
        }
    }

    for (i = 0; i < 3; i++)
    {
        if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2])
        {
            flag = arr[i][1];
            break;
        }
        if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i])
        {
            flag = arr[1][i];
            break;
        }
        if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2])
        {
            flag = arr[1][1];
            break;
        }
        if (arr[0][2] == arr[1][1] && arr[1][1] == arr[0][0] )
        {
            flag = arr[1][1];
            break;
        }

    }
    if (flag == 'K')
        printf("KK wins!\n");
    else if (flag == 'B')
        printf("BOBO wins!\n");
    else
        printf("No winn\n");
    return 0;
}
3.小乐乐定闹钟

题目描述:

小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)

输入描述:

输入现在的时刻以及要睡的时长k(单位:minute),中间用空格分开。输入格式:hour:minute k(如hour或minute的值为1,输入为1,而不是01)(0 ≤ hour ≤ 23,0 ≤ minute ≤ 59,1 ≤ k ≤ 109)

输出描述:

对于每组输入,输出闹钟应该设定的时刻,输出格式为标准时刻表示法(即时和分都是由两位表示,位数不够用前导0补齐)。

示例1

输入:

0:0 100

输出:

01:40

示例2

输入:

1:0 200

输出:

04:20

参考代码:

#include <stdio.h>

int main()
{
    int k = 0;
    int hour = 0;
    int minute = 0;
    scanf("%d:%d %d", &hour, &minute, &k);
    hour = k / 60 + hour;
    minute = k % 60;
    printf("%02d:%02d", hour, minute);
    return 0;
}
4.小乐乐排电梯

题目描述:

小乐乐学校教学楼的电梯前排了很多人,他的前面有n个人在等电梯。电梯每次可以乘坐12人,每次上下需要的时间为4分钟(上需要2分钟,下需要2分钟)。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。(假设最初电梯在1层)

输入描述:

输入包含一个整数n (0 ≤ n ≤ 109)

输出描述:

输出一个整数,即小乐乐到达楼上需要的时间。

示例1

输入:

1

输出:

2

示例2

输入:

12

输出:

6

参考代码:

#include <stdio.h>

int main()
{
    int n = 0;
    int time = 2;
    scanf("%d", &n);
    if (n / 12 == 1)
    {
        printf("%d\n", time+4);
    }
    else
    {
        printf("%d\n", time);
    }
    return 0;
}
5.小乐乐与欧几里得

题目描述:

小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。

输入描述:

每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)

输出描述:

对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。

示例1

输入:

10 20

输出:

30

示例2

输入:

15 20

输出:

65

参考代码:

#include <stdio.h>

int main()
{
    int n = 0;
    int m = 0;
    scanf("%d%d", &n, &m);
    int max = n > m ? n : m;
    int min = n > m ? m : n;
    int GCD = 0; //最大公因数
    int Lcm = 0; //最小公倍数
    while (1)
    {
        if (n % min == 0 && m % min == 0)
        {
            GCD = min;
            break;
        }
        else
        {
            min--;
        }
    }

    while (1)
    {
        if (max % m == 0 && max % n == 0)
        {
            Lcm = max;
            break;
        }
        else
        {
            max++;
        }
    }
    printf("%d\n", GCD+ Lcm);
    return 0;
}
  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值