码迷,mamicode.com
首页 > 编程语言 > 详细

C++测验代码

时间:2014-12-04 00:49:50      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   os   sp   for   on   

 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] = \0;
62     return temp_char;
63 }

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

C++测验代码

标签:style   blog   io   ar   color   os   sp   for   on   

原文地址:http://www.cnblogs.com/a2htray/p/4141785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!