2023年贵州省中小学信息技术教师培训每日作业(第6-8次)

刘彭

文章最后更新时间:2023年05月15日已超过369天没有更新。

第6次作业(5月4日)

1. 津津的储蓄计划

1.津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

输入包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

输出包括一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。

(说明:此题程序由纳雍县的王老师提供 )

#include<bits/stdc++.h>
int main()
{
    int me = 0, mom = 0, spend, i;
    for (i = 1; i <= 12; i++)
    {
        me = me+300;
        scanf("%d", &spend);
        me = me-spend; 
        if (me < 0)//出现钱不够用的
        {
            me = -i; //出现钱不够用的月数 
            break;//结束 
        }
        mom = mom + me / 100 * 100; //几个整百数 
        me = me % 100; //存整百后的剩余钱 
    }
    if (me < 0) 
printf("%d", me);//输出不够用的月数 
    else 
printf("%g", me + mom * 1.2);//输出增加的20%还要加上剩余钱 
    return 0;
}


2. 求平均年龄

2.班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

输入第一行有一个整数n(1<= n <= 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。

输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    int n, suishu, zonghe = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> suishu;
        zonghe += suishu;
    }
    double pingjun = (double) zonghe / n;
    cout << fixed << setprecision(2) << pingjun << endl;
    return 0;
}


3. 最高的分数

3.孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。

输出一个整数,即最高的成绩。

#include <iostream>
using namespace std;
int main() {
    int n, zuida = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int chengji;
        cin >> chengji;
        if (chengji > zuida) {
            zuida = chengji;
        }
    }
    cout << zuida << endl;
    return 0;
}


4. 奇数求和

4.计算非负整数 m 到 n(包括m 和 n )之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35。

输入两个数 m 和 n,两个数以一个空格分开,其中 0 <= m <= n <= 300 。

输出一行,包含一个整数,表示m 到 n(包括m 和 n )之间的所有奇数的和。

#include <iostream>
using namespace std;
int main() {
    int m, n;
    cin >> m >> n;
    int zonghe = 0;
    for (int i = m; i <= n; i++) {
        if (i % 2 == 1) { 
            zonghe += i; 
        }
    }
    cout << zonghe << endl;
    return 0;
}


5. 整数的个数

5.给定k(1 < k < 100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。

输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。

输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现的次数。

#include <iostream>
using namespace std;
int main() {
    int k;
    cin >> k;
    int shu1 = 0, shu5 = 0, shu10 = 0;
    for (int i = 0; i < k; i++) {
        int geshu;
        cin >> geshu;
        if (geshu == 1) {
            shu1++;
        } else if (geshu == 5) {
            shu5++;
        } else if (geshu == 10) {
            shu10++;
        }
    }
    cout << shu1 << endl;
    cout << shu5 << endl;
    cout << shu10 << endl;
    return 0;
}


第6次作业(5月5日)

1. 角谷猜想

所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。

程序要求输入一个整数,将经过处理得到1的过程输出来。

输入一个正整数N(N <= 2,000,000)

从输入整数到1的步骤,每一步为一行,每一步中描述计算过程。最后一行输出"End"。如果输入为1,直接输出"End"。


#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    while (n != 1) {
        cout << n;
        if (n % 2 == 1) { // 奇数情况
            cout << "*3+1=";
            n = n * 3 + 1;
        } else { // 偶数情况
            cout << "/2=";
            n = n / 2;
        }
        cout << n << endl;
    }
    cout << "End" << endl;
    return 0;
}


2. 分离整数的各个数位

给定一个整数,要求从个位开始分离出它的每一位数字。输入一个整数,整数在1到100000000之间。输出从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。


#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    while (n > 0) {
        cout << n % 10 << " ";
        n /= 10;
    }
    return 0;
}


3.求两个数的最大公约数

对于求两个正整数m,n的最大公约数可以用do-while实现。

输入两个整数,输出最大公约数


#include <iostream>
using namespace std;
int main() {
    int m, n;
    cin >> m >> n;
    int remainder; // 存储余数
    do {
        remainder = m % n;
        m = n;
        n = remainder;
    } while (remainder != 0);
    cout << m << endl;
    return 0;
}


第8次作业(5月8日)

1. 字符图形2-星号倒直角

请打印n行的星号倒直角三角形。

输入一个整数n(n<10)。

输出输出如下方图所示n行的星号倒直角三角形。


#include <iostream>
using namespace std;
int main() {
  int n;
  cin >> n;
  for (int i = n; i > 0; i--) {
    for (int j = 1; j <= i; j++) {
      cout << "*";
    }
    cout << endl;
  }
  return 0;
}

2. 求1!+2!+...+N!

N!=1∗2∗...∗N。例5!=1∗2∗3∗4∗5=120。

编程求1!+2!+3!+...+N!。

输入一行,只有一个整数n(1≤n≤10)

输出一行,1个整数

#include <iostream>
using namespace std;
int main() {
  int n;
  cin >> n;
  int sum = 0;
  int jiecheng = 1;
  for (int i = 1; i <= n; i++) {
    jiecheng *= i;
    sum += jiecheng;
  }
  cout << sum << endl;
  return 0;
}


3. 求100~999中的水仙花数

若三位数ABC=ABC=A³+B³+C³,则称ABC为水仙花数。例如153,1³+5³+3³ =1+125+27=153,则153是水仙花数。

输出按从小到大输出所有水仙花数,每个数占6个字符宽度。


#include <bits/stdc++.h>
using namespace std;
int main(){
    for (int i = 100; i <= 999; i++){
        int a = i / 100; // 获取百位数
        int b = (i / 10) % 10;  // 获取十位数
        int c = i %10;  // 获取个位数
        if (i == a*a*a + b*b*b + c*c*c){
            cout << setw(6) << i;
        }
    }
    return 0;
}

文章版权声明:除非注明,否则均为金沙人原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,823人围观)

还没有评论,来说两句吧...

取消
微信二维码
微信二维码
支付宝二维码