关于函数调用说法:
函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝
函数可以传址调用,传址调用的时候,可以通过形参操作实参
.函数可以嵌套调用,但是不能嵌套定义
函数可以没有返回值,如果没有返回值也就不需要待会任何结果
形参和实参在不同的函数中,即不同的作用域,因此形参和实参可以同名
函数必须保证先声明后使用,函数的定义可以放在任意位置,函数的声明必须放在函数的使用之前。
函数的声明只是告诉编译器函数返回值类型、函数名字以及函数所需要的参数,函数定义才是说明函数是怎么 实现的。
传参时不论是按照值还是指针方式传递,形参拿到的都是实参的一份拷贝。
形参是在函数调用的时候才实例化,才开辟内存空间。
如果是按照值的方式传递,形参和实参各自有各自的空间,改变形参不能改变外部的实参。
函数调用如果采用传值调用,改变形参不影响实参,因为形参和实参是两个不同的变量。
因为形参和实参是两个不同的变量。
main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。
能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )
A.return B.形参用数组C.形参用二个指针D.用二个全局变量这二个数 。
A。错误,一个函数只能返回一个结果。
B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去
C:正确,形参如果用指针,最终指向的是外部的实参,在函数中对指向指向内容进行修改,改变的就是外部的实参
D:正确,全局变量不受函数的结束而结束,在函数中改变全局变量,主调函数中可以看到改变之后的结果
递归的方法求阶乘:
long long Fac(int N) { if(N <= 1) return 1; return Fac(N-1)*N; }
递归方法求一个数的每位数字之和:
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
/* 思路: n n < 10 DigiSum(n) = DibiSum(n/10)+n%10 // 前n-1位之和+第N位 */ int DigitSum(int n)//1729 { if(n>9) return DigitSum(n/10)+n%10; else return n; }
递归求n的k次方:
/* 思路: n n < 10 DigiSum(n) = DibiSum(n/10)+n%10 // 前n-1位之和+第N位 */ int DigitSum(int n)//1729 { if(n>9) return DigitSum(n/10)+n%10; else return n; }
打印乘法表:
void chengfabiao() { int n = 0; cin >> n; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= i; ++j) { printf("%d*%d=%2d ", j, i, j * i); } cout << endl; } } void chengfabiao() { int n = 0; cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { cout << i << "x" << j << "=" << i * j << " "; } cout << endl; } }