「PAT乙级真题解析」Basic Level 1086 就不告诉你 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求, 计算给定两个数的乘积, 然后将乘积的各个数字颠倒后输出对应的数值。 要求很明确,算乘积,然后逆转顺序,最后输出,给定的数值在整型范围内,可以直接存储为整型。

#算法#pat考试#数据结构#需求分析#c语言

Table of Contents

乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。

PAT (Basic Level) Practice 1086 就不告诉你

问题分析

题设要求, 计算给定两个数的乘积, 然后将乘积的各个数字颠倒后输出对应的数值。 要求很明确,算乘积,然后逆转顺序,最后输出,给定的数值在整型范围内,可以直接存储为整型。

完整描述步骤

  1. 获取输入: 正整数A和B
  2. 计算乘积product = A * B
  3. 将乘积逆转后输出
    • 可以使用取余的方式得到顺序逆转后的数值
    • 也可以转为字符串后从末尾开始输出

伪代码描述

  1. get input: A, B
  2. calculate product = A * B;
  3. init flag:
    • found_first_non_zero_digit = False
  4. while product != 0:
    • remainder = product % 10;
    • if remainder != 0:
      • found_first_non_zero_digit = True
    • if found_first_non_zero_digit:
      • print(remainder)

注意事项

  1. 乘积倒序会存在以0开头的情况;

完整提交代码

/*
# 问题分析
题设要求, 计算给定两个数的乘积, 然后将乘积的各个数字颠倒后输出对应的数值。
要求很明确,算乘积,然后逆转顺序,最后输出,给定的数值在整型范围内,可以直接存储为整型。
 
# 完整描述步骤
1. 获取输入: 正整数A和B
2. 计算乘积product = A * B
3. 将乘积逆转后输出
    - 可以使用取余的方式得到顺序逆转后的数值
    - 也可以转为字符串后从末尾开始输出
 
# 伪代码描述
1. get input: A, B
2. calculate product = A * B;
3. init flag:
    - found_first_non_zero_digit = False
4. while product != 0:
    - remainder = product % 10;
    - if remainder != 0:
        - found_first_non_zero_digit = True
    - if found_first_non_zero_digit:
        - print(remainder)
 
# 注意事项
1. 乘积倒序会存在以0开头的情况;
 
*/
 
# include<stdio.h>
 
int main(){
    int number_1, number_2;
    scanf("%d %d", &number_1, &number_2);
    
    int sum = number_1 * number_2;
    int should_output = 0;
    while (sum != 0){
        int remainder = sum % 10;
        sum /= 10;
        if (remainder != 0){
            should_output = 1;
        }
        if (should_output == 1){
            printf("%d", remainder);
        }
    }
    return 0;
}