c语言判断输入的数组是升序还是降序
从屏幕输入一个数组然后判断是升序还是降序,升序就输出return1,降序输出-1,乱序输出0,递归要去,代码越简单越好。...
从屏幕输入一个数组 然后判断是升序还是降序,升序就输出return 1,降序输出-1,乱序输出0,递归要去,代码越简单越好。
展开
展开全部
int arr[10];
int iFlag1 = 0,iFlag2 = 0;
for(int i=0;i<10-1;i++)
{
if(arr[i]<arr[i+1])
iFlag1++;
else if(arr[i]>arr[i+1])
iFlag2++;
else//相等的情况
{
iFlag1++;
iFlag2++;
}
}
if(iFlag1==9) return 1;
else if(iFlag2==9) return -1;
else if(iFlag1==9&&iFlag2==9) return 2;//表示数组所有元素相同
else return 0;
int iFlag1 = 0,iFlag2 = 0;
for(int i=0;i<10-1;i++)
{
if(arr[i]<arr[i+1])
iFlag1++;
else if(arr[i]>arr[i+1])
iFlag2++;
else//相等的情况
{
iFlag1++;
iFlag2++;
}
}
if(iFlag1==9) return 1;
else if(iFlag2==9) return -1;
else if(iFlag1==9&&iFlag2==9) return 2;//表示数组所有元素相同
else return 0;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是要递归还是不要递归?。。
//非递归版
#include <stdio.h>
int Test(int a[],int size)//a数组从0开始存储,size是元素个数
{
if(size==1) return 0;//只有一个数的话,无法判断
int i;
for(i=1;i<size;i++)
if((a[i]-a[i-1])*(a[1]-a[0])<=0)//判断是否乱序(我这里若两数相等也判为乱序了)
return 0;
return a[1]-a[0]<0?-1:1;
}
int main()
{
int a[1000]={0},n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("%d\n",Test(a,n));
return 0;
}
这是直接在回答框里敲出来的。。可能有些小问题,编译不过去。不过算法是很明确的。你可以参考一下,最好自己打一遍,这样才会有提高。加油啦!
如果看不太懂可以追问我,这两天随时在线。
//非递归版
#include <stdio.h>
int Test(int a[],int size)//a数组从0开始存储,size是元素个数
{
if(size==1) return 0;//只有一个数的话,无法判断
int i;
for(i=1;i<size;i++)
if((a[i]-a[i-1])*(a[1]-a[0])<=0)//判断是否乱序(我这里若两数相等也判为乱序了)
return 0;
return a[1]-a[0]<0?-1:1;
}
int main()
{
int a[1000]={0},n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("%d\n",Test(a,n));
return 0;
}
这是直接在回答框里敲出来的。。可能有些小问题,编译不过去。不过算法是很明确的。你可以参考一下,最好自己打一遍,这样才会有提高。加油啦!
如果看不太懂可以追问我,这两天随时在线。
更多追问追答
追问
递归啊
追答
#include
inline int Cmp(const int &a,const int &b)//比较两数大小,a>b返回-1,a==b返回0,a<b返回1
{
return b-a<0 ? -1 : (a==b?0:1) ;
}
int Test(int a[],int size)//a数组从0开始存储,size是元素个数
{
if(size==1) return 0;//只有一个数的话,无法判断
if(size==2)
return Cmp(a[0],a[1]) ;//只剩两个数的话,直接比较
else
return (Test(a+1,size-1)==Cmp(a[0],a[1])) * Cmp(a[0],a[1]);
}
int main()
{
int a[1000]={0},n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("%d\n",Test(a,n));
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void test_sort()
{
int array[5] = {1,3,10,7,9};
int len = sizeof(array)/sizeof(int);
int flag = 0,tmp = 0,i = 0;
if(array[0]>array[1])
{
flag = 1;
}
tmp = flag;
for(i = 1; i<len; ++i)
{
if(flag == 0)
{
if(array[i]<array[i+1])
{
continue;
}
else
{
flag = 1;
break;
}
}
if(flag == 1)
{
if(array[i]>array[i+1])
{
continue;
}
else
{
flag = 0;
break;
}
}
}
if(flag != tmp)
{
printf("unsorted array\n");
}
else
{
printf("sorted array\n");
}
}
{
int array[5] = {1,3,10,7,9};
int len = sizeof(array)/sizeof(int);
int flag = 0,tmp = 0,i = 0;
if(array[0]>array[1])
{
flag = 1;
}
tmp = flag;
for(i = 1; i<len; ++i)
{
if(flag == 0)
{
if(array[i]<array[i+1])
{
continue;
}
else
{
flag = 1;
break;
}
}
if(flag == 1)
{
if(array[i]>array[i+1])
{
continue;
}
else
{
flag = 0;
break;
}
}
}
if(flag != tmp)
{
printf("unsorted array\n");
}
else
{
printf("sorted array\n");
}
}
追问
不是这个 这个是百度的。而且这貌似只是判断有序和无序吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询