当前位置:首页 » 编程语言 » 等差数列C语言编程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

等差数列C语言编程

发布时间: 2022-05-21 03:36:30

1. 谁能给我一个用c语言写的等差数列函数

int fun(int a){ int b[9],i,j,k=0; //10个数字之间的差共有9个所以b数组为9 j=a[1]-a[0]; //现确定下等差 for(i=0;i<9;i++) b[i]=a[i+1]-a[i]; //将a数组中的前后两项的数的差值存入b数组中 for(i=0;i<9;i++){ if(j==b[i]) //判断b数组中的数是否于开始确定的差值相等 k++; } if(k==9) //判断是否所有的差值都相等 return 1;elsereturn 0;}main(){ int a[10],i,j; for(i=0;i<10;i++) scanf("%d",&a[i]); //输入10个数字 j=fun(a); //调用函数fun if(j==1) printf(" yes\n"); else printf(" no\n");}你没说要判断的数列是多长我自己定义了10个,你可以自己改。

2. C语言求等差数列

#include<stdio.h>
main()
{
int a,b,c,d,i,sum=0;
for(a=1;a<=26;a++)
for(d=1;d<=26;d++)
{ /*等差数列前四项之和*/
b = a + a + d + a + 2 * d + a + 3 * d;
/*b = 4 * a + 6 * d */
if(b!=26)
continue;
else
{ /*等差数列前四项之积*/
c = a * (a + d) * (a + 2 * d) * (a + 3 * d);
if(c!=880)
continue;
else
for(i=0;i<6;i++)
{
printf("%d,",a+i*d);
sum=sum+(a+i*d);
}
}
}
printf("\n数列的前6项的和:%d\n",sum);
}

3. 求C语言编写等差数列求和的代码

等差数列求和求和有两种方法,第一种是数值循环相加,第二种是利用公式:
Sn=n*a+n*(n-1)*d/2,其中a为数列首项

代码如下:


#include <stdio.h>


int main(void)


{


int a,m,d,sum;


int s=0,n=1;


do {


printf("清输入等差数列首项值a,项数m,数列差值d ");


scanf("%d,%d,%d",&a,&m,&d);


}while(a<1||m<1||d<1);

while(n<=m)


{
s+=a+(n-1)*d;


n++;


}

sum=m*a+d*(m*(m-1))/2; //sum为通过公式,求等差数列的和


printf("s=%d sum=%d ",s,sum); //s为通过数据循环相加得到的等差数列的和



return 0;


}



上图是首项值为1,数列差值为分别1和2的情况下的求和结果,可以看出两种不同求和方式得到结果一致。

4. 如何用C语言输出一个等差数列

#include<stdio.h>
intmain()
{inti,j,n;
scanf("%d",&n);
for(i=n;i>0;i--)
{for(j=i;j>0;j--)
printf("%d",j);
printf(" ");
}
return0;
}

5. c语言编程 已知等差数列的第一项为a,公差为d,求前n项之和,adn由键盘输入

楼主你好!

很高兴完美C代码团队能为你答题!

根据你的要求,代码实现如下!

#include<stdio.h>

intmain(){

inta,n,d,sum=0;

printf("请输入首项a:");

scanf("%d",&a);

fflush(stdin);

printf(" 请输入项数n:");

scanf("%d",&n);

printf(" 请输入公差d:");

scanf("%d",&d);

sum=n*a+d*n*(n-1)/2;

printf(" 前n项的和为:%d ",sum);

return0;

}

希望我的回答对你有帮助!望采纳!

6. 如何用c语言构造一个等差数列

从首项开始, 每次递加一个固定值,就是等差数列了

用for循环很容易做到。

比如 输入首项,和差值,打印前十项的代码可以写作:

#include<stdio.h>
intmain()
{
inta,n,i;
scanf("%d%d",&a,&n);
for(i=0;i<10;i++)
{
printf("%d",a);
a+=n;
}
printf(" ");
return0;
}

7. c语言编程:从素数中找连续和不连续的最长的等差数列

#include<iostream>
#include<iomanip>
using namespace std;

class Series //定义一个序列类来存放连续的等差序列的元素和长度
{
public:
Series(int n) //含有形参的构造函数
{
length=n;
a=new int[n];
}
Series(){} //不含有形参的构造函数
int getlength() //获得序列长度的函数
{
return length;
}
void assign(int i,int j) //为序列中的每个元素赋值的函数
{
a[i]=j;
}
void print() //打印序列中的每个元素的函数
{
for(int i=0;i<length;i++)
cout<<setw(5)<<a[i];
}
void set(int n) //为对象重置值的函数
{
length=n;
a=new int[n];
}
private:
int length;
int *a;
};

void main()
{
int i,n,d=1,j=0,k=0,m=0,storage,countPnum=0,countSeries=0,length=1;
int b[9999]; //用数组b来存放~10000的所有整数
for(i=0;i<9999;i++)
b[i]=i+2;
for(n=2;n<5001;n++) //用筛选法得到所有素数
{
for(i=n+1;i<10001;i++)
if(i%n==0)
b[i-2]=0;
}
for(i=0;i<9999;i++)
{
if(b[i]!=0)
countPnum++;
}
int *a=new int[countPnum]; //用数组a来存放所有的素数
for(i=0;i<9999;i++)
{
if(b[i]!=0)
{
a[k]=b[i];
k++;
}
}
/*求此序列中连续的最长的等差序列*/
for(i=0;i<countPnum;i++) //计算素数序列中连续的等差序列的个数countSeries
{
if((a[i+1]-a[i])==(a[i+2]-a[i+1]))
countSeries++;
}
int *d1=new int[countSeries]; //用数组d来存放每个等差序列的长度
for(i=0;i<countPnum;i++) //计算每个等差序列的长度
{
storage=i;
if((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
d1[j]=2;
while((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
i++;
if((i+2)>countPnum-1)
break;
d1[j]++;
}
j++;
}
i=storage;
}
Series *c1=new Series[countSeries]; //用Series类数组来存放所有的等差序列及其长度
for(i=0,j=0;i<countSeries;i++,j++)
c1[i].set(d1[j]);
j=0;
for(i=0;i<countPnum;i++)
{
storage=i;
if((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
c1[m].assign(j++,a[i]);c1[m].assign(j++,a[i+1]);
while((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
c1[m].assign(j++,a[i+2]);
i++;
if((i+2)>countPnum-1)
break;
}
m++;
}
i=storage;
j=0;
}
m=0;
for(i=0;i<countSeries;i++) //找到最长的等差序列的长度
{
if(m<c1[i].getlength())
m=c1[i].getlength();
}
cout<<"此序列中连续的最长的等差序列是:"<<endl;
for(i=0;i<countSeries;i++) //打印长度最长的等差序列
{
if(c1[i].getlength()==m)
{
c1[i].print();
cout<<endl;
}
}
/*求此序列中不连续的最长的等差数列*/
for(d=2;d<4999;d++) //令公差d从到进行循环
{
for(i=0;i<countPnum;i++) //扫描素数序列中的所有数,找到符合公差大小的等差数列
{
if(a[i]+d*k-2>9998) //防止下标越界
break;
else
{
while(b[a[i]+d*k-2]) //如果是素数,就继续进行扫描过程
{
length++;
k++;
if(a[i]+d*k-2>9998) //防止下标越界
break;
}
if(m<length) //m用来存放最长的等差序列的长度
m=length;
k=1;
length=1;
}
}
}
cout<<"此序列中不连续的最长的等差数列是:"<<endl;
for(d=2;d<4999;d++) //在进行一次上述的过程,当等差序列的长度为最大长度时,把它打印出来
{
for(i=0;i<countPnum;i++)
{
if(a[i]+d*k-2>9998)
break;
else
{
while(b[a[i]+d*k-2])
{
length++;
k++;
if(a[i]+d*k-2>9998)
break;
}
if(length==m)
{
for(j=0;j<m;j++) //打印
cout<<setw(5)<<(a[i]+j*d);
cout<<endl;
}
length=1;
k=1;
}
}
}
}

8. 等差数列的c语言程序怎么编写

include<stdio.h>
int main(void)
{
int a; //a是等差数列的初值
int b; //b是等差数列的项差
int x; //x表示输出显示该数列的前x项
int i; //用于计数
int sum=a; //用于存放每一项的前项
scanf("%d",&x);
for(i=0;i<x;i++)
{
printf("%d\n",sum);
sum=sum+b;
}
return 0;
}

}

9. 等差数列求和 c语言

#include<stdio.h>
intmain(){
intn;
intbegin=1,end=100;
for(n=begin;n<=end;n++){
printf("an=%d",10*n-2);
printf("Sn=%d",5*n*n+3*n);
}
return0;
}

10. c语言编程:从素数中找连续和不连续的最长的等差数列。怎么办

"#include<iostream>
#include<iomanip>
using
namespace
std;
class
Series
//定义1个序列类来存放连续的等差序列的元素和长度
{
public:
Series(int
n)
//含有形参的构造函数
{
length=n;
a=new
int[n];
}
Series(){}
//不含有形参的构造函数
int
getlength()
//获得序列长度的函数
{
return
length;
}
void
assign(int
i,int
j)
//为序列中的每一个元素赋值的函数
{
a[i]=j;
}
void
print()
//打印序列中的每一个元素的函数
{
for(int
i=0;i<length;i++)
cout<<setw(5)<<a[i];
}
void
set(int
n)
//为对象重置值的函数
{
length=n;
a=new
int[n];
}
private:
int
length;
int
*a;
};
void
main()
{
int
i,n,d=1,j=0,k=0,m=0,storage,countPnum=0,countSeries=0,length=1;
int
b[9999];
//用数组b来存放~10000的全部整数
for(i=0;i<9999;i++)
b[i]=i+2;
for(n=2;n<5001;n++)
//用筛选法得到全部素数
{
for(i=n+1;i<10001;i++)
if(i%n==0)
b[i-2]=0;
}
for(i=0;i<9999;i++)
{
if(b[i]!=0)
countPnum++;
}
int
*a=new
int[countPnum];
//用数组a来存放全部的素数
for(i=0;i<9999;i++)
{
if(b[i]!=0)
{
a[k]=b[i];
k++;
}
}
/*求此序列中连续的最长的等差序列*/
for(i=0;i<countPnum;i++)
//计算素数序列中连续的等差序列的个数countSeries
{
if((a[i+1]-a[i])==(a[i+2]-a[i+1]))
countSeries++;
}
int
*d1=new
int[countSeries];
//用数组d来存放每一个等差序列的长度
for(i=0;i<countPnum;i++)
//计算每一个等差序列的长度
{
storage=i;
if((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
d1[j]=2;
while((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
i++;
if((i+2)>countPnum-1)
break;
d1[j]++;
}
j++;
}
i=storage;
}
Series
*c1=new
Series[countSeries];
//用Series类数组来存放全部的等差序列及其长度
for(i=0,j=0;i<countSeries;i++,j++)
c1[i].set(d1[j]);
j=0;
for(i=0;i<countPnum;i++)
{
storage=i;
if((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
c1[m].assign(j++,a[i]);c1[m].assign(j++,a[i+1]);
while((a[i+1]-a[i])==(a[i+2]-a[i+1]))
{
c1[m].assign(j++,a[i+2]);
i++;
if((i+2)>countPnum-1)
break;
}
m++;
}
i=storage;
j=0;
}
m=0;
for(i=0;i<countSeries;i++)
//找到最长的等差序列的长度
{
if(m<c1[i].getlength())
m=c1[i].getlength();
}
cout<<"此序列中连续的最长的等差序列是:"<<endl;
for(i=0;i<countSeries;i++)
//打印长度最长的等差序列
{
if(c1[i].getlength()==m)
{
c1[i].print();
cout<<endl;
}
}
/*求此序列中不连续的最长的等差数列*/
for(d=2;d<4999;d++)
//令公差d从到进行循环
{
for(i=0;i<countPnum;i++)
//扫描素数序列中的全部数,找到符合公差大小的等差数列
{
if(a[i]+d*k-2>9998)
//防止下标越界
break;
else
{
while(b[a[i]+d*k-2])
//假如是素数,就继续进行扫描过程
{
length++;
k++;
if(a[i]+d*k-2>9998)
//防止下标越界
break;
}
if(m<length)
//m用来存放最长的等差序列的长度
m=length;
k=1;
length=1;
}
}
}
cout<<"此序列中不连续的最长的等差数列是:"<<endl;
for(d=2;d<4999;d++)
//在进行一次上述的过程,当等差序列的长度为最大长度时,把它打印出来
{
for(i=0;i<countPnum;i++)
{
if(a[i]+d*k-2>9998)
break;
else
{
while(b[a[i]+d*k-2])
{
length++;
k++;
if(a[i]+d*k-2>9998)
break;
}
if(length==m)
{
for(j=0;j<m;j++)
//打印
cout<<setw(5)<<(a[i]+j*d);
cout<<endl;
}
length=1;
k=1;
}
}
}
}"