目录

一、喝汽水问题

1.循环求解

2.找规律

二、上三角矩阵判定

三、矩阵相等判定

总结


一、喝汽水问题

题目描述:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。

1.循环求解

对于,这道题,我们首先的思路就是循环了,我们是这样思考的,我们有20元,这20元可以换20个空瓶,这20个空瓶又可以换10瓶汽水,这10瓶汽水又可以换5瓶汽水,这五瓶汽水又可以换2瓶汽水剩一个空品,然后两瓶汽水又可以换一瓶汽水,这个空瓶加上之前的空瓶正好又可以换一瓶水。这样的思路我们捋清楚了,那么我们该如何实现呢?

我们设置几个变量,一个是money,这个我们是需要输入的钱数,然后我们在定义一个变量total,并让他赋值为0,他代表的是已经喝掉的汽水总数,那么当然首先需要让total加上money的值了,这就是一开始喝的汽水数量,喝完了,就自然又空瓶子了,所以我们继续定义一个变量empty_bottle,利用他去记录,某一状态的空瓶子,当空瓶子数量大于等于2的时候,就需要对他 / 2,这就是我们可以兑换的饮料数量,然后我们直接喝掉他,记录在total中,然后我们将空瓶子的数量修改为,上一次喝完的空瓶子数量加上上一下余下的空瓶子数量,这样循环往复,即可解决问题。

代码如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{int money = 0;scanf("%d", &money);int total = 0;total += money;int empty_bottle = money;while (empty_bottle >= 2){total += empty_bottle / 2;empty_bottle = empty_bottle / 2 + empty_bottle % 2;}printf("%d", total);return 0;
}

运行结果为

2.找规律

对于这种题目,我们也可以通过找规律来求解,我们发现20瓶最终是39瓶,40瓶最终是79瓶......100瓶最终是199瓶,也就是说规律为2n-1,这个规律我们从等价的角度也可以思考,因为2个空瓶可以换1瓶水,一瓶水等于一块钱,所以5毛钱一瓶水,类似于高中物理的全过程动能定理,或者是能量守恒定律,我们只需要关注初始状态与末状态即可,初始状态为20块钱也就是40个空瓶子,末尾状态为1个空瓶子,所以就是消耗了39个空瓶子,也就是39瓶水

代码如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{int money = 0;scanf("%d", &money);int total = 0;//total += money;////int empty_bottle = money;//while (empty_bottle >= 2)//{//  total += empty_bottle / 2;//  empty_bottle = empty_bottle / 2 + empty_bottle % 2;//}if(money>0)total = money * 2 - 1;printf("%d", total);return 0;
}

二、上三角矩阵判定

链接:上三角矩阵判定_牛客题霸_牛客网

来源:牛客网

对于这道题,我们可以采用一个变长数组,然后在我们两层变量输入这个矩阵,然后判断的时候只需要列小于行就可以了,类似于高中数学中的线性规划问题,只要一旦出现一个0,就让这个标志记作零,然后跳出循环,根据标志来进行输出

代码如下

#include <stdio.h>int main() {int n=0;scanf("%d",&n);int arr[n][n];int i=0;int j=0;for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&arr[i][j]);}}for(i=0;i<n;i++){for(j=0;j<n;j++){if(i>j){if(arr[i][j]!=0){printf("NO\n");goto end;}}}}printf("YES\n");
end:return 0;
}

运行结果如下所示

三、矩阵相等判定

链接:矩阵相等判定_牛客题霸_牛客网

来源:牛客网

对于这道题,思路与上一个题的思路基本一致,输入两个数组,然后进行遍历判断即可

#include <stdio.h>int main() {int m=0,n=0;scanf("%d %d",&m,&n);int arr[m][n];int brr[m][n];int i=0;int j=0;for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&arr[i][j]);}}for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&brr[i][j]);}}int flag=1;for(i=0;i<m;i++){for(j=0;j<n;j++){if(arr[i][j]!=brr[i][j]){flag=0;goto end;}}}
end:if(flag==1){printf("Yes\n");}else{printf("No\n");}return 0;
}

运行结果为

当然,我们可以适当的优化一下代码,我们可以输入第二个数组的时候,就进行判断,代码如下

#include <stdio.h>int main() {int m = 0, n = 0;scanf("%d %d", &m, &n);int arr[m][n];int brr[m][n];int i = 0;int j = 0;for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &arr[i][j]);}}int flag = 1;for (i = 0; i < m; i++){for (j = 0; j < n; j++){scanf("%d", &brr[i][j]);if (arr[i][j] != brr[i][j]){flag = 0;goto end;}}}
end:if (flag == 1){printf("Yes\n");}else {printf("No\n");}return 0;
}

