C语言:实现有序序列判断

news2024/11/23 20:36:43

题目:

输入一个整数序列,判断是否是有序序列有序,指序列中的整数从小到大排序或者从大到小排序(相同元素视为有序)。

               

输入描述:

第一行输入一个整数N (3≤N≤50) 。

第二行输入N个整数,用空格分隔N个整数

                            

输出描述:

输出一行,如果序列有序输出sorted否则输出unsorted

           

示例1:

输入:

5
1 6 9 22 30

输出:

sorted

示例2:

输入:

5
3 4 7 2 10

输出:

unsorted

示例3:

输入:

5
1 1 1 1 1

输出:

sorted

                    

 =========================================================================

                       

思路一:先输入数据再判断

总体思路:

(一).

输入数组长度N;输入N个整数用一个数组存储

              

(二).

判断是否有序升序 降序

有序的情况下,都是大于号都是小于号

             

两个变量分别表示 升序 降序

int flag1 = 0;        --        表升序满足升序关系 即 flag1 = 1

int flag2 = 0;        --        表降序满足降序关系 即 flag2 = 1

等于的话,flag1 和 flag2 都是 0

              

相邻两个数进行比较N个数比较 n-1 对

使用 for循环 循环进行比较

for循环 内使用 if条件判断语句

判断 前一个数 小于 后一个数,还是 前一个数 大于 后一个数

小于flag1 = 1 ,即 当前两个数是小于号,可能是升序

大于 flag2 = 1 ,即 当前两个数是大于号,可能是降序

                   

(三). 

判断完 升序 或 降序 后看 flag1 和 flag2 的情况来判断是否有序

               

如果 flag1 + flag2 == 2,说明 既有大于号又有小于号打印 unsorted 

其他情况:

flag1 + flag2 == 1的话,说明有序

flag1 + flag2 == 0的话,说明都相等,也是有序打印 sorted

                


                 

第一步:

(1). 输入数组长度N

              

(2). 输入N个整数一个数组进行存储

                     

实现代码:

#include <stdio.h>
int main()
{
	//输入数组长度N:
	int N = 0; //数组长度
	//输入:
	scanf("%d", &N);

	//输入N个整数,用一个数组进行存储:
	int arr[50] = { 0 };
	//输入N个整数:
	int i = 0;
	for (i = 0; i < N; i++)
	{
		scanf("%d", &arr[i]);
	}


	return 0;
}

实现图片:

                 


                 

第二步:

判断是否有序升序 降序

有序的情况下,都是大于号都是小于号

             

(1).

两个变量分别表示 升序 降序

int flag1 = 0;        --        表升序满足升序关系 即 flag1 = 1

int flag2 = 0;        --        表降序满足降序关系 即 flag2 = 1

等于的话,flag1 和 flag2 都是 0

              

(2).

相邻两个数进行比较N个数比较 n-1 对

使用 for循环 循环进行比较

for循环 内使用 if条件判断语句

判断 前一个数 小于 后一个数,还是 前一个数 大于 后一个数

小于flag1 = 1 ,即 当前两个数是小于号,可能是升序

大于 flag2 = 1 ,即 当前两个数是大于号,可能是降序

                     

实现代码:

#include <stdio.h>
int main()
{
	//输入数组长度N:
	int N = 0; //数组长度
	//输入:
	scanf("%d", &N);

	//输入N个整数,用一个数组进行存储:
	int arr[50] = { 0 };
	//输入N个整数:
	int i = 0;
	for (i = 0; i < N; i++)
	{
		scanf("%d", &arr[i]);
	}

	//判断是否有序:升序 或 降序
	//有序的情况下,都是 大于号 或 都是 小于号

	int flag1 = 0; //表示升序,满足升序关系 --> flag1=1
	int flag2 = 0; //表示降序,满足降序关系 --> flag2=1
	//判断过程中,
	//如果 flag1一直为1,flag2一直为0,说明是升序,
	//如果 flag2一直为1,flag1一直为0,说明是降序
	//等于的话,flag1和flag2都是0

	//相邻两个数进行比较,N个数,比较 N-1 对:
	for (i = 0; i < N-1; i++)
	{
		if (arr[i] < arr[i + 1])
		//前一个数 小于 后一个数
		{
			flag1 = 1;
			//满足升序条件
		}
		else if (arr[i] > arr[i + 1])
		//前一个数 大于 后一个数
		{
			flag2 = 1;
			//满足降序条件
		}
	}

	return 0;
}

