1./描述
//输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
//
//数据范围:
//3≤n≤50 3≤n≤50 序列中的值都满足 1≤val≤100 1≤val≤100
//输入描述:
//第一行输入一个整数N(3≤N≤50)。
//第二行输入N个整数,用空格分隔N个整数。
//输出描述:
//输出为一行,如果序列有序输出sorted,否则输出unsorted。
2.方法一
我们先输入n,scanf("%d",&n),然后输入数字,如果为升序,那么arr[0]>arr[1],后面再进行判断.如果为降序,那么arr[0]<arr[1],后面再进行判断。注意我们可以用函数,代码可以比较少。
cs
#include<stdio.h>
int main()
{
int n = 0;
int flag = 0;
scanf_s("%d", &n);//输入n
int arr[50] = { 0 };//将输入的数字存储起来
for (int i = 0; i < n; i++)
{
scanf_s("%d", &arr[i]);//输入数字
}
if (arr[0] >= arr[1])//判断一位是否大于或者等于,如果大于则后面都大于或者等于
{
for (int j = 0; j < n; j++)
{
for (int v = 0; v < n-1-j; v++)
{
if (arr[j] < arr[j+1+v])
{
flag = flag + 1;
goto end;
}
}
}
}
else
{
for (int j = 0; j < n; j++)
{
for (int v = 0; v < n-1-j; v++)
{
if (arr[j] > arr[j+1+v])
{
flag = flag+1;
goto end;
}
}
}
}
end:
if (flag == 0)
printf("sorted");
else
{
printf("unsorted");
}
return 0;
}
3.方法二
当为升序时,flag1=1,当为降序,flag2=1,当为相等,flag1=flag2=0,如果flag1+flag2==1,为sorted,否则为unsorted.
cs
//方法二:
#include<stdio.h>
int main()
{
int n = 0;
int flag1= 0;//升序
int flag2 = 0;//降序
int flag3 = 0;
scanf_s("%d", &n);//输入n
int arr[50] = { 0 };//将输入的数字存储起来
for (int i = 0; i < n; i++)
{
scanf_s("%d", &arr[i]);//输入数字
}
//升序
for (int i = 0; i < n-1; i++)
{
if (arr[i] >arr[i + 1])
{
flag1 = 1;
}
else if(arr[i]==arr[i+1])
{
flag1 = 0;
flag2 = 0;
}
else
{
flag2 = 1;
}
}
if (flag1+flag2 <= 1)
printf("sorted\n");
else
printf("unsorted\n");
}