用天梯赛打开暑假生活第六天

发布时间 2023-06-25 14:59:56作者: 寒心小呆

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

开始时间2023-06-25 10:34:16

结束时间2023-06-25 14:48:42

前言:今天高考出成绩了,有什么想问的可以随时咨询我!

L1-025 正整数A+B

一、题目编号及题目说明

二、程序功能测试及说明

  给两个输入,如果都是整数输出它们的和,若出现一个非整数该位置为?结果也为?。

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

  声明字符串a,b,整型a1,b1,设置标志物flag和nb分别置为1,做循环处理a,若字符串中字符出现0~9之外的东西将标志物flag置为0并结束循环,将该字符转为整型累加如a1,同理对b进行操作,需要格外注意测试点3,测试点三为123 123 auioedfhawduifn,这种情况不做处理会出现123+123=246,但结果应该是123+?=?,所以针对字符串b的操作吸收时应该用getline函数,当然循环次数要多设置一次以判断后一个数。当两个标志物都是1,这时没有?按照标准求和即可,当有一个标志物为0对应位置应该置为?,其他情况?+?=?。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a,b;
    cin>>a;
    getline(cin,b);
    int a1=0,b1=0;
    int flag=1,nb=1,t=1;
    for (int i = a.length()-1; i>=0; i--)
    {
        if (a[i] < '0' || a[i] > '9')
        {
            flag = 0;
            break;
        }
        else
        {
            a1 += t * (a[i] - '0');
            t *= 10;
        }
    }
    if (a1 > 1000 || a1 < 1)
    {
        flag = 0;
    }
    t = 1;
    for (int i = b.length()-1; i>=1; i--)
    {
        if (b[i] < '0' || b[i] > '9')
        {
            nb = 0;
            break;
        }
        else
        {
            b1 += t * (b[i] - '0');
            t *= 10;
        }
    }
    if (b1 > 1000 || b1 < 1)
    {
        nb = 0;
    }
    //printf("%d %d\n",a1,b1);
    if (flag == 1 && nb == 1)
    {
        printf("%d + %d = %d", a1, b1, a1 + b1);
    }
    else if (flag==0&&nb==1)
    {
        printf("? + %d = ?", b1);
    }
    else if (flag==1&&nb==0)
    {
        printf("%d + ? = ?", a1);
    }
    else
    {
        printf("? + ? = ?");
    }
    printf("\n");
    return 0;
}

 五、题目评分

 L1-026 I Love GPLT

一、题目编号及题目说明

二、程序功能测试及说明

  功能是隔行输出一句话。

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

  用printf输出话就行。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    printf("I\n \nL\no\nv\ne\n \nG\nP\nL\nT");
    return 0;
}

五、题目评分

 L1-027 出租

一、题目编号及题目说明

二、程序功能测试及说明

  由所给电话号码给出两个字符串。

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

  首先定义一个函数,功能是从大到小排序并剔除重复数字,并将该数组赋值。主函数内以字符串的形式吸收电话号码,用字符串a吸收由函数操作的字符串,并按格式输出,最后输出换行。接着分别处理每一个字符串中的字符,从第一个字符开始若与字符串a某字符相同输出该字符的下标。最后输出换行。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
std::string sortAndRemoveDuplicates(const std::string& input)
{
    std::vector<char> chars(input.begin(), input.end());

    std::sort(chars.rbegin(), chars.rend()); // 从大到小排序

    auto last = std::unique(chars.begin(), chars.end()); // 去重
    chars.erase(last, chars.end());

    std::string result(chars.begin(), chars.end()); // 转换回字符串

    return result;
}
int main()
{
    string s;
    cin>>s;
    int i=0,b[11];
    string a = sortAndRemoveDuplicates(s);
    cout <<"int[] arr = new int[]{";
    for(i=0;i<a.length();i++)
    {
        printf("%c",a[i]);
        if(i<a.length()-1)
        {
            printf(",");
        }
    }cout <<"};"<<endl;
    cout <<"int[] index = new int[]{";
    int j=0;
     for(i=0;i<s.length();i++)
    {
        for(j=0;j<a.length();j++)
        {
            if(s[i]==a[j])
            {
                printf("%d",j);
                if(i<s.length()-1)
                {
                    printf(",");
                }
            }
        }
    }cout <<"};"<<endl;
    return 0;
}

五、题目评分

 L1-028 判断素数

一、题目编号及题目说明

二、程序功能测试及说明

  第一行给出一个整数,以该整数为个数输出几个整数并进行判断,若是素数输出yes,反之输出No。

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

  以n吸收所给整数,以n为循环上限做循环,内层循环以a吸收一个整数,定义一个0值的标志物flag,若a小于2将标志物置为1,若a不为素数将标志物置为1,判断完毕后,当标志物为1输出No,其他情况输出Yes。循环结束return 0.

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int a;
        cin>>a;
        int flag=0;
        if(a<2)
        {
            flag=1;
        }
        for(int j=2;j<sqrt(a);j++)
        {
            if(a%j==0)
            {
                flag=1;
                break;
            }
        }
        if(flag==1)
        {
            printf("No\n");
        }
        else printf("Yes\n");
    }
    return 0;
}

五、题目评分

L1-029 是不是太胖了

一、题目编号及题目说明

二、程序功能测试及说明

  由所给数字进行相应操作,输出标准体重。

 

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

  首先吸收该数n,声明一个浮点数a,用n进行相关运算并将结果赋值给a,最后以.1的形式输出。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    float a;
    a=(n-100)*0.9*2;
    printf("%.1f\n",a);
}

五、题目评分

 L1-030 一帮一

一、题目编号及题目说明

二、程序功能测试及说明

  用于实现一个配对的功能。用户输入一些学生信息,包括性别和姓名,在一对一的基础上进行配对,并输出配对结果。

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

  1. 首先,通过 #include <bits/stdc++.h> 引入了标准C++库的所有头文件。
  2. 接下来,定义了一个名为 stu 的结构体,用于存储学生的性别、身份标识和姓名等信息。
  3. 在 main 函数中,首先声明了变量 n 存储学生数量,以及 s 数组用于存储学生信息。
  4. 然后,用户输入学生数量 n
  5. 使用 for 循环遍历 n 次,分别读取学生的性别和姓名,并将身份标识设置为初始值0。
  6. 接下来,使用另一个 for 循环进行配对操作。循环从第一个学生开始,输出其姓名并将身份标识设置为1。然后,从最后一个学生开始向前遍历直到达到数组的中间位置,找到与当前学生性别不同且未配对的学生,并输出其姓名。然后将该学生的身份标识设置为1,并跳出内层循环。
  7. 最后,程序返回0,结束执行。

四、程序源代码

#include<bits/stdc++.h>
using namespace std;
struct stu
{
    int sex, iden;//性别、访问标识
    char str[9];//姓名
};
int main()
{
    int n;
    stu s[51];
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> s[i].sex >> s[i].str;
        s[i].iden = 0;
    }
    for (int j = 0; j < n / 2; j++)
    {
        cout << s[j].str << " ";
        s[j].iden = 1;
        for (int k = n - 1; k >= n / 2; k--)
        {
            if (s[k].iden == 0 && s[k].sex != s[j].sex)
            {
                cout << s[k].str << endl;
                s[k].iden = 1;
                break;
            }
        }
    }
    return 0;
}

五、题目评分

 总结:速看石家庄铁道大学吧,今年的招生减章,试问今年400分能上铁大否?