实现图片:

                 


                 

第三步:

判断完 升序 或 降序 后看 flag1 和 flag2 的情况来判断是否有序

               

如果 flag1 + flag2 == 2,说明 既有大于号又有小于号打印 unsorted 

其他情况:

flag1 + flag2 == 1的话,说明有序

flag1 + flag2 == 0的话,说明都相等,也是有序打印 sorted

                     

实现代码:

#include <stdio.h>
int main()
{
	//输入数组长度N:
	int N = 0; //数组长度
	//输入:
	scanf("%d", &N);

	//输入N个整数,用一个数组进行存储:
	int arr[50] = { 0 };
	//输入N个整数:
	int i = 0;
	for (i = 0; i < N; i++)
	{
		scanf("%d", &arr[i]);
	}

	//判断是否有序:升序 或 降序
	//有序的情况下,都是 大于号 或 都是 小于号

	int flag1 = 0; //表示升序,满足升序关系 --> flag1=1
	int flag2 = 0; //表示降序,满足降序关系 --> flag2=1
	//判断过程中,
	//如果 flag1一直为1,flag2一直为0,说明是升序,
	//如果 flag2一直为1,flag1一直为0,说明是降序
	//等于的话,flag1和flag2都是0

	//相邻两个数进行比较,N个数,比较 N-1 对:
	for (i = 0; i < N-1; i++)
	{
		if (arr[i] < arr[i + 1])
		//前一个数 小于 后一个数
		{
			flag1 = 1;
			//满足升序条件
		}
		else if (arr[i] > arr[i + 1])
		//前一个数 大于 后一个数
		{
			flag2 = 1;
			//满足降序条件
		}
	}

	//判断完 升序 或 降序 后,看 flag1 和 flag2 的情况来判断是否有序:
	if (flag1 + flag2 == 2)//说明既有 大于 又有 小于
	{
		printf("unsorted\n");
	}
	else
	// ==1 的话,说明有序;==0 的话,说明都相等,也是有序
	{
		printf("sorted\n");
	}

	return 0;
}

实现图片:

                    

思路一:最终代码和实现效果

最终代码:

#include <stdio.h>
int main()
{
	//输入数组长度N:
	int N = 0; //数组长度
	//输入:
	scanf("%d", &N);

	//输入N个整数,用一个数组进行存储:
	int arr[50] = { 0 };
	//输入N个整数:
	int i = 0;
	for (i = 0; i < N; i++)
	{
		scanf("%d", &arr[i]);
	}

	//判断是否有序:升序 或 降序
	//有序的情况下,都是 大于号 或 都是 小于号

	int flag1 = 0; //表示升序,满足升序关系 --> flag1=1
	int flag2 = 0; //表示降序,满足降序关系 --> flag2=1
	//判断过程中,
	//如果 flag1一直为1,flag2一直为0,说明是升序,
	//如果 flag2一直为1,flag1一直为0,说明是降序
	//等于的话,flag1和flag2都是0

	//相邻两个数进行比较,N个数,比较 N-1 对:
	for (i = 0; i < N-1; i++)
	{
		if (arr[i] < arr[i + 1])
		//前一个数 小于 后一个数
		{
			flag1 = 1;
			//满足升序条件
		}
		else if (arr[i] > arr[i + 1])
		//前一个数 大于 后一个数
		{
			flag2 = 1;
			//满足降序条件
		}
	}

	//判断完 升序 或 降序 后,看 flag1 和 flag2 的情况来判断是否有序:
	if (flag1 + flag2 == 2)//说明既有 大于 又有 小于
	{
		printf("unsorted\n");
	}
	else
	// ==1 的话,说明有序;==0 的话,说明都相等,也是有序
	{
		printf("sorted\n");
	}

	return 0;
}

