本文很适合大一学习c语言下半学期学习阶段使用;
首先,附上原题:
标题
等差数列
类别
数组
时间限制
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<stdlib.h>
#include<math.h>
int main(){
int *p;
int m,i,j,tank;
int jud=0;
scanf("%d",&m);
getchar();
p=(int*)malloc(sizeof(int)*m);
for(i=0;i<m;i++){
scanf("%d",&p[i]);
}
for(i=0;i<m-1;i++)
for(j=0;j<m-1-i;j++)
if(p[j+1]>p[j]){
tank=p[j];
p[j]=p[j+1];
p[j+1]=tank;
}
for(i=0;i<m-2;i++)
if(p[i+2]-p[i+1]!=p[i+1]-p[i])
jud++;
if(jud==0)
printf("%d",abs(p[i+1]-p[i]));
else
printf("no");
free(p);
return 0;
}
#inlcude<敲黑板.h>哈哈哈
知识点1:动态数组,利用malloc实现内存的动态分配。
使用malloc,需加上头文件#include<stdlib.h>;
其使用格式是
指针本体=(数据类型*)malloc(sizeof(数据类型)*数组长度)
我觉得这个绝对是适合初学者看懂的“简谱”;
这样的话,就可以根据数组长度,灵活的分配内存啦!
知识点2:free;
umm,简单来讲,就是使用对哪个指针使用了malloc,就一定要在最后用上free(指针本体);
对,就是这样!
知识点3:
我在第一次写此程序时,出现了一些小事故,就是数组输不进去,调试出现了错误提醒,并弹出了内存的页面,后来发现,是输入时忘记写&取地址符号,其实挺容易错的,大家注意鸭!
谢谢各位了,多多包容哈!