当前位置: 首页 > news >正文

C语言 for 循环:解谜数学,玩转生活!

放在最前面的

🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼
🎉🎉我的C语言初阶合集:C语言初阶合集,希望能帮到你!!!😍 😍
👋🏼🎉🎊创作不易,欢迎大家留言、点赞加收藏!!! 🥳😁😍


文章目录

  • 放在最前面的
  • 前言
  • 一、猜凶手
    • 题目描述:
    • 解题思路:
    • 代码如下(示例):
    • 输出结果(示例):
  • 二、杨辉三角
    • 题目描述:
    • 解题思路:
    • 代码如下(示例):
    • 输出结果(示例):
  • 三、猜名次
    • 题目描述:
    • 解题思路:
    • 代码如下(示例):
    • 输出结果(示例):
  • END:总结


前言

本篇博客是通过三道题目来让你真正了解和学会
使用 for循环是如何解决生活实际问题和数学问题的!


一、猜凶手

题目描述:

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

解题思路:

通过对题目的阅读后,我们知道杀人凶手 就在 A B C D这四个人之间的某一个;
所以:
(1)首先我们可以通过 一 一 列举的办法,假设杀人凶手 是A、 B 、C或者 D;
(2)然后进行判断是否满足题目说的他们的供词的 “3个人说了真话,1个人说的是假话”的条件;
(3) 从而 推理得到 真正的杀人凶手 。

代码如下(示例):

#include<stdio.h>int main()
{//定义一个字符型变量 killer,用于存放凶手char killer = 'A';//循环生成 'A','B','C','D';for (killer = 'A'; killer <= 'D'; killer++){//判断是否满足题目的条件if ( ( (killer != 'A') + (killer == 'C')+ (killer == 'D') + (killer != 'D') ) == 3 ){//输出printf("killer = %c\n", killer);}}return 0;
}

输出结果(示例):

二、杨辉三角

题目描述:

在屏幕上打印杨辉三角。
1
1 1
1 2 1
1 3 3 1
……

解题思路:

通过对题目的阅读后,
我们可以通过一个二维数组的形式进行打印杨辉三角;
可以用 r 表示 行,c 表示 列
通过观察知道:
(1)第一列的元素都是 1,并且当 r (行)== c(列) 的时候,元素也是 1 ;
(2)其他位置上的元素是 由该位置 上面位置的元素 + 左上角的元素的和。

代码如下(示例):

#include<stdio.h>int main()
{//定义一个二维数组int arr[10][10] = { 0 };//定义一个整型变量 n ,用于要输入的数字int n = 0;//输入scanf("%d", &n);//定义一个整型变量 r,用于要循环控制的 行数int r = 0;//定义一个整型变量 c,用于要循环控制的 列数int c = 0;//外循环,控制 行数for (r = 0; r < n; r++){//内循环,控制 列数for (c = 0; c <= r; c++){//判断 第一列的元素 和  行 == 列if ((c == r) || (c == 0)){//赋值arr[r][c] = 1;}//判断(除去 第一列的元素和行 == 列)其他位置上的元素if ((r >= 2) && (c < r)){//赋值arr[r][c] = arr[r - 1][c] + arr[r - 1][c - 1];}}}外循环,控制 行数for (r = 0; r < n; r++){//内循环,控制 列数for (c = 0; c <= r ; c++){//输出printf("%5d ", arr[r][c]);}//每输出一行,进行换行printf("\n");}return 0;
}

输出结果(示例):

三、猜名次

题目描述:

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

解题思路:

通过对题目的阅读后,我们知道 每个人的名次可能是 1 ~ 5 的一个。
所以:
(1)首先我们可以通过 一 一 列举的办法,将每个人的 名次 列出来;
(2)然后进行判断是否满足题目说的 “每位选手都说对了一半”的条件;
(3) 最后还要加上每个人只能有一个名次,即(a * b * c * d * e) == 120
(4) 从而 得到每个人比赛最终的名次 。

代码如下(示例):

#include<stdio.h>int main()
{//定义五个整型变量,用于存放 5个运动员的名次int a = 0;int b = 0;int c = 0;int d = 0;int e = 0;//把 a b c d e 五个人可能出现的每次进行 一 一列举出来for (int a = 1; a <= 5; a++){ for (int b = 1; b <= 5; b++){for (int c = 1; c <= 5; c++){for (int d = 1; d <= 5; d++){for (int e = 1; e <= 5; e++){//判断是否满足下面的判断条件if ( ((b == 2) + (a == 3) == 1)&&((b == 2) + (e == 4) == 1)&&((c == 1) + (d == 2) == 1)&&((c == 5) + (d == 3) == 1)&&((a == 1) + (e == 4) == 1)&&((a * b * c * d * e) == 120)){//输出名次printf("a = %d\n", a);printf("b = %d\n", b);printf("c = %d\n", c);printf("d = %d\n", d);printf("e = %d\n", e);}}}}}}return 0;
}

输出结果(示例):


END:总结

每天都在学习的路上!
On The Way Of Learning

以上就是今天要讲的内容,本文简单介绍了用for循环解决生活实际问题(猜凶手、猜名次)和数学问题(杨辉三角);

或我的小思路还有成长的空间哦!🔍 诚挚邀请各位编程大侠,一起来晒出你们那闪耀着智慧光芒的优质代码吧!✨
你的精彩分享,将是我们共同进步的最强动力!💪

http://www.lryc.cn/news/524205.html

相关文章:

  • Node.js 与 JavaScript 是什么关系
  • Java 大视界 -- Java 大数据性能监控与调优:全链路性能分析与优化(十五)
  • 深入Spring Boot:自定义Starter开发与实践
  • React 中hooks之useTransition使用总结
  • 怎样使用树莓派自己搭建一套ADS-B信号接收系统
  • Chrome谷歌浏览器如何能恢复到之前的旧版本
  • 路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)
  • 代码随想录算法训练营第五十五天 |108.冗余连接 109.冗余连接Ⅱ
  • Unity补充 -- 协程相关
  • 【第二十周】U-Net:用于生物图像分割的卷积神经网络
  • 部署Metricbeat监测ES
  • Pytorch|YOLO
  • 云计算与物联网技术的融合应用(在工业、农业、家居、医疗、环境、城市等整理较全)
  • 基于python+Django+mysql鲜花水果销售商城网站系统设计与实现
  • Golang:报错no required module provides package github.com/xx的解决方法
  • 数据结构与算法(2):顺序表与链表
  • 华为OD机试E卷 --过滤组合字符串--24年OD统一考试(Java JS Python C C++)
  • QT跨平台应用程序开发框架(3)—— 信号和槽
  • 从 0 开始实现一个 SpringBoot + Vue 项目
  • 【无标题】微调是迁移学习吗?
  • 虚幻基础1:hello world
  • C链表的一些基础知识
  • JDK长期支持版本(LTS)
  • 【超详细】Python datetime(当前日期、时间戳转换、前一天日期等)【附:时区原理详解】
  • 【Excel】【VBA】双列排序:坐标从Y从大到小排列之后相同Y坐标的行再对X从小到大排列
  • 为什么相关性不是因果关系?人工智能中的因果推理探秘
  • Nginx调优
  • 联德胜w801开发板(四)实现腾讯云mqtt的订阅和发布
  • LLM框架对比选择:MaxKB、Dify、FastGPT、RagFlow【RAG+AI工作流+Agent]
  • C语言内存之旅:从静态到动态的跨越