等差数列用c语言表达,如何用c语言构造一个等差数列

#include <stdio.h>
#include <math.h>
#define MAXNUMBER 100
#define MAXLENGTH 10
int is_equal_difference(float * p);
void equal_difference_right(float * p);
void equal_div_right(float * p);
void main()
{
int i, j;
int num;
float arry[MAXNUMBER][MAXLENGTH]; //等差或等比未必就是整数!!
printf("请输入作业的数量:");
scanf("%d", &num);
for(i = 1; i <= num; i++)
{
printf("请输入第 %d 题的作业答案:", i);
for(j = 0; j < MAXLENGTH; j++)
scanf("%f", &arry[i][j]);
}
printf("\n");
for(i = 1; i <= num; i++)
{
printf("第 %d 题的结果如下:\n", i);
if(is_equal_difference(&arry[i][0]))
equal_difference_right(&arry[i][0]);//arry[i][]的首地址
else
equal_div_right(&arry[i][0]);
printf("\n");
}
}
int is_equal_difference(float * p)
{
//判断为等差数列还是等比数列,如果是等差则返回1,否则返回0
int temp1, temp2;
float * t;
t = p;
temp1 = *(++t) - *p;
temp2 = *(++t) - *(++p);
if(temp1==temp2)
return 1;
else
return 0;
}
void equal_difference_right(float * p)
{
//等差数列
float temp1, temp2;
int i;
int isAllRight = 1;//用来标志是否全对
float * t;
t = p;
temp1 = *(++t) - *p;
for(i = 2; i < MAXLENGTH; i++)//这里i是从2开始,即第三个元素
{
temp2 = (*(++t) - *p) / i;
if(temp2 != temp1)
{
printf("%d %g\n", i+1, *p + (temp1 * i));
isAllRight = 0;
}
}
if(isAllRight)
printf("Very Good!\n");
}
void equal_div_right(float * p)
{
//等比数列
float temp1, temp2;
int i;
int isAllRight = 1;//用来标志是否全对
float * t;
t = p;
temp1 = *(++t) / *p;
for(i = 2; i < MAXLENGTH; i++)
{
temp2 = *(++t) / *p;
if(pow(temp1, i) != temp2)
{
printf("%d %g\n", i+1, *p * pow(temp1, i));
isAllRight = 0;
}
}
if(isAllRight)
printf("Very Good!\n");
}
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试
