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;
}
}
}
}"