牛客网刷题总结(1.有序序列判断,2.获得月份天数,3.矩阵相等判定,4.矩阵转换,5.井字棋判断输赢,6.递归进行进制转化)

💕"痛苦难以避免,而磨难可以选择。"-->村上春树💕

作者:Mylvzi 

 文章主要内容:数据在内存中的存储 

目录

1.有序序列判断

题目描述:

 分析过程:

代码实现:

2.获得月份天数

题目描述:

分析过程:

 代码实现:

3.矩阵相等判定

题目描述:

分析过程:

4.矩阵交换

题目描述:

代码实现:

5.井字棋判断输赢

题目描述:

代码实现:

6.递归进行进制转换

题目描述:

分析过程:

 代码实现:

画图理解递归过程:(推出去,再归回来)


1.有序序列判断

题目描述:

 分析过程:

代码实现:

#include <stdio.h>int main() 
{//定义个数int n = 0;scanf("%d",&n);//循环输入数字int arr[n];int i = 0;for(i=0; i<n; i++){scanf("%d",&arr[i]);}//判断int flag1 = 0;//判断升序int flag2 = 0;//判断降序for(i=0; i<n-1; i++){if(arr[i] <arr[i+1])flag1 = 1;elseflag2 = 1;}//如果为unsorted flag1+flag2==2if(flag1 + flag2 == 2){printf("unsorted");}else {printf("sorted");}return 0;
}/*第二种写法,边输入,边判断*/
#include <stdio.h>
//边输入,边判断
int main() 
{//定义个数int n = 0;scanf("%d",&n);//循环输入数字 //判断int flag1 = 0;//判断升序int flag2 = 0;//判断降序int arr[n];int i = 0;for(i=0; i<n; i++){scanf("%d",&arr[i]);if(i>=1)//只要输了一个元素之后,输入一个就和前面已经输入的数字进行比较{if(arr[i] <arr[i-1])flag1 = 1;elseflag2 = 1;}}if(flag1 + flag2 == 2){printf("unsorted");}else {printf("sorted");}return 0;
}

2.获得月份天数

题目描述:

分析过程:

 代码实现:

/*第一种写法,最直观的*/
#include <stdio.h>
int main()
{int y, m;while (scanf("%d %d", &y, &m) != EOF){switch (m){//第一种情况case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("31\n");break;//第二种情况case 4:case 6:case 9:case 11:printf("30\n");break;//二月的情况  要判断是否是闰年default:if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))printf("29\n");elseprintf("28\n");}}return 0;
}/*第二种方法,漂亮的代码*/
#include <stdio.h>
//判断是否为闰年
int is_leap_year(int y)
{if((y%4==0 && y%100!=0 ) || (y%400==0))return 1;elsereturn 0;
}//获取天数
int get_days_of_month(int y,int m)
{//使用数组来存放对应的天数int d = 0;int day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};d=day[m];if(m==2){if(is_leap_year(y)==1)d+=1;}return d;}
int main() 
{//输入年份和月数int y = 0;int m  = 0;while(scanf("%d %d",&y,&m)==2){int d = get_days_of_month(y,m);printf("%d\n",d);}return 0;
}

3.矩阵相等判定

题目描述:

分析过程:

代码实现:(第二种方法要学习)

方法一:

#include <stdio.h>
//BC105
//方法一
//判断矩阵是否相等->大小相等,但对应元素未知
int main()
{//定义矩阵大小int n = 0;int m = 0;scanf("%d %d", &n, &m);//两个矩阵的赋值int arr1[n][m];int arr2[n][m];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr1[i][j]);}}for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr2[i][j]);}}//判断是否相等int flag = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){if (arr1[i][j] != arr2[i][j]){flag = 1;}}}if (1 == flag){printf("No\n");}else {printf("Yes\n");}return 0;
}

方法2:(很不错的一个方法)(main函数也是函数,把它看作一个普通的自定义函数,只有一个返回值)

//BC105
//判断矩阵是否相等->大小相等,但对应元素未知
int main()
{//定义矩阵大小int n = 0;int m = 0;scanf("%d %d", &n, &m);//两个矩阵的赋值int arr1[n][m];int arr2[n][m];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr1[i][j]);}}for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr2[i][j]);if (arr2[i][j] != arr1[i][j]){printf("No\n");return 0;}}}printf("Yes\n");return 0;
}//BC106上三角形矩阵判定
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]);if(j<i)//下对角线的条件,j<i{if(arr[i][j] != 0){printf("NO\n");return 0;}}}}printf("YES\n");return 0;
}