实现效果:

                    

 =========================================================================

                       

思路二:边输入边判断

(输入两个数后就可以判断一次大小了)

总体思路:

思路一的基础上

             

思路一第一步的(2)输入N个数

放到 第二步(2)的 for循环中 

          

如果输入了两个数开始进行比较

                


              

第一步:

(1).

思路一第一步的(2)输入N个数

放到 第二步(2)的 for循环中 

          

(2).

如果输入了两个数开始进行比较

                     

实现代码:

#include <stdio.h>
int main()
{
	//输入数组长度N:
	int N = 0; //数组长度
	//输入:
	scanf("%d", &N);

	//输入N个整数,用一个数组进行存储:
	int arr[50] = { 0 };

	//判断是否有序:升序 或 降序
	//有序的情况下,都是 大于号 或 都是 小于号

	int flag1 = 0; //表示升序,满足升序关系 --> flag1=1
	int flag2 = 0; //表示降序,满足降序关系 --> flag2=1
	//判断过程中,
	//如果 flag1一直为1,flag2一直为0,说明是升序,
	//如果 flag2一直为1,flag1一直为0,说明是降序
	//等于的话,flag1和flag2都是0

	int i = 0;
	for (i = 0; i < N; i++)
	{
		//输入:
		scanf("%d", &arr[i]);

		//输入了两个数后就开始比较
		if (i >= 1)
		// i=1 说明输入了 arr[0] 和 arr[1] ,已经输入了两个数
		{
			if (arr[i] < arr[i - 1])
				//因为进来后 i 以及是下标1了,还要判断下标0,arr[0]
				//一个数 小于 前一个数
			{
				flag1 = 1;
				//满足升序条件
			}
			else if (arr[i] > arr[i + 1])
				//一个数 大于 后一个数
			{
				flag2 = 1;
				//满足降序条件
			}
		}

	}

	//判断完 升序 或 降序 后,看 flag1 和 flag2 的情况来判断是否有序:
	if (flag1 + flag2 == 2)//说明既有 大于 又有 小于
	{
		printf("unsorted\n");
	}
	else
		// ==1 的话,说明有序;==0 的话,说明都相等,也是有序
	{
		printf("sorted\n");
	}

	return 0;
}

实现图片:

                    

思路二:最终代码和实现效果

最终代码:

#include <stdio.h>
int main()
{
	//输入数组长度N:
	int N = 0; //数组长度
	//输入:
	scanf("%d", &N);

	//输入N个整数,用一个数组进行存储:
	int arr[50] = { 0 };

	//判断是否有序:升序 或 降序
	//有序的情况下,都是 大于号 或 都是 小于号

	int flag1 = 0; //表示升序,满足升序关系 --> flag1=1
	int flag2 = 0; //表示降序,满足降序关系 --> flag2=1
	//判断过程中,
	//如果 flag1一直为1,flag2一直为0,说明是升序,
	//如果 flag2一直为1,flag1一直为0,说明是降序
	//等于的话,flag1和flag2都是0

	int i = 0;
	for (i = 0; i < N; i++)
	{
		//输入:
		scanf("%d", &arr[i]);

		//输入了两个数后就开始比较
		if (i >= 1)
		// i=1 说明输入了 arr[0] 和 arr[1] ,已经输入了两个数
		{
			if (arr[i] < arr[i - 1])
				//因为进来后 i 以及是下标1了,还要判断下标0,arr[0]
				//一个数 小于 前一个数
			{
				flag1 = 1;
				//满足升序条件
			}
			else if (arr[i] > arr[i + 1])
				//一个数 大于 后一个数
			{
				flag2 = 1;
				//满足降序条件
			}
		}

	}

	//判断完 升序 或 降序 后,看 flag1 和 flag2 的情况来判断是否有序:
	if (flag1 + flag2 == 2)//说明既有 大于 又有 小于
	{
		printf("unsorted\n");
	}
	else
		// ==1 的话,说明有序;==0 的话,说明都相等,也是有序
	{
		printf("sorted\n");
	}

	return 0;
}

