C语言习题

简介: C语言习题

1.有序序列的判断

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

#include <stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int i=0;
    int arr[n];
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int f1=0;
    int f2=0;
    for(i=0;i<n-1;i++)
    {
        if(arr[i]>=arr[i+1])
        {
            f1=1;
        }
        else if(arr[i]<arr[i+1])
        {
            f2=1;
        }
    }
    if(f1+f2==1)
    {
        printf("sorted");
    }
    if(f1+f2==2)
    {
        printf("unsorted");
    }
    return 0;
}

(1)判断一个数组是否有序,可以是升序,也可以是降序,比较复杂,这个方法巧妙地引入了变量f1

和f2,初始化为0;

(2)升序时,使用for循环两两比较,前者大于后者,则f1=1,前者小于后者,则f2=1;

如果升序,循环结束的时候,f1=0,f2=1,两者的和是1;

如果降序,循环结束的时候,f1=1,f2=0,两者的和是1;

这个时候,均是有序的序列;

否则,就会造成f1+f2和是2,就不是有序序列;

(3)如果序列里面的数字全部相同,就应该也是有序的,所以我们只需要在下面的这个判断条件

里面加相等的条件,加在if或者else if都是可以的,我选择加在if语句上面;

       if(arr[i]>=arr[i+1])

       {

           f1=1;

       }

       else if(arr[i]<arr[i+1])

       {

           f2=1;

       }

相关文章
TU^
|
5月前
|
存储 C语言
C语言习题~day35
C语言习题~day35
TU^
30 1
|
3月前
|
机器学习/深度学习 C语言
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
要保持最小的步数,每一次汉诺塔问题(无论是最初还是递归过程中的),如果此时初始柱盘子数为偶数,我们第一步是把最上面的盘子移动到中转柱,如果为奇数,我们第一步则是将其移动到目标柱。
81 0
【C语言篇】递归详细介绍(基础概念习题及汉诺塔等进阶问题)
TU^
|
5月前
|
编译器 C语言
C语言习题~day31
C语言习题~day31
TU^
24 2
TU^
|
5月前
|
算法 程序员 C语言
C语言习题~day36
C语言习题~day36
TU^
40 1
TU^
|
5月前
|
存储 C语言
C语言习题~day34
C语言习题~day34
TU^
34 1
TU^
|
5月前
|
算法 C语言
C语言习题~day33
C语言习题~day33
TU^
29 1
TU^
|
5月前
|
C语言
C语言习题~day32
C语言习题~day32
TU^
18 1
TU^
|
5月前
|
C语言
C语言习题~day30
C语言习题~day30
TU^
24 1
TU^
|
5月前
|
自然语言处理 C语言 C++
C语言习题~day29
C语言习题~day29
TU^
23 1
TU^
|
5月前
|
存储 C语言
C语言习题~day28
C语言习题~day28
TU^
20 1