假期刷题打卡--Day16

一、码题集正常刷题

1、MT1159 指定集合

某数组含有N个元素,输出那些数字来自集合{4,5,6}的元素,按原序。没有就输出-1。

格式

输入格式:

第一行输入数组长度N,第二行输入数组元素,整型,空格分隔。

输出格式:

输出整型,空格分隔。

样例 1

输入:

4  
1 2 3 4

输出:

4 

分析过程

刚开始,我是尝试了一下将满足{4,5,6}的元素存入b[i](b[i]初始化为全0)中,然后判断b[i]不为0的元素并输出。

#include 

using namespace std;

int main( )
{
    int N,temp,flag = 0;
    cin >> N;
    int i,j;
    int a[N-1],b[N-1]={0};
    for(int i=0;i> a[i];
    }
    //首先判断a[N-1]中是否有{4,5,6}中的数字,如果有存入b[N-1]中
    for(int i=0;i

但是后面发现不需要想得那么复杂,题目要求原序输出是按照输入的数组中的数组输出,而不是按照4,5,6的顺序输出,所以在输入之后直接判断是否是4,5,6,如果是就直接输出即可,所以,不需要我刚开始想的那么复杂,最后,要注意的是输出的-1是整型,而不是字符型,我的前面的代码是可以实现的,但是我把-1设成了字符型,所以错了,修改之后就可以通过全部用例了。最终得到的代码如下:

实现代码
#include 

using namespace std;

int main( )
{
    int N,flag = 0;
    cin >> N;
    int a[N-1];
    for(int i=0;i> a[i];
    }
    //首先判断a[N-1]中是否有{4,5,6}中的数字
    for(int i=0;i

审题的时候需要仔细一点,我刚开始审题的时候就审错了,还以为是看数组是否是顺序,如果是就输出数组中元素的个数,结果第二次审题才发现,是让查看数组中哪些元素来自{4,5,6},然后输出来。

2、MT1161 N的零

输入正整数N,将N的所有零转换为5。没有0就原样输出。不考虑不合理的输入等特殊情况。

格式

输入格式:

输入正整数N

输出格式:

输出整型

样例 1

输入:

5002

输出:

5552
解题思路

首先判断输入值的位数,然后将输入值存入字符数组当中,然后从后往前查看字符数组的每个元素是否为0,是0的话就转换为5,不为0直接输出。

实现代码
#include 

using namespace std;

int main( )
{
    int N,count=0;
    cin >> N;
    int a=N;
    while(a!=0){
        count++;
        a/=10;
    }
    // cout << count;
    int b[10];
    for(int i=0;i=0;i--){
        if(b[i]==0){
            cout << 5;
        }else{
            cout << b[i];
        }
    }
    return 0;
}

二、补充小练习:

 1、MT1088 温度对照

输出华氏温度F(-50<=F<200)和摄氏温度C对照表,其计算公式为C=9(F−32)/5。不考虑非法输入等特殊情况。

输入格式:输入华氏温度F为整型

输出格式:输出摄氏温度C为实型

输入样式:

-50

输出样式:

-147.600000

本题相关知识点: 语言基础:公式与计算


#include
int main() 
{ 
    int F;
    double C;
    scanf("%d",&F);
    C = (double)9 * (F - 32)/5;//注意此处要将答案强制转化为double型,否则依旧会出错。
    printf("%lf",C);
    return 0; 
}

注意点:1、scanf后面必须有&(地址符);

2、最终的结果要求是C为实型,所以必须强制转换过来,不然输出的答案会自动取舍;

3、double型输出(printf)时用%lf还是%f都行。

2、九进制转十进制

问题描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

九进制正整数(2022)9 转换成十进制等于多少?

运行限制

  • 最大运行时间:1s

  • 最大运行内存: 512M

代码实现


#include 
using namespace std;
int main()
{
  // 请在此输入您的代码
  cout << 2*1 + 2*9 + 0*81 + 2*81*9;
  return 0;
}

本题实质上是考察了其他进制转十进制这个运算,对于整数部分,运算过程就是从所给整数个位开始,乘以所给整数的进制数的0次方,然后加上十位数乘以所给进制数的1次方,依次向上计算,直至全部计算完毕。例如:所给整数2022,对应进制数九进制,所以计算过程为2*9^0 + 2*9^1 + 0*9^2 + 2*9^3,然后计算得到结果即可。

明天继续吧。

你可能感兴趣的:(算法)