exercise 10

1.
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
#include<stdio.h>

int main()
{
	int A = 0;
	int B = 0;
	int C = 0;
	int D = 0;
	int E = 0;
	for (A = 1; A <= 5; A++){
		for (B = 1; B <= 5; B++){
			for (C = 1; C <= 5; C++){
				for (D = 1; D <= 5; D++){
					for (E = 1; E <= 5; E++){
						if (((1 == B || 3 == A) == 1 &&
							(2 == B || 4 == E) == 1 &&
							(1 == C || 2 == D) == 1 &&
							(5 == C || 3 == D) == 1 && 
							(1 == A || 4 == E) == 1)==1){
							if (120==A*B*C*D*E){
								printf("A=%d B=%d C=%d D=%d E=%d\n", A, B, C, D, E);//去重
							}
						}
					}
				}
			}
		}
	}
	system("pause");
	return 0;
}

2.
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。
A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。
现在请根据这些信息,写一个程序来确定到底谁是凶手。
#include<stdio.h>

int main()
{
	int murder = 0;
	for (murder = 'A'; murder <= 'D'; murder++){//四个人中满足条件的就是凶手
		if (('A' != murder) + (murder == 'C') + (murder == 'D') + ('D' != murder)==3){//三真一假
			printf("murder:%c\n",murder);
		}

	}
	system("pause");
	return 0;
}
3.
在屏幕上打印杨辉三角。
每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第n行的数字有n项。
第n行数字和为2n - 1。
第n行的m个数可表示为 C(n - 1,m - 1),即为从n - 1个不同元素中取m - 1个元素的组合数。
第n行的第m个数和第n - m + 1个数相等 ,为组合数性质之一。
即第n + 1行的第i个数等于第n行的第i - 1个数和第i个数之和,这也是组合数的性质之一。即 C(n + 1, i) = C(n, i) + C(n, i - 1)。
#include<stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)

#define LEN 20

void triange(int arr[LEN][LEN],int n)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < n; i++){
		arr[i][0] = 1;//首尾为1
		arr[i][i] = 1;
		for (j = 1; j < i; j++){
			arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
		}
	}
	for (i = 0; i < n; i++){
		for (j = 0; j < n - i - 1; j++){
			printf("  ");
		}
		for (j = 0; j <= i;j++){
			printf("  %d ", arr[i][j]);
		}
		printf("\n");
	}
}
int main()
{
	int arr[LEN][LEN] = { 0 };
	int n = 0;
	scanf("%d",&n);
	triange(arr,n);

	system("pause");
	return 0;
}


猜你喜欢

转载自blog.csdn.net/zn_wuxunian/article/details/80358595