OJ试题等差数列的一些学习意义

本文很适合大一学习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:

我在第一次写此程序时,出现了一些小事故,就是数组输不进去,调试出现了错误提醒,并弹出了内存的页面,后来发现,是输入时忘记写&取地址符号,其实挺容易错的,大家注意鸭!

谢谢各位了,多多包容哈!


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值