编程之美01—返回数组中所有元素与一个元素相除的结果
2014-03-17 13:54
295 查看
本文由CC原创总结,如需转载请注明地址:/article/8540013.html 。
最近在读《编程之美--微软技术面试心得》这本书,相当不错的一本书,推荐大家阅读。
总结一下书上比较不错的小题目,分享给大家,希望可以增强思维逻辑和算法能力。
题目: 写一个函数,返回一个数组中所有元素被第一个元素除的结果(输出时不能使用临时变量)。
实现代码如下:
题目很简单,大家都可以想到用一个循环来实现,分别打印出数组的每一个元素与第一个元素的商。
题目要求不能使用临时变量来保存输出的数据,所以就用pArray[i] /= pArray[0]这种形式进行输出了。
但是这样做会出现问题,当我们使用正向遍历的时候,当i=0时,因为是自己除以自己,所以第一次运算的结果会为1,此时pArray[i]也就是pArray[0]会被重新赋值为1,因此后面再进行遍历输出的时候,输出的结果都会是本身了,因为pArray[0]已经非初值了,而是1。大家可以通过divArray这个函数来看以下打印的结果。
那么这个问题该如何解决呢?
可以通过反向遍历来解决,反向遍历数组靠后的元素虽然也会被重新赋值,但是只使用一次,就不会再用到了,而pArray[0]的值一直没有被改变,直到最后一次遍历的时候才会被重新赋值,这种方式遍历不会影响到输出的结果,divArray2函数即实现了题目的输出要求。
程序其实还是有很多问题的,这些问题都是大家平时容易犯的错误,大家可以完善一下。
1.如果给定的数组里面的内容部是写死的, 我们并不知道数组里保存的值,那么我们就必须检测pArray[0]是否为0的情况,如果为0是不能被除的。
2.如果题目没有给定要求输出时不能使用临时变量,那么我们尽量把数组定义成const,避免数组的元素数值被改变引起错误。
3.程序是否有其他问题大家还可以考虑下,写程序一定要严谨,大家发现后欢迎留言交流。
最近在读《编程之美--微软技术面试心得》这本书,相当不错的一本书,推荐大家阅读。
总结一下书上比较不错的小题目,分享给大家,希望可以增强思维逻辑和算法能力。
题目: 写一个函数,返回一个数组中所有元素被第一个元素除的结果(输出时不能使用临时变量)。
实现代码如下:
// // main.cpp // Test_01 // // Created by cc on 14-3-17. // Copyright (c) 2014年 cc. All rights reserved. // 编程之美:P11 写一个函数,返回一个数组中所有元素被第一个元素除的结果 #include <iostream> using namespace std; void divArray(int* pArray, int size); void divArray2(int* pArray, int size); int main(int argc, const char * argv[]) { int size = 10; int pArray[10] = {2, 2, 3, 4 , 5, 6, 7, 8, 9, 10}; //divArray(pArray, size); divArray2(pArray, size); return 0; } /** * @brief 正向遍历int数组,打印数组中每个元素与第一个元素的相除的结果 * * @param pArray 数组 * @param size 数组的长度 */ void divArray(int* pArray, int size){ for (int i = 0; i < size; i++) { pArray[i] /= pArray[0]; cout << "divArray_result=" << pArray[i] << " "; } cout << endl; } /** * @brief 反向遍历int数组,打印数组中每个元素与第一个元素的相除的结果 * * @param pArray 数组 * @param size 数组的长度 */ void divArray2(int* pArray, int size){ for (int i = size-1; i >= 0; i--) { pArray[i] /= pArray[0]; cout << "divArray2_result=" << pArray[i] << " "; } cout << endl; }<span style="color:#ff6666;"> </span>
题目很简单,大家都可以想到用一个循环来实现,分别打印出数组的每一个元素与第一个元素的商。
题目要求不能使用临时变量来保存输出的数据,所以就用pArray[i] /= pArray[0]这种形式进行输出了。
但是这样做会出现问题,当我们使用正向遍历的时候,当i=0时,因为是自己除以自己,所以第一次运算的结果会为1,此时pArray[i]也就是pArray[0]会被重新赋值为1,因此后面再进行遍历输出的时候,输出的结果都会是本身了,因为pArray[0]已经非初值了,而是1。大家可以通过divArray这个函数来看以下打印的结果。
那么这个问题该如何解决呢?
可以通过反向遍历来解决,反向遍历数组靠后的元素虽然也会被重新赋值,但是只使用一次,就不会再用到了,而pArray[0]的值一直没有被改变,直到最后一次遍历的时候才会被重新赋值,这种方式遍历不会影响到输出的结果,divArray2函数即实现了题目的输出要求。
程序其实还是有很多问题的,这些问题都是大家平时容易犯的错误,大家可以完善一下。
1.如果给定的数组里面的内容部是写死的, 我们并不知道数组里保存的值,那么我们就必须检测pArray[0]是否为0的情况,如果为0是不能被除的。
2.如果题目没有给定要求输出时不能使用临时变量,那么我们尽量把数组定义成const,避免数组的元素数值被改变引起错误。
3.程序是否有其他问题大家还可以考虑下,写程序一定要严谨,大家发现后欢迎留言交流。
相关文章推荐
- 写一个函数,返回一个数组中所有元素被第一个元素相除的结果
- 设计函数返回一个数组中所有元素被第一个元素除的结果
- 题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 题目是:写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 笔试题目1:写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 面试题-->写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 编程之美 - 写一个函数,返回数组中所有元素被第一个元素除的结果
- [编程之美]写一个函数,返回一个数组中所有元素被第一个元素除的结果
- [编程之美]写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 一道值得深思的面试题:写一个函数,返回一个数组中所有元素被第一个元素除的结果。
- 编程之美:写一个函数,返回一个数组中所有元素被第一个元素除的结果。
- 返回一个数组中所有元素被第一个元素除的结果
- 编程之美_001写一个函数,返回一个数组中所有元素被第一个元素除的结果
- 返回一个数组中所有元素被第一个元素除的结果
- 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 返回数组中所有元素被第一个元素除的结果
- 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回
- 输入一个整数数组,返回所有元素两两之差绝对值最小的值,O(n)算法
- 读编程之美:第一个编程题,写一个函数,返回数组所有数除于数组第一个数的结果集合