解题思路:
1.输入数据;
2.若数据只有1个或2个则一定是等差数列;
3.排序,求出d=a[1]-a[0],然后判断整个数列是否前后两项之差都为d,若都为d则是等差数列,否则不是。
参考代码:
#include <bits/stdc++.h> using namespace std; int main() { int a[105]; int n,m,i; cin>>n; while(n--) { cin>>m; for(i=0;i<m;i++) cin>>a[i]; if(m<=2) //数组只有1个或2个的时候都是等差数列,由于用了标志位flag,所以也可以不用判断 { cout<<"yes"<<endl; continue; } sort(a,a+m); int flag=1; //定义标志位,若为1,则是等差数列 int d=a[1]-a[0]; //求出等差数列的公差 for(i=2;i<m;i++) { if(a[i]-a[i-1]!=d) //前后两项之差不等于d,则不是等差数列,flag=0 { flag=0; break; } } if(flag) cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0; }
0.0分
9 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:626 |
A+B for Input-Output Practice (VII) (C语言代码)浏览:1375 |
分糖果 (C++代码)浏览:1438 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:517 |
C语言训练-大、小写问题 (C语言代码)浏览:611 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:640 |
简单的a+b (C语言代码)浏览:944 |
数组输出 (C语言代码)浏览:700 |
理财计划 (C语言代码)浏览:465 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:672 |