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

这篇具有很好参考价值的文章主要介绍了C语言:实现有序序列判断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

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

               

输入描述:

第一行输入一个整数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;
}

实现图片:

C语言:实现有序序列判断,没事做道题:C语言,c语言,c#,c++

                 


                 

第二步:

判断是否有序升序 降序

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

             

(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;
}

实现图片:

C语言:实现有序序列判断,没事做道题:C语言,c语言,c#,c++

                 


                 

第三步:

判断完 升序 或 降序 后看 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;
}

实现图片:

C语言:实现有序序列判断,没事做道题:C语言,c语言,c#,c++

                    

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

最终代码:

#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;
}

实现效果:

C语言:实现有序序列判断,没事做道题:C语言,c语言,c#,c++

                    

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

                       

思路二:边输入边判断

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

总体思路:

思路一的基础上

             

思路一第一步的(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;
}

实现图片:

C语言:实现有序序列判断,没事做道题:C语言,c语言,c#,c++

                    

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

最终代码:

#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;
}

实现效果:

C语言:实现有序序列判断,没事做道题:C语言,c语言,c#,c++文章来源地址https://www.toymoban.com/news/detail-539933.html

到了这里,关于C语言:实现有序序列判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言:写一个函数,实现一个整型有序数组的二分查找

    写一个 函数 ,实现一个 整型有序数组 的 二分查找 ,找出 要找的数字 在 数组中对应的下标 。                       =========================================================================                         (一)自定义函数部分:                  (1). 参数: int arr[]

    2024年02月08日
    浏览(37)
  • C语言实现两个集合合并及有序集合的并集(顺序存储、链式存储)

    1、两个集合并集问题 获取LA、LB的表长m、n。 从LB中第一个数据元素开始,循环n次执行:从LB中查找第i(1≤i≤n)个数据元素赋值给e;然后在LA中查找元素e,如果不存在,则将e插入在表LA的最后。 2、算法描述 3、顺序存储实现 4、链式存储实现

    2024年02月07日
    浏览(41)
  • C语言中线性表的合并&有序表的合并以及案例分析和实现

    **线性列表合并:**   案例分析: 要合并两个线性列表,我们考虑以下情况:   1. 两个列表都是空的:在这种情况下,合并的列表也将是空的。 2. 一个列表是空的:如果其中一个列表是空的,则合并的列表将是非空列表本身。 3. 两个列表都是非空的:在这种情况下,我们同

    2024年02月01日
    浏览(50)
  • python经典有序序列的list列表推导式

    生成一个数据列表 使用列表推导式生成该数据列表 分析: 1、使用一行代码的列表推导式就完成了该列表的生成 2、[i for i in range(20)],第一个i元素代表向列表list_2中添加的元素 3、[i for i in range(20)],第二个i元素代表for循环遍历的i元素 使用列表推导式生成只有偶数的数据列

    2024年02月02日
    浏览(46)
  • 第21关:基于链表的两个递增有序序列的合并

    任务描述 本关任务:给定两个递增的整数序列A和B,利用链表表示序列A和B,将A和B合并为一个递增的有序序列C,序列C不允许有重复的数据。要求空间复杂度为O(1)。 编程要求 输入 多组数据,每组数据有三行,第一行为序列A和B的长度n和m,第二行为序列A的n个元素,第三行为

    2024年02月05日
    浏览(46)
  • 初阶算法(3):二分法的讲解与实现(C语言),以及二分不止光在有序数组中的应用

     第一章 初阶算法(1):通过简单的排序算法来认识时间复杂度  第二章 初阶算法(2):进行详细地介绍插入排序的细节和时间复杂度  第三章 初阶算法(3):二分法的讲解与实现,以及二分不止光在有序数组中的应用 目录 系列文章目录 前言 一、二分法的讲解与实现

    2024年02月14日
    浏览(30)
  • 【C语言】C语言实现一个函数 判断是否是素数

           欢迎来到南方有乔木的博客!!! 博主主页: 点击点击!戳一戳!! 博主QQ: 1636758318 博主简介: 一名在校大学生,正在努力学习Java语言编程。 穷且意坚,不坠青云之志 ,希望能在编程的世界里找到属于自己的光。 跪谢帅气or美丽的朋友们能够帮我点赞! 请对文中

    2024年02月04日
    浏览(74)
  • 【离散数学】Python语言实现关系性质的判断

    实验内容: 用矩阵表示二元关系;通过矩阵的特征判断二元关系所具有的性质;运用二维数组实现矩阵的输入,然后判断自反性,反自反性,对称性,反对称性,传递性 先复习一下相关的基础知识:  1.    判断自反性:矩阵主对角线元素全为1 2.    判断反自反性:矩阵主

    2024年02月04日
    浏览(33)
  • VHDL语言序列信号发生器的实现

    题目:实现图示电路(产生1101001序列码) 详细描述:用VHDL设计194,再用VHDL层次结构设计方法设计程序实现图示电路并仿真,底层器件是194,要求层次化设计,分模块调试   二、底层器件  194 代码: Flow Summary         2.仿真波形及解释   此波形图是验证194的异步清零和并

    2024年02月11日
    浏览(22)
  • 判断字符串是否为回文的三种常用编程语言实现

    引言:回文是一种具有镜像对称性的字符串,即它从左到右读和从右到左读是相同的。回文可以在文学、语言学、数学、计算机科学等领域中得到广泛应用。在计算机科学中,判断一个字符串是否为回文是一项基本的算法挑战。在本文中,我们将介绍三种常见的编程语言中用

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包