xdoj 40 等差数列

标题  等差数列

类别  数组

时间限制	 2S

内存限制	 1000Kb

问题描述	 请写一个程序,判断给定整数序列能否构成一个等差数列。

输入说明	
 输入数据由两行构成,第一行只有一个整数n(n<100),表示序列长度(该序列中整数的个数);
第二行为n个整数,每个整数的取值区间都为[-32768~32767],整数之间以空格间隔。

输出说明	
 对输入数据进行判断,不能构成等差数列输出“no”,能构成等差数列输出表示数列公差(相邻两项的差)的绝对值的一个整数。

输入样例	
样例1输入
6
23 15 4 18 35 11
样例2输入
5
2 6 8 4 10
输出样例	
样例1输出
no
样例2输出
2
#include <stdio.h>
#include <math.h> 

//冒泡排序 
void bub (int n,int num[]) {
	
	int i,j;//控制for 
	int k;//换位 
	
	for (i=1;i<n;i++) {
		for (j=0;j<(n-i);j++) {
			if (num[j]>num[j+1]) {
				k=num[j];
				num[j]=num[j+1];
				num[j+1]=k;
			   }
		    }
	    }
    }


int main() {
	
	int n;
	int num[100];
	int i;
	
	scanf("%d",&n);
	
	for (i=0;i<n;i++) {
		scanf("%d",&num[i]);
	}
	
//等差数列要求:一个数列从第2项起,每一项与它的前一项的差都等于同一个常数
//因此给出的数至少得有三个才能构成一个等差数列 
//为了方便判断等差数列,先把无序的一串数,从小到大排列 
//break的使用是为了避免重复的输出 
	if (n<3) {
		printf("no");
	} else {
		bub (n,num); 
	    for (i=1;i<(n-1);i++) {
		    if ((num[i-1]-num[i])!=(num[i]-num[i+1])) {
			printf("no");
			break;
		    } else {
			printf("%d",abs(num[i-1]-num[i]));
			break;
		    }
	    }
    }
	
	return 0;
} 

使用函数是为了不让一大堆代码挤到一起,看着麻烦

喜欢的话可以赏个赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值