一本通编程启蒙例37及练习题解

例37.1

算法思路
1.输入n

2.初始化结果sum2=1

3.使用数组a记录项数,初始化a[1]=1

4.从2循环到n

5.a[i]依次加1,记录正负号

6.根据a[i]%2判断正负号

7.根据正负号将项加到或减去sum2

8.输出sum2结果,保留4位小数

#include <bits/stdc++.h>
using namespace std;

int main() {

  //输入n值
  int n;   

  //初始化结果变量
  double sum = 1;  

  cin >> n;

  //从2循环到n
  for(int i = 2; i <= n; i++) {

  //使用数组记录正负号
  int sign = -1;  

  //根据正负号判断加减
  if(sign == 1)   
    sum += 1.0/i;
  else
    sum -= 1.0/i;

  //翻转正负号
  sign *= -1;

  }

  //输出结果,保留4位小数
  cout << fixed << setprecision(4) << sum;

  return 0;

}

例37.2

算法思路
1.输入n

2.初始化结果数组a={1,2,3},b={1,1,2}

3.特殊情况输出结果

4.从i=3开始循环计算每个项

5.根据规则计算下一个qi,pi的值

6.累加各项分数和

7.输出结果,保留4位小数

#include<bits/stdc++.h>

double avg; 

int main(){

  int n;

  int a[1001]={1,2,3}, b[1001]={1,1,2};

  cin>>n;

  //特殊情况

  for(int i=3;i<=n;i++){

  a[i]=a[i-1]+a[i-2];

  b[i]=b[i-1]+b[i-2]; 

  avg+=a[i]/b[i];

  }

  cout<<fixed<<setprecision(4)<<avg+3.5;

  return 0;

}

例37.3

算法思路
1.输入n

2.循环打印菱形的上半部分

3.打印每行的空格数,从n-i开始,逐渐减少

4.打印每行的数字,从1开始,逐渐增加,直到2*i-1

5.换行

6.循环打印菱形的下半部分

7.打印每行的空格数,从1开始,逐渐增加,直到n-i

8.打印每行的数字,从1开始,逐渐增加,直到2*i-1

#include <iostream>
using namespace std;

int main() {

  // 输入n
  int n;

  cin >> n;

  // 打印菱形的上半部分
  for(int i=1; i<=n; i++) {

  // 打印空格
  for(int space=1; space<=n-i; space++)
    cout << " ";

  // 打印数字
  for(int num=1; num<=2*i-1; num++)
    cout << num;

  cout << endl;

  }

  // 打印菱形的下半部分
  for(int i=n-1; i>=1; i--) {

  // 打印空格
  for(int space=1; space<=n-i; space++) 
    cout << " ";

  // 打印数字
  for(int num=1; num<=2*i-1; num++)
    cout << num;

  cout << endl;

  }

  return 0;

}

练37.1

复制粘贴…

#include <iostream>
using namespace std;

int main() {
    cout << "*****\n*****\n*****";
    return 0;
}

练37.2

直接复制粘贴…

#include <iostream>
using namespace std;

int main() {
    cout << "*\n**\n***\n****\n*****";
    return 0;
}

练37.3

直接复制粘贴…

#include <iostream>
using namespace std;

int main() {
    cout << "    *\n   ***\n  *****\n *******\n*********";
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值