打算参加CSP201809的认证,开始刷过去13次认证的题目,太久没编程了,基础知识也忘了好多,边学习边努力吧。这道题打算先用大学学的C语言来解决,因为有博主建议认证C++比C要好操作,决定C解决基础题目,同时学习C++。有不对之处,请大家指正。
#include<stdio.h>
#include<malloc.h>
int main(void){
int n;
int i,j,m;
i=0;
j=0;
m=0;
scanf("%d",&n);//输入n
int *data;
data=(int*) malloc(sizeof(int)*(n+1));/*为指针数组申请空间,申请了n+1个int大小的空间,而不是n个,data[n]为了存储差值进行比较*/
for(i=0;i<n;i++){//用for循环输入n个数据的值
scanf("%d",data+i);
}
data[n]=data[1]-data[0];//假定data[0]和data[1]的差值是最小的,把这个差值作为基准
if(data[n]<0)
data[n]=data[n]*-1;//如果差值为负的,要变为正的
for(i=0;i<n;i++){/*两层循环来覆盖所有的差值;第0个值要与1到n-1的所有值求差,第1个值要与2到n-1的所有值求差,以此类推*/
for(j=i+1;j<n;j++){
m=data[i]-data[j];
if(m<0)
m=m*-1;
if(m<data[n])
data[n]=m;
}
}
printf("%d",data[n]);
return 0;
#include<malloc.h>
int main(void){
int n;
int i,j,m;
i=0;
j=0;
m=0;
scanf("%d",&n);//输入n
int *data;
data=(int*) malloc(sizeof(int)*(n+1));/*为指针数组申请空间,申请了n+1个int大小的空间,而不是n个,data[n]为了存储差值进行比较*/
for(i=0;i<n;i++){//用for循环输入n个数据的值
scanf("%d",data+i);
}
data[n]=data[1]-data[0];//假定data[0]和data[1]的差值是最小的,把这个差值作为基准
if(data[n]<0)
data[n]=data[n]*-1;//如果差值为负的,要变为正的
for(i=0;i<n;i++){/*两层循环来覆盖所有的差值;第0个值要与1到n-1的所有值求差,第1个值要与2到n-1的所有值求差,以此类推*/
for(j=i+1;j<n;j++){
m=data[i]-data[j];
if(m<0)
m=m*-1;
if(m<data[n])
data[n]=m;
}
}
printf("%d",data[n]);
return 0;
}