内容:
(1)编写一个函数,并实现函数的调用。
(2)将简单算法编写为函数以供调用(递归函数)。
目标:
(1)掌握C++的函数定义、函数声明与函数调用。
(2)掌握递归函数,并比较递归算法与迭代(递推)算法。
题目:
(1)写出计算(输出)Fibonacci数列前n项的函数,并在主函数main()中进行调用测试。
int Fibonacci_1(int n) { if (n <= 2) { return 1; } return Fibonacci_1(n - 1) + Fibonacci_1(n - 2); } int Fibonacci_2(int n) { if (n == 1 || n == 2) { return 1; } int a = 1; int b = 1; int c = 2; for (int i = 3; i <= n; i++) { c = a + b; a = b; b = c; } return c; }
(2)分别以迭代(递推)算法和递归算法,写出计算n!的函数。并通过在主函数main()中调用以上函数,计算1!+2!+3!+…+20!。
//递推:从已知到未知 //递归:从未知到已知 int Fact(int n) { int a = 1; for (int i = 1; i <= n; i++) { a *= i; } return a; } int Factorial(int n) { if (n == 1) { return 1; } return n * Factorial(n -1); } int main() { int res = 0; int n = 0; cin >> n; for (int i = 1; i <= n; i++) { res += Factorial(i); //res += Fact(i); } cout << res << endl; return 0; }4、C++指针程序
内容:
(1)运用指针编写程序。
(2)运用指针,编写一个函数。
目标:
(1)掌握指针的概念,会定义和使用指针变量。
(2)掌握数组与指针、指针与函数之间的关系。
(3)能正确使用指针处理相关问题。
题目:
(1)运用指针,求一个矩阵所有靠外侧的元素值之和。
实际内存分布
int main() { int a[4][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {1,2,3} }; int* p = (int*)a; int sum = 0; int n = 4; //行 int m = 3; //列 for (int i = 0; i < n; i++) { if (i == 0) //第一行 { for (int j = 0; j < m; j++) { sum += *(p + j); } //cout << "1" << sum << endl; continue; } if (i == n - 1) //最后一行 { for (int j = 0; j < m; j++) { sum += *(p + (n -1) * m + j); } cout << "2" << sum << endl; break; } //其余的行只需要首元素和末尾元素 sum += *(p + i * m) + *(p + i * m + m - 1); //cout << "3" << sum << endl; } cout << sum << endl; return 0; } ------------- int cal(int *a,int m,int n) { int i,j,sum=0; for (i = 0; i < n; i++) sum += a[i] + a[(m-1)*n+i]; for (j = 1; j < m-1; j++) sum += a[j*n+0] + a[j*n+n-1]; return sum; }
(2)运用指针,编写一个函数,以实现两个字符串的比较。
//想等返回1,不等返回0 int str_cmp(char* str1, char* str2) { int flag = 0; //cout << strlen(str1) << endl; if (strlen(str1) != strlen(str2)) { return flag; } while ((*str1 != '') && (*str2 != '')) { if (*str1++ != *str2++) { flag = 0; break; } else { flag = 1; } } return flag; } //一般,还能优化
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)