C语言杨辉三角和“日本某地谋杀案”习题讲解
Posted 小赵小赵福星高照~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言杨辉三角和“日本某地谋杀案”习题讲解相关的知识,希望对你有一定的参考价值。
题目描述:
在屏幕上打印杨辉三角。
输入描述:
4
输出描述
解题思路:
规律:
每个数等于它上方两数之和。
第一列永远为1
前两个数相加等于下面的数字
#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;
}
题目描述:
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为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;
}
以上是关于C语言杨辉三角和“日本某地谋杀案”习题讲解的主要内容,如果未能解决你的问题,请参考以下文章