实现效果:

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

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

相关文章

面试滑铁卢,被HR坑惨了......

阎王易见&#xff0c;小鬼难缠。我一直相信这个世界上好人居多&#xff0c;但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。 在这里&#xff0c;我只想告诫大家&#xff0c;offer一定要拿到自己的手里才是真的&#xff0c;口头offer都是不牢靠的&#xff0…

C++学习之详解命名空间

1.理解命名空间 namespace命名空间正如翻译的那样给命名划分空间&#xff0c;每个函数名或变量等都有自己的使用范围&#xff0c;避免的使用函数名冲突的问题&#xff1b; 打个比方&#xff0c;一个班如果有两人叫做张三&#xff0c;那么其中如何区分这两个人那么就得给他们起…

UI自动化测试 | Jenkins配置优化

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

如何判断一家公司值不值得去?

通常职场新手都有这样的困惑&#xff1a;收到某某公司的面试&#xff08;或者offer&#xff09;&#xff0c;我该不该去呢&#xff1f; 为什么有这样的困惑&#xff1f; 大部分原因是因为海投简历导致的。刚出来工作时&#xff0c;我也海投过简历&#xff0c;不管公司好不好&a…

Java使用jna调用c开发的动态库dll文件

文章目录 前言1.c开发动态库dll1.1 新建项目dllDemo1.2 选择C library 在选择shared1.3 项目的目录结构1.4 定义动态库函数1.5 导出动态库 2.java中使用jna调用dll2.1 需要引入jna的依赖2.2 加载动态库dll2.3 测试程序2.3.1 测试代码&#xff1a;2.3.2 测试结果输出 前言 在日…

maven的依赖范围scope使用

测试依赖的范围 #1、依赖范围 标签的位置&#xff1a;dependencies/dependency/scope 标签的可选值&#xff1a;compile/test/provided/system/runtime/import #①compile 和 test 对比 main目录&#xff08;空间&#xff09;test目录&#xff08;空间&#xff09;开发过程…

linux重新安装Yapi

需要保留原来Yapi对应的数据&#xff0c;这样就不需要安装mongo。 1. 安装Yapi npm install -g yapi-cli —registry https://registry.npm.taobao.org yapi server2.平台部署配置 安装成功后&#xff0c;默认端口是9000&#xff0c;开发服务器9000端口&#xff0c;需要服务…

崩盘预警币圈项目:Fintoch(分投趣)为何模式能做千亿资金?

崩盘预警币圈项目&#xff1a;Fintoch&#xff08;分投趣&#xff09;为何模式能做千亿资金&#xff1f; 大家好&#xff0c;小编是微三云的胡佳东&#xff0c;一家软件开发公司的负责人 Fintoch&#xff08;分投趣&#xff09;为何模式崩盘前能够吸引如此巨额资金&#xff1f…

供应链 | 基于图神经网络和深度强化学习的柔性车间调度方法

编者按 本次解读的文章发表于IEEE TRANSACTIONS ON INDUSTRIAL INFORMATICS&#xff0c;原文摘要总结如下&#xff1a;本文考虑了众所周知的灵活作业车间调度问题&#xff0c;并通过提出一种新颖的深度强化学习&#xff08;DRL&#xff09;方法来端到端地学习高质量的优先级调度…

SpringBoot实现过滤器Filter的三种方式

# 实现Filter接口方式① 使用Filter接口方式② 使用Component注解方式③ Java Config 配置类 # 实现Filter接口 过滤器 Filter 由 Servlet 提供&#xff0c;基于函数回调实现链式对网络请求与响应的拦截与修改。由于基于 Servlet &#xff0c;其可以对web服务器管理的几乎所有…

重复消费和堆积

