展开全部
/*数组模拟*/
/* 1+3的一次方+3的二次方+........+3的2010次方的算法 */
/*可以控制计算到3的n次方,n由键盘输入 */
#include <stdio.h>
#include <string.h>
#define N 1000
/*子函数cheng3()作用:把str[]中存的数值乘以3,再把结果存入str[]中(数字倒序存储)*/
void cheng3(char *str)
{
int i,jinwei=0,temp,j=0;
char news[N];
for(i=0;str[i]!='\0';i++)
{
temp=(str[i]-48)*3+jinwei;
news[i]=temp%10+48;
jinwei=temp/10;
}
if(jinwei>0)
news[i++]=jinwei+48;
news[i]='\0';
for(i=0;news[i]!='\0';i++)
str[i]=news[i];
str[i]='\0';
}
/*子函数add()作用:把a[]和b[]中存的数值相加,再把结果存入a[]中(数字倒序)*/
void add(char a[],char b[])
{
int he,jinwei=0,i;
for(i=0;b[i]!='\0';i++)
{
if (a[i]!='\0')
{
he=a[i]+b[i]-48-48+jinwei;
}
else
{
he=b[i]-48+jinwei;
}
a[i]=he%10+48;
jinwei=he/10;
}
if(jinwei>0) //处理进位
{
for(;a[i]!='\0';i++)
if((a[i]+jinwei)<58)
{
a[i]=a[i]+jinwei;
jinwei=0;
break;
}
else
{
a[i]=a[i]+jinwei-10;
jinwei=1;
}
}
if(a[i]=='\0'&&jinwei==1)
{
a[i++]='1';
a[i]='\0';
}
}
int main(void)
{
int n;
int i,j;
while(1)
{
char a[N]="1",b[N]="1";
printf("输入n:");
scanf("%d",&n); //计算到3的n次方
if(n<=0) break; //控制结束。取n为0时,结束循环
for(j=1;j<=n;j++)
{
cheng3(b);
add(a,b);
}
//printf("3^%d=",n);
//for(i=strlen(b)-1;i>=0;i--)
// printf("%c",b[i]);
printf("1加到3的n=%d次方是:\n",n);
for(i=strlen(a)-1;i>=0;i--)
printf("%c",a[i]);
printf("\n");
getchar();getchar();
}
}
/* 1+3的一次方+3的二次方+........+3的2010次方的算法 */
/*可以控制计算到3的n次方,n由键盘输入 */
#include <stdio.h>
#include <string.h>
#define N 1000
/*子函数cheng3()作用:把str[]中存的数值乘以3,再把结果存入str[]中(数字倒序存储)*/
void cheng3(char *str)
{
int i,jinwei=0,temp,j=0;
char news[N];
for(i=0;str[i]!='\0';i++)
{
temp=(str[i]-48)*3+jinwei;
news[i]=temp%10+48;
jinwei=temp/10;
}
if(jinwei>0)
news[i++]=jinwei+48;
news[i]='\0';
for(i=0;news[i]!='\0';i++)
str[i]=news[i];
str[i]='\0';
}
/*子函数add()作用:把a[]和b[]中存的数值相加,再把结果存入a[]中(数字倒序)*/
void add(char a[],char b[])
{
int he,jinwei=0,i;
for(i=0;b[i]!='\0';i++)
{
if (a[i]!='\0')
{
he=a[i]+b[i]-48-48+jinwei;
}
else
{
he=b[i]-48+jinwei;
}
a[i]=he%10+48;
jinwei=he/10;
}
if(jinwei>0) //处理进位
{
for(;a[i]!='\0';i++)
if((a[i]+jinwei)<58)
{
a[i]=a[i]+jinwei;
jinwei=0;
break;
}
else
{
a[i]=a[i]+jinwei-10;
jinwei=1;
}
}
if(a[i]=='\0'&&jinwei==1)
{
a[i++]='1';
a[i]='\0';
}
}
int main(void)
{
int n;
int i,j;
while(1)
{
char a[N]="1",b[N]="1";
printf("输入n:");
scanf("%d",&n); //计算到3的n次方
if(n<=0) break; //控制结束。取n为0时,结束循环
for(j=1;j<=n;j++)
{
cheng3(b);
add(a,b);
}
//printf("3^%d=",n);
//for(i=strlen(b)-1;i>=0;i--)
// printf("%c",b[i]);
printf("1加到3的n=%d次方是:\n",n);
for(i=strlen(a)-1;i>=0;i--)
printf("%c",a[i]);
printf("\n");
getchar();getchar();
}
}
2012-06-02
展开全部
高斯求和
追问
什么意思啊?看不懂唉
追答
(首项+末项)*项数/2=数列和
例题:1+2+3+4+5……+99+100
1就是首项,100就是末项,项数指这个式子里有几个数字,因为一共有100个数字所以项数为100
1+2+3+...+100
=(1+100)*100/2
=101*100/2
=10100/2
=5050
另外:末项=首项+(项数-1)*公差
项数=(末项-首项)/公差+1
首项=末项-(项数-1)*公差
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不是等比数列吗?等比数列求和不是有公式的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询