用天梯赛打开暑假生活的第十五天

发布时间 2023-07-28 12:48:48作者: 寒心小呆

从坐牢到入门的程序设计(15)

开始时间2023-07-28 10:01:08

结束时间2023-07-28 12:41:42

前言:你怎么知道我边逛新生群边刷题(我还洗了个澡)?

 L1-079 天梯赛的善良

一、题目编号及题目说明

二、程序功能测试及说明

这段代码是使用 C++ 编写的一个简单程序,用于统计输入的一组数字中的最小值、最小值出现的次数、最大值以及最大值出现的次数。

三、程序设计思路及结构说明

  1. 首先,从标准输入中读取一个整数 n,表示接下来要输入的数字数量。
  2. 声明一些变量,包括 i 和 j 用于循环计数,max 和 min 用于存储最大值和最小值,count 和 nb 用于存储最大值和最小值的出现次数。
  3. 使用一个循环 for 来遍历输入的数字。
  4. 在循环中,首先从输入中读取一个数字并将其存储在变量 a 中。
  5. 如果 a 等于当前的最大值 max,则将 count 加一,表示最大值出现的次数增加。
  6. 如果 a 等于当前的最小值 min,则将 nb 加一,表示最小值出现的次数增加。
  7. 如果 a 大于当前的最大值 max,则更新 max 的值为 a,并重置 count 为 1。
  8. 如果 a 小于当前的最小值 min,则更新 min 的值为 a,并重置 nb 为 1。
  9. 循环结束后,通过 printf 函数按照指定格式输出最小值和最小值出现的次数,然后输出最大值和最大值出现的次数。
  10. 最后返回 0,表示程序执行完毕。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int i=0,j=0;
    int max=0,count=0,min=1000000,nb=0;
    int a;
    for(i=0;i<n;i++)
    {
        cin>>a;
        if(a==max)
        {
            count++;
        }
        if(a==min)
        {
            nb++;
        }
        if(a>max)
        {
            max=a;
            count=1;
        }
        if(a<min)
        {
            min=a;
            nb=1;
        }
    }
    printf("%d %d\n",min,nb);
    printf("%d %d",max,count);
    return 0;
}

五、题目评分

 L1-080 乘法口诀数列

一、题目编号及题目说明

二、程序功能测试及说明

该程序的功能是根据给定的初始两个数字以及生成序列的长度,按照一定的规则生成一个特殊的数字序列,并将序列输出。

三、程序设计思路及结构说明

  1. 首先,从标准输入中读取三个整数 ab 和 n,分别表示序列的初始两个数字和要生成序列的长度。
  2. 声明一些变量,包括 len 用于记录当前序列的长度,c 是一个数组用于存储生成的数字序列,i 和 tmp 用于循环计数和临时变量。
  3. 将输入的初始两个数字 a 和 b 存储到数组 c 的前两个位置。
  4. 使用 printf 函数输出第一个数字 a
  5. 使用一个循环 while 来生成剩下的数字序列,直到序列的长度达到 n
  6. 在循环中,首先计算当前位置的两个数字相乘得到的结果,并将结果存储到临时变量 tmp 中。
  7. 如果 tmp 小于 10,则将 tmp 直接存储到数组 c 的下一个位置,并将 i 加一。
  8. 否则,将 tmp 的十位数存储到数组 c 的下一个位置,个位数存储到数组 c 的下下个位置,并将 i 加二。
  9. 使用 printf 函数输出当前位置的数字。
  10. 每次循环结束,将 len 加一。
  11. 循环结束后,返回 0,表示程序执行完毕。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
     int a, b, n;
    int len = 1, c[2005];
    int i = 2, tmp=0;
    cin>>a>>b>>n;
    c[0] = a;
    c[1] = b;
    printf("%d", a);
    while (len < n){
        tmp = c[len] * c[len-1];
        if (tmp < 10){
            c[i++] = tmp;
        }
       else {
            c[i++] = tmp / 10;
            c[i++] = tmp % 10;
        }
        printf(" %d", c[len]);
        len++;
    }
    
    return 0;
}

五、题目评分

 L1-081 今天我要赢

一、题目编号及题目说明

二、程序功能测试及说明

该程序的功能是输出一句激励的话语以及一个指定的日期信息。

三、程序设计思路及结构说明

  1. 使用 printf 函数输出字符串 "I'm gonna win! Today!",并在末尾添加换行符 \n
  2. 使用 printf 函数输出日期信息 "2022-04-23",并在末尾添加换行符 \n

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    printf("I'm gonna win! Today!\n2022-04-23\n");
}

五、题目评分

 L1-082 种钻石

一、题目编号及题目说明

 

