第一题

(1)猜名次 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次 首先呢,编程的目的就是为了解决实际问题,当我们看到这道题的时候,需要跳脱出我们自己的固定思维,学会编程思维,俩者之间其实就是一个转换,大概步骤: 1,读题,了解到题目在表达什么,需要做什么,结果是要求什么 2.进行简单的分析,麻烦的,琐碎的思维留给替你打工的计算机;

代码展示;void guessRank()//调用函数

{

int a, b, c, d, e;//int型是因为a,b.c.e.为变量,赋值12345.排名;

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 ((b == 2) + (a == 3) == 1

						&& (b == 2) + (e == 4) == 1

						&& (c == 1) + (d == 2) == 1

						&& (d == 3) + (c == 5) == 1

						&& (e == 4) + (a == 1) == 1)//进行筛选,由题分析得到的筛选条件;代码写于此处基本已完成,可以试一下运行看结果

					{



						if (a * b * c * d * e != 120) //由上面结果可以得到,满足体干条件的情况里面,有重复排名的情况,此处进行这个操作,是在保证五人排名相异;

						{

							continue;跳出

						}

						printf("a = %d, b = %d, c = %d, d = %d, e = %d\n", a, b, c, d, e);//打印结果,注意格式

					}

				}

			}

		}

	}

}

}

int main()

{

guessRank();//函数调用,这里会发现函数其实并未传参

return 0;

}

第二题

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

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

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

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

现在请根据这些信息,写一个程序来确定到底谁是凶手 (1)问题的结果是输出凶手 (2)输出结果为A.B C D,k考虑到字符类型 (3)条件是三真一假,转化为代码如何构建

int main()
{
	char murder;
	int i = 0, sum = 0;
	for (i = 1; i <= 4; i++)
	{
		murder = 64 + i;//murder为char类型,转为ABCD
		sum = (murder != 'A') + (murder == 'C') + (murder == 'D') + (murder != 'C');
		if (sum == 3)
		{
			printf("凶手是:%c", murder);
		}
	}
	return 0;
}

第三题

杨辉三角 总结规律: // 1. 每一行, 第一列和最后一列都是 1 // 2. 每一行, 列数, 和当前行号相同 // 3. 第 row 行 第 col 列 元素的内容, row-1行 col-1列 + row-1行 col列 // 例如, 第3行第2列值是 2 , 第 2 行第 1 列 和 第2行 第2列 和

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//
//杨辉三角
//1.首位是1;
//2.出首尾外,每次的数字为上一行,上一列所在和上一行,所在列的和;
void print_yanghui(int n)
{
	int arr[15][15] = { 0 };//此处的15是随手给的,如果需要动态变化的话,可以使用·例如malloc,
	for (int row = 1; row <= n; row++)//行的循环
	{
		for (int col = 1; col <= row; col++)//列的循环
		{
			if (col == 1 || col == row)//首尾为一
			{
				arr[row][col] = 1;
			}
			else
			{
				arr[row][col] = arr[row - 1][col - 1] + arr[row - 1][col];
			}
			printf("%d", arr[row][col]);//打印一行
		}printf("\n");//打印完一行后换行操作
	}
}
int main()
{
	int n = 0;
	printf("亲输入要打印的杨辉三角的行数>");//此处给定基础数量的自定义操作
	scanf("%d", &n);
	print_yanghui(10);
	return 0;
}