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

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

时间: 2024-10-16 06:03:50

C++测验代码的相关文章

《设计模式之美》 &lt;02&gt;评判代码质量好坏的维度

如何评价代码质量的高低? 实际上,咱们平时嘴中常说的“好”和“烂”,是对代码质量的一种描述.“好”笼统地表示代码质量高,“烂”笼统地表示代码质量低.对于代码质量的描述,除了“好”“烂”这样比较简单粗暴的描述方式之外,我们也经常会听到很多其他的描述方式.这些描述方法语义更丰富.更专业.更细化.我搜集整理了一下,罗列在了下面.这些几乎涵盖我们所能听到的描述代码质量的所有常用词汇,你可以看一看. 灵活性(flexibility).可扩展性(extensibility).可维护性(maintainabi

关于C++ 输入输出流状态控制

关于这一点呢,是在做<C++primer >关联容器map的一道习题中发现这个蛋疼的问题的. 问题是这样的: 我想要将while循环条件设置为cin,这样就可以不断等待输入,普通的程序可以直接按下ctrl+z中止输入,麻烦在于这里有两层这样的while循环,而ctrl+z会一次性全部退出,导致无法实现想要的目的(在每个外层循环内部,可以输入有限量可中止的内层循环变量,也就是说第一次按下ctrl+z只停止内层的循环,等待进行下一次外层循环,然后再进入内层循环……) 1 #include<&

iOS 大型项目开发漫谈

标题有些吓人请不要惧怕,不过这的确不是扫盲贴,需要必定的iOS开发根底.在我多年的码农生计中绝大部分时刻都是做的小项目,大一些的可能也即是百万行代码的姿态,跟Windows体系几千万行源码比几乎即是小巫见大巫.不过,一个iOS项目的源码稀有百万行算蛮大了.我想说的是,人老是会生长,会担任更大的职责接受更大的应战,终有一天安排会有主要任务交给你.不过软件开发不是一朝一夕,也不会有多么的轰轰烈烈,更多的是平平中很多的细节处理.做大型项目未必就需要多么深邃的技能,或许即是细节的科学处理与规范的管理.

软件需求和PM

对于软件而言,他所存在的意义就是解决问题,然而人们的需求五花八门,我们需要很准确的了解到软件具体的需求,也就是说团队需要找到软件的利益相关者,了解和挖掘他们对软件的需求,需求不仅来自外界,还可以来自软件企业本身,也就是软件企业=软件+商业模式.另外就是分析和定义需求,这是指从各个方面获取的需求进行规整.验证需求,这里需要跟利益相关者沟通,确定他们对这些需求的认知.在软件产品的生命周期中管理需求.对软件的需求还可以划分成以下几部分:对产品功能性的需求.对产品开发过程的需求.非功能性需求.综合需求.

两种方式实现自己的可重入锁

本篇文章将介绍两种自己动手实现可重入锁的方法. 我们都知道JDK中提供了一个类ReentrantLock,利用这个类我们可以实现一个可重入锁,这种锁相对于synchronized来说是一种轻量级锁. 重入锁的概念 重入锁实际上指的就是一个线程在没有释放锁的情况下,可以多次进入加锁的代码块. public void a() { lock2.lock(); System.out.println("a"); b(); lock2.unlock(); } public void b() { l

错误和问题解决的成本

问题描写叙述 错误 数据收集 根本原因 版本号   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的下面情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 全部的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(只在先进先出/后进先出) 5.这些症状的不论什么一个意味着 MMT-CQL不匹配

来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧

博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:来试试这个来自静态代码分析工具PVS Studio提供C++的小测验吧.

开学第二周Java课堂测验暨简易出题代码

代码可以实现的功能包括实现两位数的四则运算,并同时保证乘法的结果不超过100,除法的结果为整数,减法的结果为正. 除此以外,用户还可以设置出题的数量,以及每一行的题目数目. 源码为:2901583663 package first; import java.util.Scanner;import java.util.Random;public class one {static Scanner sc = new Scanner(System.in); public static void mai

测验5: 函数和代码复用 (第5周)-程序题

题1:随机密码生成 描述 补充编程模板中代码,完成如下功能:???????????????????????????????????????????????????????????????????????????????????????????????? 以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字.每个密码单独一行输出.???????????????????????????????????????????????????????????????