zoukankan      html  css  js  c++  java
  • 华为笔试——C++消重输出

    题目:消重输出

    题目介绍:

    输入一个正整数,给出消除重复数字以后最大的整数,注意需要考虑长整数。

    例:

    输入:988274320

    输出:9874320

    题目分析:这个结果的实现需要两个步骤:消重和排序。第一步,消重。先用string 和char 将数字分别储存进char 数组,然后从左边第一个字符开始逐个向右边比较,如果有相同的字符就将左边的置换成 ‘a’ ,这样多次次循环过后988274320就变成了9a8a74320,因为是向右比较且只变换左边字符,因此a 不会重复。第二步,排序。就是循环比较,大的字符向右靠即可。

    代码:

     1 #include <iostream>
     2 #include <string>
     3 #include <math.h>
     4 #include <conio.h>
     5 using namespace std;
     6 int main()
     7 {
     8     int size;
     9     cout << "请输入位数:" << endl;
    10     cin >> size;
    11     int i = 0,j = 0,n = 0;
    12     int count = 0;
    13     long result = 0;
    14     char c;
    15     char *p = new char[size];
    16     cout << "请输入" << size << "位正整数" << endl;
    17     while ((c = _getch()) != '
    ')
    18     {
    19         if (c >= '0'&&c <= '9')
    20         {
    21             p[count] = c;
    22             cout << c;
    23             count++;//字符形式存储在数组里
    24         }
    25     }
    26     for (i = 0; i < size; i++)
    27     {
    28         for (j = 0; j < size; j++)
    29         {
    30             if (p[i] == p[j] && i < j)
    31             {
    32                 p[i] = 'a';//重复的数字,左边的变成a
    33                 n++;//每有一个重复的,n++
    34             }
    35         }
    36     }
    37     cout << endl;
    38     for (i = 0; i < size;i++)
    39     {
    40         cout << p[i];
    41     }
    42     cout << endl;
    43     for (i = 0; i < size; i++)
    44     {
    45         for (j = 0; j < size; j++)
    46         {
    47             if (p[i] < p[j] && i < j)
    48             {
    49                 count = p[i];
    50                 p[i] = p[j];
    51                 p[j] = count;//数字大的排前面
    52             }
    53         }
    54     }
    55     cout << n << endl;
    56     for (i = 0; i < size; i++)
    57     {
    58         cout << p[i];
    59     }
    60     cout << endl;
    61     for (i = 0; i < size; i++)
    62     {
    63         if (i >= n)//输出除了a之外的数字
    64         {
    65             cout << p[i];
    66             result += (int(p[i])-48) * int(pow(10, size - i - 1));//转换成正整数
    67         }
    68     }
    69     cout << endl << result << endl;
    70     return 0;
    71 }

    结果:

    其中输入位数这一步可用string 与 char 的strcpy 省去。

  • 相关阅读:
    我的git笔记
    我的 Sublime Text 2 笔记
    在Windows系统配置Jekyll
    纯CSS3打造七巧板
    JavaScript原型之路
    基于Grunt构建一个JavaScript库
    How React Works (一)首次渲染
    hadoop2.4 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    pyinstaller打包python源程序访问hive
    hadoop balance均衡datanode存储不起作用问题分析
  • 原文地址:https://www.cnblogs.com/ljy1227476113/p/9610800.html
Copyright © 2011-2022 走看看