C语言杨辉三角和“日本某地谋杀案”习题讲解

Posted 小赵小赵福星高照~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言杨辉三角和“日本某地谋杀案”习题讲解相关的知识,希望对你有一定的参考价值。

题目描述:

在屏幕上打印杨辉三角。

输入描述:

4

输出描述

在这里插入图片描述

解题思路:

规律:

每个数等于它上方两数之和。

第一列永远为1

前两个数相加等于下面的数字

image-20210526155452550

#include<stdio.h>
int main()
{
    char arr[20][20] = { 0 };
    int i = 0;
    int j = 0;
    int n = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        for (j = 0; j < n - i; j++)//打印空格
        {
            printf(" ");
        }
        //初始化第一列为1
        arr[i - 1][0] = 1;
        for (j = 1; j <= i; j++)
        {
            //每个数等于它上方两数之和
            arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            printf("%d ", arr[i - 1][j - 1]);
        }
        printf("\\n");
    }
    return 0;
}

小改进:

#include<stdio.h>
int main()
{
    char arr[20][20] = { 0 };
    int i = 0;
    int j = 0;
    int n = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        
        //初始化第一列为1
        arr[i][0] = 1;
        for (j = 0; j <n-i-1 ; j++)//打印空格
        {
            printf(" ");
        }
        for (j = 0; j <= i; j++)
        {
            //每个数等于它上方两数之和
            if ((i > 0) && (j > 0))
            {
                arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
            }
            printf("%d ", arr[i][j]);
        }
        printf("\\n");
    }
    return 0;
}

image-20210526155622024

题目描述:

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。

以下为4个嫌疑犯的供词:

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。

解题思路:

如果我们实际中解决这个问题,一定是假设法,判断什么时候满足3真1假,而写程序描述实际也是一样的,我们利用for循环分别假设凶手是ABCD,将ABCD说的话分别转化为表达式,这些表达式真为1,假为0,当这些表达式加起来等于3的时候,凶手就是我们假设的这个凶手了。

#include<stdio.h>
int main()
{
    char killer = 0;
    for (killer = 'A'; killer <= 'D'; killer++)
    {
        if ((killer != 'A') + (killer == 'C') + (killer == 'D') + (killer != 'D') == 3)
        {
            printf("凶手是:%c\\n", killer);
        }
    }
    return 0;
}

image-20210526154646118

以上是关于C语言杨辉三角和“日本某地谋杀案”习题讲解的主要内容,如果未能解决你的问题,请参考以下文章

电脑小白学习软件开发-C#语言基础之循环重点讲解,习题

大学生必学练习题 - C 语言经典50例

C语言课程设计——25道蓝桥杯练习题

大学生必学练习题 - C 语言经典50例

C语言有关移位操作符位操作符的习题讲解

C语言习题如何在 C 中不使用任何分号打印从 1 到 N 的数字?