标题
等差数列
类别
数组
时间限制
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>
int main()
{
int n;
int x[100];
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
scanf_s("%d", &x[i]);
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (x[i] > x[j])
{
int t;
t = x[i];
x[i] = x[j];
x[j] = t;
}
}
}//从小到大排好序
//for (int i = 0; i < n; i++)
// printf("%d ", x[i]);
int c,d;
int flag = 1;
for (int i = 0; i < n - 1; i++)
{
c = x[1] - x[0];//这个初值设定需要特别注意
int j = i + 1;
d = c;
c = x[j] - x[i];
if (d != c)//判断每两个相邻数字之间的差值是否相等
{
flag = 0;
break;
}
}
if (flag == 1) printf("%d", c);
else if (flag == 0) printf("no");
return 0;
}