zoukankan      html  css  js  c++  java
  • 面试题之【打印1到最大的N位数】

    题目描述:给定一个数字N,打印从1到最大的N位数。

    看起来像是很简单的问题(虽然实际也不是很难。。。)我们很容易写出这样的代码:

     1 #include<iostream>
     2 #include<cstdio>
     3  
     4 int a[]={9,99,999,9999,99999};
     5 using namespace std;
     6 int main()
     7 {
     8     int N;
     9     cin>>N;
    10     for(int i=1;i<=a[N-1];i++)
    11     {
    12         printf("%d
    ",i);
    13     }
    14  
    15 }

    但是这样还是有不少问题的,说的简单点这个N很大怎么办?你的程序还能运行吗?也就是说在范围不明确的情况下这可能是一个大数问题,大数的最简单解决方式是Java的BigInternet,但是C++里没有这个类(感觉好不符合时代潮流啊,估计快加上了吧)。于是我们要自己用字符串模拟,很简单就跟小学算算术一样,直接上代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 long long a[]={9,99,999,9999,99999,999999,9999999};
     5 char c[100];
     6 void add()
     7 {
     8     c[99]++;
     9     for(int i=99;i>=0;i--)
    10     {
    11         if(c[i]=='9'+1)
    12         {
    13             c[i]='0';
    14             c[i-1]++;
    15         }
    16         //else
    17         //{
    18             //c[i]++;
    19         //}
    20     }
    21  
    22     bool flg=false;
    23     for(int i=0;i<100;i++)
    24     {
    25         if(c[i]!='0')
    26         {
    27             flg=true;
    28             printf("%c",c[i]);
    29         }
    30         else
    31         {
    32             if(flg)
    33             {
    34                 printf("0");
    35             }
    36         }
    37     }
    38     printf("
    ");
    39 }
    40  
    41 void print(int N)
    42 {
    43     memset(c,'0',sizeof(c));
    44     for(int i=1;i<=N;i++)
    45     {
    46         add();
    47     }
    48 }
    49 using namespace std;
    50 int main()
    51 {
    52     int N;
    53     cin>>N;
    54     print(a[N-1]);
    55     return 0;
    56 }

    顺便说几句对面试的这类题的一点想法吧,其实不管是笔试面试都会有这么一些考查程序稳定性的题目,也即是说给你那么个看似很简单的问题,看似是随意就能写出代码,但实际上就各种陷阱。这个只能是我们自己小心了,考虑要各种全面,能问的情况就尽量问清楚,对数据量、异常什么的要一百二十个小心。也是提醒自己小心吧。。。

  • 相关阅读:
    Tcp连接和断开
    centos7服务器监控之nmon
    Jmeter之命令行生成HTML报告
    Centos7安装配置----1配置网络
    Wireshark抓包笔录--之指定IP地址筛选捕获结果
    关于如何刷新清除某个特定网站的缓存---基于Chrome浏览器
    关于如何清除某个特定网站的缓存---基于Chrome浏览器
    Linux 查看端口机服务
    XSS学习笔记
    安全测试学习笔记
  • 原文地址:https://www.cnblogs.com/MrLJC/p/3658480.html
Copyright © 2011-2022 走看看