您的位置:首页 > 编程语言

【做题记录】[牛客网]网易2018校招内推编程题集合:第二题-等差数列

2018-03-27 04:54 381 查看
网易2018校招内推编程题集合
[编程题] 等差数列
题目大概是:输入一个数列,可以任意交换位置,判断是否为等差数列。
做题思路:输入数字,冒泡排序(小→大),逐个计算差值,差值不同则flag=0,循环终止,输出。
注意:数组的边界!循环的时候最容易出错了。(我脑子问题)
语言:C语言(因为刚结束CCF考试......对C熟悉点)
#include<stdio.h>
int main(int argv,char *argc[])
{
    int n;
    int a[50];
    scanf("%d",&n);
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int temp,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
            temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;    
            }
        }
    }
    int d=a[1]-a[0];
    int flag=1;
    for(i=1;i<n-1;i++)    #注意点1:i<n-1,则i最大取到n-2,而循环中出现的索引i+1,说明循环中最大取到n-1,而数组索引是0~n-1,正好取完整。
    {
        if(d!=(a[i+1]-a[i]))
        {
             flag=0;
             break;        #注意点2:有没有break其实无所谓,只不过省一点点点运行时间吧...
        }   
    }    
    if(flag==1)
        printf("Possible");
    else if(flag==0)
        printf("Impossible");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言