Advertisement

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

阅读量:
a47f9f20621efaebdd061183ae600e89.png

#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");

}

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

全部评论 (0)

还没有任何评论哟~