none
define和return问题 RRS feed

  • 问题

  • 1。

    int mystery(int a,int b){
     if(b==1)
      return a;
     else
      return a+mystery(a,b-1);  //这个是什么意思?
    }

    2。

    define width 10

    int width=10;

    上面的代码其实有什么分别?什么时候要用define比较适合?

    3。

    if((c=cin.get())!=EOF){   //这个是什么意思?

     cout << c;
     }

    4。

    for(i=0;i<2;i++)

       cout << i;

    for的执行次序是从i=0,i<2,然后是i++还是cout<< i 先??

    5.

    vois bubble(int *,const int)    //这个是什么意思?

    • 已编辑 ckjason 2012年2月8日 6:48
    2012年2月8日 3:40

答案

  • ckjason你好!

    1-] mystery是一个递归函数,其目的是要计算b个a相加的值,即a*b。递归是一项非常重要的编程技巧,它使用函数调用其自身。如果你想知道更多关于递归的知识,请参考这个连接: http://msdn.microsoft.com/zh-cn/library/z3dk2cc3(v=vs.90).aspx.

    2-] 我也认为第一行应该是 #define width 10,这是一种简单的宏定义。第二行是一个带有初值的变量声明。
    #define是C语言中提供的宏定义命令。宏定义有两个主要的优点,方便程序修改和提高程序的运行效率。宏定义和变量定义的含义不同。只做字符替换,不分配内存空间。

    3-] cin.get()返回输入流中的下一个字符。在C++中,cin是一个流输入操作。不接受任何参数的cin.get()主要是用于舍弃输入流中的不需要的字符,或者舍弃回车。

    4-] for循环的一把形式为:for(<初始化>; <条件表达式>; <增量>) 。
    初始化总是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后 按什么方式变化。这三个部分之间用";"分开。
    例子中,先给 " i " 赋初值0, 判断 " i " 是否小于2, 若是则执行语句输入 i 的值, 之后值增加1。再重新判断, 直到条件为假, 即i>=2时, 结束循环。
    所以,for的执行次序是从i=0,i<2,然后是cout<< i。

    5-] 应该是void bubble(int *,const int) 。我也认为应该是一个函数声明。
    在一个函数声明中,需要给出函数的名字(bubble),函数的返回值类型(void),以及在调用这个函数的时候必须要提供的参数个数(2个)及参数类型(int* 和 const int型)。

    另外,如果你有多个问题,请你多开几个帖子,以保证每个帖子一个问题。这样才能更方便的解决问题。

    希望我的回复对你有所帮助。
    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 ckjason 2012年2月10日 7:48
    2012年2月9日 5:20

全部回复

  • 1. int mystery(int a,int b)函数的功能就是b个a的值,即a * b.
    2. 应该是#define width 10 , C++里尽量用const
    3. cin.get()从缓冲中一个字符一个字符读取,只有当输入流中没有字符,cin.get()才会返回EOF。
    4. for的基本语法,先i=0; 然后判断i<2;满足执行cout<<i;然后i++;之后再判断i<2;是否满足.这个你Debug下F10单步执行就很清楚了。
    5. 应该函数申明吧

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 ckjason 2012年2月10日 7:48
    • 取消答案标记 ckjason 2012年2月10日 7:48
    2012年2月8日 11:18
    版主
  • ckjason你好!

    1-] mystery是一个递归函数,其目的是要计算b个a相加的值,即a*b。递归是一项非常重要的编程技巧,它使用函数调用其自身。如果你想知道更多关于递归的知识,请参考这个连接: http://msdn.microsoft.com/zh-cn/library/z3dk2cc3(v=vs.90).aspx.

    2-] 我也认为第一行应该是 #define width 10,这是一种简单的宏定义。第二行是一个带有初值的变量声明。
    #define是C语言中提供的宏定义命令。宏定义有两个主要的优点,方便程序修改和提高程序的运行效率。宏定义和变量定义的含义不同。只做字符替换,不分配内存空间。

    3-] cin.get()返回输入流中的下一个字符。在C++中,cin是一个流输入操作。不接受任何参数的cin.get()主要是用于舍弃输入流中的不需要的字符,或者舍弃回车。

    4-] for循环的一把形式为:for(<初始化>; <条件表达式>; <增量>) 。
    初始化总是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后 按什么方式变化。这三个部分之间用";"分开。
    例子中,先给 " i " 赋初值0, 判断 " i " 是否小于2, 若是则执行语句输入 i 的值, 之后值增加1。再重新判断, 直到条件为假, 即i>=2时, 结束循环。
    所以,for的执行次序是从i=0,i<2,然后是cout<< i。

    5-] 应该是void bubble(int *,const int) 。我也认为应该是一个函数声明。
    在一个函数声明中,需要给出函数的名字(bubble),函数的返回值类型(void),以及在调用这个函数的时候必须要提供的参数个数(2个)及参数类型(int* 和 const int型)。

    另外,如果你有多个问题,请你多开几个帖子,以保证每个帖子一个问题。这样才能更方便的解决问题。

    希望我的回复对你有所帮助。
    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 ckjason 2012年2月10日 7:48
    2012年2月9日 5:20