第六周编程总结
题目1. 求N分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和
1).实验代码
#include<stdio.h>
int main()
{
int N,i;
double sum;
scanf("%d",&N);
sum=0; //初始化sum
for(i=1;i<=N;i++) //累加i的值
sum+=1.0/i; //累加求和
printf("sum = %.6f",sum);
return 0;
}
2). 设计思路
第一步:定义变量
第二步:输入变量
第三步:调用for语句
第四步:累加求和
第五步:输出答案
3).本题调试过程碰到的问题及解决方法
问题:计算的答案错误
解决方法:累加求和时将1更改为1.0
4).运行结果截图
题目2. 求奇数分之一序列前N项和
本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。
1)实验代码
#include<stdio.h>
int main()
{
int N,i;
double sum;
scanf("%d",&N);
sum=0; //初始化sum
for(i=1;i<=N;i++) //累加i的值
sum+=1.0/(2*i-1); //累加求和
printf("sum = %.6f",sum);
return 0;
}
2).设计思路
第一步:定义变量
第二步:输入实数
第三步:调用for语句
第四步:累加求和
第五步:输出答案
3).本题调试过程碰到的问题及解决方法
问题:分式的分母错误
解决方法:更正分母
4).运行结果截图
题目3. 求简单交错序列前N项和
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
1).实验代码
#include<stdio.h>
#include<math.h>
int main()
{
int N,i,y,x;
double d,sum; //d为每一项的值,sum为和
scanf("%d",&N);
x=1; // 初始化x,y,sum
y=1;
sum=0;
for(i=1;i<=N;i++){ //累加i的值
d=x*1.0/y; //计算每一项的值
sum+=d; //累加求和
y+=3;
x=-x; //改变符号,为下次循环做准备
}
printf("sum = %.3f",sum);
return 0;
}
2).设计思路
第一步:定义变量
第二步:调用for语句
第三步:计算每一项的值
第四步:累加求和
第五步:输出答案
3).本题调试过程碰到的问题及解决方法
问题:变量没有进行初始化
解决方法:将变量进行初始化
4).运行结果截图
题目4. 求平方与倒数序列的部分和
本题要求对两个正整数m和n(m≤n)编写程序,计算序列和m2+1/m+(m+1)2+1/(m+1)+⋯+n2+1/n。
1).实验代码
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i;
double sum;
scanf("%d %d",&m,&n); //输入整数m,n
sum=0;
for(i=m;i<=n;i++) //累加i的值
{
sum+=pow(i,2)+1.0/i; //累加求和
}
printf("sum = %.6f",sum);
return 0;
}
2).设计思路
第一步:定义变量
第二步:输入变量
第三步:调用for语句
第四步:累加求和
第五步:输出答案
3).本题调试过程碰到的问题及解决方法
问题:变量初始化位置输入错误
解决方法:将初始化语句放在for语句外
4).运行结果截图
题目5. 求交错序列前N项和
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
1).实验代码
#include<stdio.h>
int main()
{
int m,N,i,f,d;
double y,sum; //y为每一项的值,sum为和
scanf("%d",&N);
sum=0; //初始sum,f,d,m
f=1;
d=1;
m=1;
for(i=1;i<=N;i++){ //累加i的值
y=f*m*1.0/d; //计算每项的值
sum+=y; //将每项累加
m++;
d+=2;
f=-f; //改变符号,为下次循环做准备
}
printf("%.3f",sum);
return 0;
}
2).设计思路
第一步:定义变量
第二步:调用for语句
第三步:计算每项的值
第四步:累加求和
第五步:输出答案
3).本题调试过程碰到的问题及解决方法
问题:输出格式错误
解决方法:按输出样例重新输出