C语言习题——练习3 向右看齐 2022-12-21 03:17 167阅读 0赞 #include<stdio.h> //1.杨辉三角 //在屏幕上打印杨辉三角。 //1 //1 1 //1 2 1 //1 3 3 1 void YHTri(int n) { //首先初始化为1,以为第一行为1 int data[30][30] = { 1 }; //从第二行开始打印 for (int i = 1; i < n; i++) { //第一列永远为1 data[i][0] = 1; for (int j = 1; j <= i; j++) { data[i][j] = data[i - 1][j - 1] + data[i - 1][j]; } } //打印 for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { printf("%d ",data[i][j]); } printf("\n"); } } void YHTri2(int n) { int data[30] = { 1 }; printf("1\n"); for (int i = 1; i < n; i++) { for (int j = i; j > 0; j--) { data[j] += data[j - 1]; } for (int j = 0; j <= i; j++) { printf("%d ", data[j]); } printf("\n"); } } //2.猜凶手 //日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 //以下为4个嫌疑犯的供词 //A说:不是我。 //B说:是C。 //C说:是D。 //D说:C在胡说 //已知3个人说了真话,1个人说的是假话。 //现在请根据这些信息,写一个程序来确定到底谁是凶手。 void Guess() { //假设四人都不是凶手 int murder[4] = { 0 }; int i; //遍历四个人的话 for (i = 0; i < 4; i++) { //假设某人是凶手 murder[i] = 1; //满足条件就是你了 if ((murder[0] != 1) + (murder[2] == 1) + (murder[3] == 1) + (murder[3] != 1) == 3) { break; } //不满足还他清白 murder[i] = 0; } //输出谁是凶手 putchar('A'+i); } //3.猜名次 //5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果: //A选手说:B第二,我第三; //B选手说:我第二,E第四; //C选手说:我第一,D第二; //D选手说:C最后,我第三; //E选手说:我第四,A第一; //比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 int CheckData(int *p) { //构造哈希标记表 int tmp[7] = { 0 }; int i = 0; for (i = 0; i < 5; i++) { if (tmp[p[i]]) { return 0; } tmp[p[i]] = 1; } return 1; } int main() { //5.定义选手数组 int p[5]; //遍历5名选手的名次,每一名都是从1~5,总共有5^5种情况 for(p[0]=1;p[0]<=5;p[0]++) for(p[1]=1;p[1]<=5;p[1]++) for(p[2]=1;p[2]<=5;p[2]++) for(p[3]=1;p[3]<=5;p[3]++) for (p[4] = 1; p[4] <= 5; p[4]++) { //每个人50%的概率用||运算 //这里是五个人的描述,由于比较表达式只有0和1两个结果,如果要两个条件有且只有一个为真,则可以用比较表达式的值总和为1的方式直接判定。别忘了还要判定不能并列。 if ((p[1] == 2) + (p[0] == 3) == 1 && //B第二,我第三 (p[1] == 2) + (p[4] == 4) == 1 && //我第二,E第四 (p[2] == 1) + (p[3] == 2) == 1 && //我第一,D第二 (p[2] == 5) + (p[3] == 3) == 1 && //C最后,我第三 (p[4] == 4) + (p[0] == 1) == 1 && //我第四,A第一 CheckData(p) //不能并列 ) { //如果满足以上条件,判断是否出现并列情况 for (int i = 0; i < 5; i++) { printf("p[%d]=%d\n", i, p[i]); } } } 2. //Guess(); /*int n = 4; YHTri2(4);*/ return 0; } 踩坑总结:第三题排名次,第一次使用||操作符来实现每人50%概率,由于逻辑运算操作符只要有一个不满足,后面都不执行,因此出现错误。所以用(a+b)==1来实现更稳定。
相关 C语言:练习 ![c7267eaea5be4f8f8138b648012a94e0.png][]题一:宏实现计算偏移量 写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明 偏执的太偏执、/ 2023年10月14日 14:53/ 0 赞/ 53 阅读
相关 C语言:练习 ![6a7277307c8d403ebdea1fd7a5e848ec.png][]题一:单身狗 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 编写一个 悠悠/ 2023年10月14日 14:26/ 0 赞/ 49 阅读
相关 C语言:练习 ![f30c5ddd8ede4b9a887c5013e44f674f.png][] 题一:直接交换 交换两个变量(不创建临时变量) 不允许创建临时变量,交换两 梦里梦外;/ 2023年10月14日 12:59/ 0 赞/ 60 阅读
相关 C语言:练习 ![55a437787a0d4534b39a465dd4c8cb03.png][] 题一:模拟实现strlen strlen的模拟(递归实现) 递归和非递归分别 Bertha 。/ 2023年10月14日 11:41/ 0 赞/ 59 阅读
相关 C语言:练习 ![e731ca8449d34635908e5e3c8203deac.png][] 题一:九九乘法表 在屏幕上输出9\9乘法口诀表 %-d(加负号),在后面补空格 àì夳堔傛蜴生んèń/ 2023年10月14日 11:09/ 0 赞/ 60 阅读
相关 C语言:练习 ![0843c259fb2b4bfe861deadd6b7719de.png][] 目录 题一 题二 题三 题四 题五 题六 题七 题八 题九: 题十 桃扇骨/ 2023年10月14日 10:56/ 0 赞/ 56 阅读
相关 C语言习题——练习4 回调函数-qsort各种操作 1.模仿qsort的功能实现一个通用的冒泡排序 2.使用库函数,qsort排序各种类型的数据 1.模仿qsort的功能实现一 墨蓝/ 2022年12月22日 06:17/ 0 赞/ 139 阅读
相关 C语言习题——练习3 include<stdio.h> //1.杨辉三角 //在屏幕上打印杨辉三角。 //1 //1 1 //1 向右看齐/ 2022年12月21日 03:17/ 0 赞/ 168 阅读
相关 C语言习题——练习2 每日练习,不做讲解 include <stdio.h> include <assert.h> if 0 //1.代码调试解释问题 一时失言乱红尘/ 2022年12月20日 08:36/ 0 赞/ 198 阅读
相关 C语言习题——练习1 操作符练习题 1.求两个数二进制中不同位的个数 1.1 思路 1.2 代码 2.打印整数二进制的奇数位和偶数位 2.1 た 入场券/ 2022年12月19日 14:29/ 0 赞/ 209 阅读
还没有评论,来说两句吧...