二、程序功能测试及说明

该程序的功能是计算两个浮点数的商,并向下取整输出结果的整数部分。

三、程序设计思路及结构说明

  1. 声明两个浮点数变量 n 和 v,用于存储输入的数值。
  2. 使用 cin 从标准输入中读取两个浮点数,并将其分别存储到变量 n 和 v 中。
  3. 声明一个浮点数变量 t,用于存储 n 除以 v 的结果,并通过 floor 函数向下取整。
  4. 使用 printf 函数格式化输出 t 的整数部分,并四舍五入到最接近的整数。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    float n,v;
    cin>>n>>v;
    float t=floor(n/v);
    printf("%.0f",t);
}

五、题目评分

 L1-083 谁能进图书馆

一、题目编号及题目说明

二、程序功能测试及说明

该程序的功能是对输入的四个整数进行条件判断,并根据不同的情况输出对应的结果。

三、程序设计思路及结构说明

程序逻辑如下:

  1. 声明四个整数变量 jinrupeitonga1 和 a2,用于存储输入的整数。
  2. 使用 scanf 函数从标准输入中读取四个整数,并将其分别存储到变量 jinrupeitonga1 和 a2 中。
  3. 根据不同的条件判断,使用 printf 函数输出不同的结果。

具体的条件判断逻辑如下:

  1. 如果 a1 等于 a2
    • 如果 a1 小于 jinru,则输出格式化字符串 "%d-N %d-N\nzhang da zai lai ba",其中 %d 分别代表 a1 和 a2 的值。
    • 否则,输出格式化字符串 "%d-Y %d-Y\nhuan ying ru guan"。
  2. 如果 a1 大于 a2
    • 如果 a2 大于等于 jinru,则输出格式化字符串 "%d-Y %d-Y\nhuan ying ru guan"。
    • 如果 a2 小于 jinru 且 a1 大于等于 peitong,则输出格式化字符串 "%d-Y %d-Y\nqing 1 zhao gu hao 2"。
    • 如果 a1 大于等于 jinru 且 a1 小于 peitong,则输出格式化字符串 "%d-Y %d-N\n1: huan ying ru guan"。
    • 否则,输出格式化字符串 "%d-N %d-N\nzhang da zai lai ba"。
  3. 如果 a1 小于 a2
    • 如果 a1 大于等于 jinru,则输出格式化字符串 "%d-Y %d-Y\nhuan ying ru guan"。
    • 如果 a1 小于 jinru 且 a2 大于等于 peitong,则输出格式化字符串 "%d-Y %d-Y\nqing 2 zhao gu hao 1"。
    • 如果 a2 大于等于 jinru 且 a2 小于 peitong,则输出格式化字符串 "%d-N %d-Y\n2: huan ying ru guan"。
    • 否则,输出格式化字符串 "%d-N %d-N\nzhang da zai lai ba"。

四、程序源代码

#include <stdio.h>
int main()
{
    int jinru,peitong,a1,a2;
    scanf("%d %d %d %d",&jinru,&peitong,&a1,&a2);
    if(a1==a2)
    {
        if(a1<jinru)
            printf("%d-N %d-N\nzhang da zai lai ba",a1,a2);
        else
            printf("%d-Y %d-Y\nhuan ying ru guan",a1,a2);
    }
    else if(a1>a2)
    {
        if(a2>=jinru)
            printf("%d-Y %d-Y\nhuan ying ru guan",a1,a2);
        else if(a2<jinru&&a1>=peitong)
            printf("%d-Y %d-Y\nqing 1 zhao gu hao 2",a1,a2);
        else if(a1>=jinru&&a1<peitong)
            printf("%d-Y %d-N\n1: huan ying ru guan",a1,a2);
        else
            printf("%d-N %d-N\nzhang da zai lai ba",a1,a2);
    }
    else
    {
        if(a1>=jinru)
            printf("%d-Y %d-Y\nhuan ying ru guan",a1,a2);
        else if(a1<jinru&&a2>=peitong)
            printf("%d-Y %d-Y\nqing 2 zhao gu hao 1",a1,a2);
        else if(a2>=jinru&&a2<peitong)
            printf("%d-N %d-Y\n2: huan ying ru guan",a1,a2);
        else
            printf("%d-N %d-N\nzhang da zai lai ba",a1,a2);
    }
    return 0;
}

五、题目评分

 L1-084 拯救外星人

一、题目编号及题目说明

二、程序功能测试及说明

该程序的功能是计算输入的两个整数之和,并计算从 1 到和的阶乘,并输出结果。