4.矩阵交换

题目描述:

代码实现:
 

#include <stdio.h>
//BC108  矩阵交换
int main()
{//定义矩阵大小int n = 0;int m = 0;scanf("%d %d", &n, &m);//矩阵赋值int i = 0;int j = 0;int arr[n][m];for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr[i][j]);}}//输入进行变幻的次数int k = 0;scanf("%d", &k);//分三种情况进行操作int a = 0;//a仅仅是用来循环次数while (a < k){//先定义要执行的操作char ope = 0;//定义具体位置int x = 0;int y = 0;while (getchar() != '\n');scanf("%c %d %d", &ope, &x, &y);switch (ope){case 'r'://行操作for (j = 0; j < m; j++){int temp = arr[x-1][j];arr[x-1][j] = arr[y-1][j];arr[y-1][j] = temp;}break;case 'c'://列操作for (i = 0; i < n; i++){int temp = arr[i][x-1];arr[i][x-1] = arr[i][y-1];arr[i][y-1] = temp;}break;default://不进行操作break;}a++;}//输出变换后的矩阵for (i = 0; i < n; i++){for (j = 0; j < m; j++){printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

5.井字棋判断输赢

题目描述:

代码实现:

#include <stdio.h>
//BC110//判断输赢函数
int is_winner(char arr[3][3], int row, int col)
{int x = 0;int y = 0;char flag = 0;//rowfor (x = 0; x < row; x++){if (arr[x][0] == arr[x][1] && arr[x][1] == arr[x][2] && arr[x][0] == arr[x][2])flag = arr[x][0];}//colfor (y = 0; y < col; y++){if (arr[0][y] == arr[1][y] && arr[1][y] == arr[2][y] && arr[0][y] == arr[2][y])flag = arr[0][y];}//对角线if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[0][0] == arr[2][2]){flag = arr[0][0];}if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[0][2] == arr[2][0]){flag = arr[0][2];}return flag;
}
int main()
{//用二维数组填充棋盘char arr[3][3];int i = 0;int j = 0;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){scanf("%c", &arr[i][j]);getchar();}}//判断输赢char ret = is_winner(arr, 3, 3);if (ret == 'K'){printf("KiKi wins!");}else if (ret == 'B'){printf("BoBo wins!");}else {printf("No winner!");}return 0;
}

 总结:使用flag标记这种做法是一种很常见的C语言编程过程中使用到的技巧

6.递归进行进制转换

题目描述:

分析过程:

 

 代码实现:

#include <stdio.h>
//BC111
//直接打印出来
void print(int num)
{if (num > 5)//保证num<6{print(num / 6);}printf("%d", num % 6);
}
int main()
{int num = 0;scanf("%d", &num);print(num);return 0;
}

画图理解递归过程:(推出去,再归回来)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351575.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

rundll32.exe和regsvr32.exe

众所周知&#xff0c;DLL文件是不能独自运行的&#xff0c;需要被进程加载到其地址空间后才能执行。 那怎么运行一个DLL呢? 答案&#xff1a;可以借助Windows所提供的rundll32.exe或regsvr32.exe。 rundll32.exe 通过rundll32.exe可以直接调用DLL的导出函数来执行功能。 命令…

自实现Regsvr32注册dll功能

之前做的项目需要注册虚拟摄像头&#xff0c;但是有两个不足是&#xff1a; 在使用Regsvr32.exe注册虚拟摄像头dll时&#xff0c;即便选了“不再提醒”和“允许程序所有操作”后&#xff0c;仍然会被360拦截&#xff1b;使用.bat文件调用Regsvr32.exe时&#xff0c;.bat文件经…

从简历被拒到收割 8 个高薪 offer,我用了 3 个月...

半年前我一个小老弟从外包离职了&#xff0c;本以为有两年经验进个一般的公司没有问题的&#xff0c;结果人家一看是外包出来的&#xff0c;面试问的问题也不是很懂&#xff0c;简历被拒了好几次。还好这个小老弟没有气馁&#xff0c;在论坛博客和里面的大佬虚心学习&#xff0…

淘宝618每日一猜答案(6月5日) 淘宝大赢家今日答案

淘宝6月5日每日一猜答案是什么&#xff1f;&#xff0c;接下来也会给大家来介绍一下6月5日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月5日答案分享 活动问题&#xff1a;亚特兰蒂斯体型最大的员工 活动答案&#xff1a;【白鲸】 注意&#xff1a;打开手机淘宝&#xff0c;搜…

Android 反编译工具 jadx-gui

jadx-gui 是一种基于 jadx 项目的图形界面工具&#xff0c;用于反编译 Android 应用程序的工具。通过使用jadx-gui&#xff0c;开发人员可以打开 APK&#xff08;Android应用程序包&#xff09;文件&#xff0c;并查看其反编译的源代码。这对于分析、理解和调试 Android 应用程…

红米K30 4G手机图纸 主板元件位号图

红米K30 4G手机图纸 主板元件位号图品牌小米型号K30 4G图纸类型 手机电路图 主板元件位号图 图纸格式PDF其他信息 K30 4G手机图纸包括&#xff1a; 手机电路原理图72页&#xff1b; 元器件位号图主板2页&#xff1b; 可放大缩小 复制搜索&#xff01; 如发现不能下载&#xff0…

小米3移动版卡在Android,小米3高通版能用移动卡吗

小米3高通版能用移动卡吗 小米3高通版能用移动卡。 针对小米3高通版能用移动卡吗的问题&#xff0c;小米3高通800版本的移动用户也是可以使用移动卡的&#xff0c;但是只能使用移动的2G的&#xff0c;不能使用3G的。 系统方面&#xff0c;小米3的操作系统是基于Android 4.2.1的…

用笔记本改装智能家居服务器,一年之后,改装4G版小米笔记本电脑的可行性

前面写过一篇《分析支持4G LTE的小米新款笔记本电脑的必要性》&#xff0c;昨天小米正式发布了这款4G版的笔记本电脑&#xff0c;大约增加了1200元钱&#xff0c;送全年48GB流量。 在我来说&#xff0c;支持4G上网是一件好事&#xff0c;但不是像苹果那样全网通&#xff0c;而且…

小米3刷android 5.0吗,小米4/小米3刷安卓5.0.2教程

不要羡慕谷歌的亲儿子们能刷上安卓5.0.2系统&#xff0c;小米用户可以刷原生的安卓的5.0.2系统了&#xff0c;小米手机的发烧友们可以一展身手了。下面下载吧小编就给大家带来了适配小米3、小米4的原生安卓5.0.2系统。 今天MIUI工程师秋叶随风ivan在微博上公布了自己定制的原生…

小米移动没有5G信号该如何处理

问题描述 小米移动手机卡使用过程中一直显示4G信号&#xff0c;无法使用5G信号 原因分析&#xff1a; 联通、电信取消了部分NSA网络&#xff0c;因此有部分地区只有SA网络覆盖。如果正在使用支持SA/NSA双模5G的手机&#xff0c;需要将手机升级至最新版本以支持SA网络。 解决方…

中国3大运营商4G频段大解析

中国的4G网络有两种制式&#xff0c;TD-LTE和FDD-LTE&#xff0c;TD-LTE是中国自己的标准&#xff08;只是相对的&#xff0c;这个标准我们的专利要多一些&#xff09;&#xff0c;所以是工信部重点推的。两种制式在技术上有啥区别呢&#xff1f;简单的说&#xff0c;FDD是分频…

米4用linux刷机救转,小米Mi4(小米4 电信4G版)手机快速救砖,线刷教程分享,小白轻松救活手机...

小米Mi4(小米4 电信4G版)手机变砖了怎么办?对于经常刷机的安卓玩家来说&#xff0c;碰到刷机失败导致小米Mi4(小米4 电信4G版)手机无法启动甚至无法进入recovery都是在所难免的事&#xff0c;这个时候我们就需要用到线刷大师了&#xff0c;它能轻松实现小米Mi4(小米4 电信4G版…

红米3用电信卡显示无服务器,红米3支持电信卡吗?红米3支持联通卡吗?

小米红米手机3支持电信卡吗 小米红米手机3支持电信卡。 小米红米手机3支持电信卡吗?小米红米手机3运行基于Android 5.1.1的MIUI 7系统&#xff0c;内置5套系统UI主题&#xff0c;支持随用户的心意自由选择5套系统UI&#xff0c;新增多项功能如可视化的文件夹管理&#xff0c;在…

3G、3GPP、LTE、4G解释

3G 3G是第三代移动通信技术&#xff0c;是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息。3G是将无线通信与国际互联网等多媒体通信结合的一代移动通信系统。 3GPP 3GPP是The 3rd Generation Partnership Project&#xff08;第三代合作伙伴计划&a…

善领dsa2020最新车机ce版_小米MIX 3 5G版成为首款获欧盟5G认证的骁龙855手机

↑↑↑点击上方蓝字订阅每日最新国产手机资讯 随着通信技术的不断发展&#xff0c;5G离我们越来越近。虽然5G网络在我国还没有正式商用&#xff0c;但是海外已经有部分国家和地区已经开始试用5G网络。因此许多国产品牌的5G手机都会选择在海外上市&#xff0c;小米MIX 3 5G版就是…

小米平板4(Plus) LTE 版本,开通话模式教程(MIUI)

小米平板4&#xff08;Plus&#xff09; LTE 版本&#xff0c;开通话模式教程&#xff08;MIUI&#xff09; 详细流程如下&#xff1a; 800咸鱼收台小米平板4 PLUS LTE一台&#xff0c;先升级至最新开发版。 解BL锁 百度搜索小米解锁 http://www.miui.com/unlock/index.html …

2/3/4/5G频段 带宽介绍

5G频率范围/频段/帧结构与带宽/保护带宽/NR频点号/UE发射功率 等NR相关知识介绍 Dengtao67_dz 2019-03-21 21:14:30 5916 收藏 8 一、保护带宽计算公式&#xff1a; Guardband保护带宽&#xff0c;计算公示&#xff1a;(CHBW x 1000 (kHz) - RB value x SCS x 12) / 2 - SCS…

【技术宅拯救世界】小米3小米4刷Android7.1 Nougat AOSP并安装Google套件教程与资源下载

写在前面&#xff1a;这篇文章的资源都是来自于XDA&#xff0c;内容是根据XDA原作者的一些简单说明加上本人自己的一些刷机经验总结也包括在刷机失败的情况下如何解决的方法&#xff0c;介意看本人所写内容的同学可以直接到XDA官网查看原文&#xff0c;这里贴出链接AOSP [Nouga…

小米3c虚拟服务器,小米路由器3和3C哪个好?小米路由器3和3C区别

小米路由器3代刚刚发布不久后&#xff0c;小米新款路由器似乎又要来了&#xff0c;并且还将会在不久后与大家见面了。我们今天在国家的3C质量认证中心无意间发现新款小米路由器的身影&#xff0c;它的型号为“小米路由器3C”&#xff0c;配备的是5V/1A充电器。究竟小米路由器3和…

小米3基于android,小米手机3评测 最大最快的小米3详细评测图文介绍

骁龙800处理器 骁龙800内部集成了四颗Karit 400架构的CPU核心&#xff0c;采用台积电28nm HPM工艺制造&#xff0c;该工艺是专为高性能移动处理器而生的&#xff0c;让骁龙800每颗核心的最高频率均可达到2.3GHz。此外Krait是异步对称多处理(aSMP)架构&#xff0c;号称能够提供每…