代码改变世界

第三次作业

2018-11-28 20:14  樊宇烽  阅读(1252)  评论(8编辑  收藏  举报

作业要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360。

第11周:

7-1 求简单交错序列前N项和 (15 分)

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精度范围。

输入样例:

10

输出样例:

sum = 0.819

一、实验代码

#include<stdio.h>
int main(void)
{
  int x,N,a=1;
  double y=0;
  scanf("%d",&N);
  for(x=1;x<=1+3*(N-1);x=x+3){
    y=y+a*1.0/x;
    a=-a;
  }
  printf("sum = %.3lf",y);
  return 0;
}

二、解题思路

1.步骤

第一步:分析题意并定义四个变量x、y、N、a、令a=1,y=0。

第二步:输入一个正整数N。

第三步:利用for循环语句计算出每一项的值并求出他们的和y,即y=y+a*1.0/x。因为一项是正数、一项是负数,所以引入a=1并使每次的a=-a来改变正负。

第四步:输出y并保留3位小数。

2.流程图

3.本题调试过程碰到问题及解决办法

 第12周:

7-1 求整数的位数及各位数字之和 (15 分)

对于给定的正整数N,求它的位数及其各位数字之和。

输入格式:

输入在一行中给出一个不超过109​​的正整数N。

输出格式:

在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:

321

输出样例:

3 6
一、实验代码
#include<stdio.h>
int main(void)
{
    int N,n=0,sum=0;
    scanf("%d",&N);
    do{
        sum=sum+N%10;
        N=N/10;
        n++;
    }
    while(N!=0);
    printf("%d %d",n,sum);
    return 0; 
}

二、解题思路

1.步骤

第一步:定义三个变量 N,n,sum

第二步:根据题意写出循环条件

第三步:写出算法

第四步:输出位数n与个数字之和sum

2.流程图

3.本题调试过程碰到问题及解决办法

第13周:

6-1 求m到n之和 (10 分)

本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。

函数接口定义:

int sum( int m, int n );

其中mn是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。

裁判测试程序样例:

#include <stdio.h>

int sum(int m, int n);

int main()
{    
    int m, n;

    scanf("%d %d", &m, &n);
    printf("sum = %d\n", sum(m, n));

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

-5 8

输出样例:

sum = 21
一、实验代码
int sum(int m,int n){
  int i,y=0;
  for(i=m;i<=n;i++){
      y=y+i;
  }
  return y;
}

二、解题思路

1.步骤

第一步:分析题意,得知自定义的函数sum是用于求m~n之间整数的和。

第二步:在sum函数内定义变量i,y=0。

第三步:写出循环条件和算法。

第四步:返还m~n之间整数的和y的值。

2.流程图

3.本题调试过程碰到问题及解决办法

 

个人总结:

通过这一段时间的学习,我学习到了几种循环语句和自定义函数的方法