运行结果为


总结

本小节主要讲解了C语言经典题目之喝汽水问题、上三角矩阵判定以及矩阵相等判定的解题思路和代码

【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定相关推荐

  1. c语言刷题(牛客网)

    c语言刷题(牛客网100道基础题) 学习没有捷径,唯有重复多练,这是浩克为大家找的牛客网刷题资源,如果你正在学或者学完了都可以来检验一下自己能力. 浩克也会专门开个专栏来讲解c语言刷题,让大家对c语言 ...

  2. 关于C语言刷题(#define宏定义函数的常见错误)

    关于C语言刷题(#define宏定义函数的常见错误) 首先我们来先看对#define的定义 define,宏定义,C语言中预处理命令一种.分为无参宏定义和带参宏定义.无参宏定义的一般形式为:#defi ...

  3. Nowcoder《C语言刷题笔记》BC1-BC15

    Nowcoder <C语言刷题笔记> BC1-BC15 文章目录 Nowcoder <C语言刷题笔记> BC1-BC15 0x00 写在前面 0x01 简单输出 BC1 Now ...

  4. C语言刷题训练营-自我补全

    目录 刷题收获: 在线OJ BC1-实践出真知 BC2-我是大V BC3-有容乃大 BC6-小飞机 BC7-缩短2进制 BC8-十六进制转十进制 BC9-printf函数的返回值 BC10-成绩的输入 ...

  5. 【每日进步一点点】C语言刷题技巧及训练1

    恭喜你发现宝藏,这里是刹那芳间,很高兴为您服务~ C语言编程题 相信很多同学学校的C语言考试是上机做编程题叭,不要慌,这里将带你进行一个初步的入门,进行一些简单的编程题练习. Anyway, 请一定要 ...

  6. C语言刷题(8)——“C”

    各位CSDN的uu你们好呀,今天,小雅兰的内容是复习之前所学习的知识点,因为最近C语言马上就要更完啦,接下来,小雅兰会更新一些数据结构与算法的知识点,那么,复习最好的方式就是写题目,现在,让我们开始复 ...

  7. 【牛客刷题专栏】0x27:JZ29 顺时针打印矩阵(C语言编程题)

    前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失. 个人刷题练习系列专栏:个人CSDN牛客刷题专栏. 题目来自:牛客/题库 / 在线编程 / 剑 ...

  8. 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习

    Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...

  9. 计算机二级C语言刷题笔记

    目录 前言 1.题目 1068: 二级C语言-温度转换 2.题目 1067: 二级C语言-分段函数 3.题目 1060: 二级C语言-同因查找 4.题目 1058: 二级C语言-求偶数和 前言 作者: ...

最新文章

  1. NLP | 医学AI又一突破,微软开源生物医学NLP基准:BLURB
  2. 机器翻译难敌人类灵活多变的语言
  3. 深入理解JVM虚拟机(十):Java内存模型与多线程
  4. 深度学习 自组织映射网络 ——python实现SOM(用于聚类)
  5. 数据结构和算法 —— 图
  6. signalr网上学习资料
  7. 合成资产平台Public Mint与跨链资产协议Knit Finance达成合作
  8. 嵌入式组态软件HMImaker(绿色版人机界面组态软件)
  9. 页面无法自动播放音频的解决方案
  10. KUI-金山界面库 自定义消息
  11. 华三模拟器:实现路由器接口使用dhcp获取地址
  12. 神舟笔记本WLAN打不开的解决方法
  13. UDT的连接建立和释放
  14. 北斗时钟服务器(NTP服务器)让高考时间更加精准
  15. html播放rmvb,用windows media player 播放rmvb 和mov
  16. 闻灾情 忆国殇 山河呜咽 寄哀思
  17. Android Wifi自动打开并连接
  18. 惠普战66怎么用u盘进入系统_惠普战66笔记本怎么装系统?惠普战66装win10系统步骤...
  19. github上几个Xposed调试插件及其他开源插件
  20. WIN11从MSDN重新安装后 应用商店打不开 报错 0x80131500 0x00000194 报错 0x80240438

热门文章

  1. html文本通常由版本信息组成,第 2 章 网页版面设计.ppt
  2. Mac pro 下安装win7系统双系统
  3. P2324 [SCOI2005]骑士精神(IDA*)
  4. Junit - 忽略测试(Ignore Test)
  5. Win10 如何禁用BitLocker加密cmd命令
  6. windows自带Bitlocker使用问题汇总
  7. css中元素横向放置,使用CSS将元素放置到右侧
  8. 【入门AUTOSAR网络管理测试】RMS-NOS状态转换
  9. 微信小程序图片的加载
  10. JSON简介:什么是JSON?