• C++测验代码


     1 /*
     2     返回字符串前n位和返回整数前n位
     3 */
     4 
     5 #include <iostream>
     6 
     7 unsigned long left(unsigned long num, int n);
     8 char * left(char * str, int n);
     9 
    10 using namespace std;
    11 
    12 int main()
    13 {
    14     unsigned long  num;
    15     int n;
    16     cout << "请输入一个整数:";
    17     cin >> num;
    18     cout << "请输入要截取的位数:";
    19     cin >> n;
    20     cout << "" << n << "位为" << left(num, n) << endl;
    21 
    22     char * str = new char(20);
    23     cout << "请输入一个字符串:";
    24     cin >> str;
    25     cout << "请输入要截取的位数:";
    26     cin >> n;
    27     cout << "" << n << "位为" << left(str, n) << endl;
    28 
    29     //delete[] str;
    30 
    31     cin.get();
    32     cin.get();
    33 }
    34 
    35 
    36 unsigned long left(unsigned long num, int n)
    37 {
    38     unsigned long len = 1;    //表示这个数一共有几位
    39     unsigned long temp_num = num;
    40     while (temp_num /= 10)
    41     {
    42         len++;
    43     }
    44     unsigned long cut_num_len = len - (unsigned long(n) >= len ? len : unsigned long(n));    //当n小于整数的长度时,直接取回原来的整数
    45     while (cut_num_len--)
    46     {
    47         num /= 10;
    48     }
    49     return num;
    50 }
    51 
    52 char * left(char * str, int n)
    53 {
    54     int len = strlen(str);
    55     n = n >= len ? len : n;
    56     char * temp_char = new char(n + 1);
    57 
    58     for (int i = 0; i < n; i++) {
    59         *(temp_char + i) = *(str + i);
    60     }
    61     temp_char[n] = '';
    62     return temp_char;
    63 }

    大家看下,有一个问题,当我取消//delete[] str;注释后,程序会报错,不是鼓励如果是用new自成的指针最好要delete掉的吗?求正确答案。

  • 相关阅读:
    程序数据集算地数据库
    使用属性升级mybank
    第一个C#程序
    CSS3动画
    定位网页元素的解析
    CSS3中的浮动
    CSS中的盒子模型
    (十三)mybatis 整合 ehcache
    (十二)mybatis 查询缓存
    (十一)延迟加载
  • 原文地址:https://www.cnblogs.com/a2htray/p/4141785.html
Copyright © 2020-2023  润新知