接受消息会重复这一现状&#xff0c;然后通过一些方法来消除重复消息对业务的影响 利用幂等性解决重复消息问题 幂等&#xff08;其任意多次执行所产生的影响均与一次执行的影响相同。&#xff09; 一个幂等的方法&#xff0c;使用同样的参数&#xff0c;对它进行多次调用和一…

flutter七牛云上传sdk插件qiniu_flutter_sdk使用

flutter七牛云上传sdk插件qiniu_flutter_sdk使用 最近在拆分代码&#xff0c;将上传组件设置成插件&#xff0c;下面记录下实现过程。 一、创建flutter_plugin上传插件 这里Android Studio使用创建plugin 填写一下信息 Project nameProject locationDescriptionProject typ…

单片机入门所需的基础数电和模电知识

要学习单片机并入门相关领域&#xff0c;推荐掌握以下数电和模电的基础知识&#xff1a; 数电知识&#xff1a; 布尔代数和逻辑门&#xff1a;了解布尔代数的基本概念和逻辑门的工作原理&#xff0c;包括与门、或门、非门、与非门、或非门、异或门等。 时序逻辑和时钟信号&a…

AIOps介绍

AIOps介绍 AIOps是指人工智能运维&#xff08;Artificial Intelligence for IT Operations&#xff09;的缩写。它是将人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术应用于IT运维领域的一种方法。 传统的IT运维通常需要人工监测和管理大量的系…

脑机接口科普0022——黑门02:伦理道德问题

本文禁止转载&#xff01;&#xff01;&#xff01;&#xff01; 脑机接口这个技术&#xff0c;是属于黑科技技术中的一种。 现在已经有很多专家&#xff0c;以及机构&#xff0c;提出脑机接口的存在的一些问题。法律是一块的问题&#xff0c;伦理道德是另一块的问题。 虽然…

苹果iPhone14卡死怎么办?解决办法分享!

正常使用的iPhone14虽然很少会出现卡死的情况&#xff0c;但iPhone就是一台微型电脑&#xff0c;像电脑一样“死机”也不是没可能。 有用户称在使用iPhone14时出现突然出现弹出的提示框无法点击取消&#xff0c;锁屏也解决不了死机的问题。同时又因为屏幕其他区域不能操作&…

MySQL免安装配置教程(win10)

一、下载安装包 1.1、下载zip包 打开官网地址下载zip安装包&#xff0c;这里下载的版本是5.7&#xff0c;可自行选择。 对应下载网址&#xff1a;https://downloads.mysql.com/archives/community/ 根据自己电脑进行选择对应安装包 若需要下载msi安装包&#xff08;图形化界…

Mysql漏洞处理之升级版本到5.7.42过程指导手册

一、背景 某次安全漏扫&#xff0c;发现MySQL大量漏洞&#xff0c;基于Mysql之用于内网&#xff0c;且版本确实有点旧&#xff0c;考虑升级&#xff0c;综合漏洞分析&#xff0c;只能升级到最新版5.7.42和8.0.33&#xff0c;现场环境&#xff1a;Mysql 5.7.28、5.7.20和mysql&…

高等职业学院校园IP网络广播应用-河北资源环境职业技术学院校园IP广播

职业院校大学校园IP网络广播在河北资源环境职业技术学院产教融合基地的应用 北京海特伟业科技任洪卓发布于2023年6月20日 一、高等职业院校校园IP网络广播系统-广播中心 河北资源环境职业技术学院产教融合基地-高等职业院校校园IP网络广播系统是基于TCP/IP协议校园局域网构建…

通过GPIO子系统编写LED驱动,应用程序控制LED灯亮灭

1、在内核设备树中添加设备信息&#xff1a; LED1的设备树编写需要参考内核的帮助文档&#xff1a; linux-5.10.61/Documentation/devicetree/bindings/gpio 在根节点内部添加led灯设备树节点 :~/linux-5.10.61/arch/arm/boot/dts $ vi stm32mp157a-fsmp1a.dts myled.c #in…