三、程序设计思路及结构说明

  1. 声明三个整数变量 ab 和 c,用于存储输入的整数。
  2. 使用 cin 输入流从标准输入中读取两个整数,并分别将其存储到变量 a 和 b 中。
  3. 声明并初始化变量 i 为 0,用于控制循环。
  4. 声明并初始化变量 sum 为 1,用于存储阶乘的结果。
  5. 计算 c 的值,即 a 和 b 的和。
  6. 使用 for 循环从 1 到 c 进行遍历。
    • 在每次循环中,将当前循环变量 i 乘以 sum 并将结果赋值给 sum
  7. 使用 printf 函数输出变量 sum 的值。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,c;
    cin>>a>>b;
    int i=0;
    int sum=1;
    c=a+b;
    for(i=1;i<=c;i++)
    {
        sum*=i;
    }
    printf("%d\n",sum);
    return 0;
}

五、题目评分

 L1-085 试试手气

一、题目编号及题目说明

二、程序功能测试及说明

该程序的功能是模拟了一种投骰子的游戏。根据输入的骰子选点情况和投骰子次数,输出最后一次投骰子得到的点数序列。

 

三、程序设计思路及结构说明

  1. 声明一个二维整型数组 touzi,用于表示一个 6x6 的图,其中第 0 列和第 0 行不考虑。
  2. 声明一个一维整型数组 res,用于记录最后一次投骰子的结果。
  3. 使用嵌套的 for 循环,从 1 到 6 进行遍历。
    • 在每次循环中,使用 scanf 函数输入一个整数,并将其存储到变量 num 中。
    • 将第 num 列的第 i 个元素标记为 1,表示第 i 个骰子选过了点数 num
  4. 使用 scanf 函数输入一个整数 n,表示投骰子的次数。
  5. 使用嵌套的 for 循环,进行 n 次投骰子操作。
    • 在每次循环中,使用嵌套的 for 循环,从 1 到 6 进行遍历。
      • 在内层的嵌套循环中,从 6 到 1 逆序遍历。
        • 如果当前位置的元素为 0,表示该点数还未选择,则将其标记为 1,并将该点数存储到数组 res 的第 j-1 个元素中(因为数组索引从 0 开始)。
        • 然后跳出内层的循环。
  6. 使用循环遍历数组 res,并使用 printf 函数按照要求输出结果。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int touzi[7][7]={0}; //创建6*6的图,第0列和第0行不考虑
    int res[6]; //记录最后一次投骰子的结果
    for(int i=1;i<=6;i++)
    {
        int num;
        scanf("%d",&num);
        touzi[num][i]=1; //第几列就是第几个骰子,每列记录各点数状态,选过的点数标记1
    }
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        for(int j=1;j<=6;j++)
        {
            for(int k=6;k>=1;k--)
            {
                if(touzi[k][j]==0)
                {
                    touzi[k][j]=1;
                    res[j-1]=k;
                    break;
                }
            }
        }
    }
    for(int k=0;k<6;k++)
    {
        printf("%d",res[k]);
        if(k!=5)
            printf(" ");
    }
    return 0;

}

五、题目评分

 L1-086 斯德哥尔摩火车上的题

一、题目编号及题目说明

二、程序功能测试及说明

该程序的功能是比较两个字符串s和s1,将满足条件的字符组合成新的字符串,并输出结果。具体的处理逻辑是判断相邻字符的奇偶性是否相同,如果相同,则选择较大的字符。最后按照要求输出结果。

三、程序设计思路及结构说明

  1. 声明了字符串变量s和s1,用来存储输入的两个字符串。
  2. 声明了字符串变量ss和ss1,用来存储处理后的结果。
  3. 使用cin输入读取字符串s和s1。
  4. 使用for循环遍历字符串s和s1,从索引1开始。
    • 在每次循环中,判断当前字符和前一个字符的奇偶性是否相同。
      • 如果相同,则将较大的字符追加到字符串ss或ss1中。
  5. 使用if语句判断ss和ss1是否相等。
    • 如果相等,则输出ss。
    • 否则,分行输出ss和ss1。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s,s1;
    string ss="",ss1="";
    cin>>s>>s1;
    for(int i=1;i<s.size();i++){
       if (s[i] % 2 == s[i-1] % 2) {
            ss += max(s[i], s[i-1]);
  }
    }
    for(int i=1;i<s1.size();i++){
       if (s1[i] % 2 == s1[i-1] % 2) {
            ss1 += max(s1[i], s1[i-1]);
    }
    }
    if(ss==ss1)
        cout<<ss;
    else
        cout<<ss<<endl<<ss1;
    
}

五、题目评分

 总结:明天结束L1!

每日一mo:她说过要嫁天下第一,我便让你做那天下第一......