第6章 第2节:函数的调用(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂

| 2份
| 24页
| 94人阅读
| 1人下载

内容正文:

6.2节:函数的调用 一、单项选择题 1.以下代码执行后,输出的结果是( ) #include<stdio.h> int fun(int a, int b) { return a + b; } main() { int x = 2, y = 3; printf("%d", fun(x, fun(y, x))); } A.5 B.7 C.8 D.10 【答案】B 2.以下代码执行后,输出的结果是( ) #include<stdio.h> int f(int x) { return x * x; } int g(int x) { return x + 1; } main() { printf("%d", f(g(2))); } A. 3 B. 4 C. 9 D. 5 【答案】C 3.以下代码执行后,输出的结果是( ) #include<stdio.h> int fun(int x) { if(x <= 1) return 1; else return x * fun(x-1); } main() { printf("%d", fun(4)); } A. 4 B. 10 C. 24 D. 120 【答案】C 4.以下代码执行后,输出的结果是( ) #include<stdio.h> int fun(int x) { return x % 2 == 0 ? x / 2 : 3 * x + 1; } main() { printf("%d", fun(fun(6))); } A. 3 B. 1 C. 10 D. 6 【答案】C 5.以下代码执行后,输出的结果是( ) #include<stdio.h> int f(int x) { return x + 2; } int g(int x) { return x - 1; } main() { printf("%d", f(g(f(3)))); } A. 4 B. 5 C. 6 D. 7 【答案】C 6.以下代码执行后,输出的结果是( ) #include<stdio.h> int fun(int n) { if(n == 0) return 1; else return 2 * fun(n-1); } main() { printf("%d", fun(4)); } A. 4 B. 8 C. 16 D. 32 【答案】C 7.以下关于函数调用的说法,正确的是( ) A. 函数调用必须放在main函数中 B. 函数调用可以作为另一个函数的参数 C. 函数调用不能嵌套 D. 函数调用必须放在函数定义之前 【答案】B 8.以下代码执行后,输出的结果是( ) #include<stdio.h> int fun(int a, int b) { return a * b; } main() { int x = 2, y = 3; printf("%d", fun(x, fun(y, x))); } A. 6 B. 12 C. 18 D. 32 【答案】B 9.以下代码执行后,输出的结果是( ) #include<stdio.h> int f(int x) { return x + 1; } int g(int x) { return x * 2; } main() { printf("%d", g(f(g(2)))); } A. 6 B. 8 C. 10 D. 12 【答案】C 二、程序运行结果题 10.执行以下程序的输出结果是( ) #include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } main() { printf("%d", max(min(5,3), max(2,4))); } 【答案】4 11.执行以下程序的输出结果是( ) #include <stdio.h> int fun(int x) { if(x == 0) return 0; return x % 10 + fun(x / 10); } int main() { printf("%d", fun(12345)); } 【答案】15 12.执行以下程序的输出结果是( ) #include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } main() { printf("%d", max(min(7,5), max(3, min(8,6)))); } 【答案】6 13.执行以下程序的输出结果是( ) #include <stdio.h> int f(int x) { return x > 0 ? x : -x; } main() { int arr[] = {-3, 2, -1, 4, -5}; int sum = 0,i; for(i=0; i<5; i++) { sum += f(arr[i]); } printf("%d", sum); } 【答案】15 14.执行以下程序的输出结果是( ) #include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } main() { int arr[] = {3,5,2,7,4}; int m = arr[0],i; for(i=1; i<5; i++) { m = max(min(m, arr[i]), min(arr[i-1], arr[i])); } printf("%d", m); } 【答案】4 15.执行以下程序的输出结果是( ) #include <stdio.h> int fun(int x) { if(x == 0) return 0; return (x % 10) * (x % 10) + fun(x / 10); } main() { int arr[] = {12, 23, 34, 45, 56}; int sum = 0,i; for(i=0; i<5; i++) { sum += fun(arr[i]); } printf("%d", sum); } 【答案】145 16.执行以下程序的输出结果是( ) #include <stdio.h> int f(int x) { return x % 2 == 0 ? x / 2 : 3 * x + 1; } int g(int x) { int count = 0; while(x != 1) { x = f(x); count++; } return count; } main() { printf("%d", g(7)); } 【答案】16 17.执行以下程序的输出结果是( ) #include <stdio.h> int fun(int x) { if(x <= 1) return x; return fun(x-1) + fun(x-2); } main() { int sum = 0,i; for(i=0; i<6; i++) { if(i % 2 == 0) sum += fun(i); } printf("%d", sum); } 【答案】4 18.执行以下程序的输出结果是( ) #include <stdio.h> int f(int x) { return x > 0 ? x : -x; } int g(int x) { return f(x) - f(x-1); } main() { int arr[] = {-2, 1, -3, 4, -5}; int sum = 0,i; for(i=0; i<5; i++) { sum += g(arr[i]); } printf("%d", sum); } 【答案】-1 19.执行以下程序的输出结果是( ) #include <stdio.h> int f(int x) { return x * 2 + 1; } int g(int x) { return f(x) + f(x+1); } main() { int arr[] = {1,2,3,4,5}; int sum = 0,i; for(i=0; i<5; i++) { if(arr[i] % 2 == 1) sum += g(arr[i]); } printf("%d", sum); } 【答案】48 20.执行以下程序的输出结果是( ) #include <stdio.h> int fun(int x) { if(x == 0) return 0; return x % 10 + fun(x / 10); } main() { int arr[] = {123, 456, 789, 321, 654}; int count = 0,i; for(i=0; i<5; i++) { if(fun(arr[i]) > 15) count++; } printf("%d", count); } 【答案】1 三、编程题 1.编写一个函数,计算两个整数的最大公约数,使用递归实现。 【答案】 #include <stdio.h> int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a % b); } main() { int a, b; scanf("%d%d", &a, &b); printf("%d", gcd(a, b)); } 2.编写一个函数,判断一个整数是否是回文数(正读反读相同),使用递归实现。 【答案】 #include <stdio.h> int reverse(int n, int rev) { if(n == 0) return rev; return reverse(n / 10, rev * 10 + n % 10); } int isPalindrome(int n) { return n == reverse(n, 0); } main() { int n; scanf("%d", &n); printf(isPalindrome(n) ? "Yes" : "No"); } 3.编写一个函数,计算x的n次方(n为非负整数),使用递归实现。 【答案】 #include <stdio.h> double power(double x, int n) { if(n == 0) return 1; return x * power(x, n - 1); } main() { double x; int n; scanf("%lf%d", &x, &n); printf("%.2f", power(x, n)); } 4.编写一个函数,计算1到n的整数中奇数的和,使用递归实现。 【答案】 #include <stdio.h> int oddSum(int n) { if(n == 1) return 1; if(n % 2 == 0) return oddSum(n - 1); return n + oddSum(n - 2); } main() { int n; scanf("%d", &n); printf("%d", oddSum(n)); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 6.2节:函数的调用 一、单项选择题 1.以下代码执行后,输出的结果是( ) #include<stdio.h> int fun(int a, int b) { return a + b; } main() { int x = 2, y = 3; printf("%d", fun(x, fun(y, x))); } A.5 B.7 C.8 D.10 2.以下代码执行后,输出的结果是() #include<stdio.h> int f(int x) { return x * x; } int g(int x) { return x + 1; } main() { printf("%d", f(g(2))); } A. 3 B. 4 C. 9 D. 5 3.以下代码执行后,输出的结果是() #include<stdio.h> int fun(int x) { if(x <= 1) return 1; else return x * fun(x-1); } main() { printf("%d", fun(4)); } A. 4 B. 10 C. 24 D. 120 4.以下代码执行后,输出的结果是() #include<stdio.h> int fun(int x) { return x % 2 == 0 ? x / 2 : 3 * x + 1; } main() { printf("%d", fun(fun(6))); } A. 3 B. 1 C. 10 D. 6 5.以下代码执行后,输出的结果是() #include<stdio.h> int f(int x) { return x + 2; } int g(int x) { return x - 1; } main() { printf("%d", f(g(f(3)))); } A. 4 B. 5 C. 6 D. 7 6.以下代码执行后,输出的结果是() #include<stdio.h> int fun(int n) { if(n == 0) return 1; else return 2 * fun(n-1); } main() { printf("%d", fun(4)); } A. 4 B. 8 C. 16 D. 32 7.以下关于函数调用的说法,正确的是() A. 函数调用必须放在main函数中 B. 函数调用可以作为另一个函数的参数 C. 函数调用不能嵌套 D. 函数调用必须放在函数定义之前 8.以下代码执行后,输出的结果是() #include<stdio.h> int fun(int a, int b) { return a * b; } main() { int x = 2, y = 3; printf("%d", fun(x, fun(y, x))); } A. 6 B. 12 C. 18 D. 32 9.以下代码执行后,输出的结果是() #include<stdio.h> int f(int x) { return x + 1; } int g(int x) { return x * 2; } main() { printf("%d", g(f(g(2)))); } A. 6 B. 8 C. 10 D. 12 二、程序运行结果题 10.执行以下程序的输出结果是() #include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } main() { printf("%d", max(min(5,3), max(2,4))); } 11.执行以下程序的输出结果是() #include <stdio.h> int fun(int x) { if(x == 0) return 0; return x % 10 + fun(x / 10); } int main() { printf("%d", fun(12345)); } 12.执行以下程序的输出结果是() #include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } main() { printf("%d", max(min(7,5), max(3, min(8,6)))); } 13.执行以下程序的输出结果是() #include <stdio.h> int f(int x) { return x > 0 ? x : -x; } main() { int arr[] = {-3, 2, -1, 4, -5}; int sum = 0,i; for(i=0; i<5; i++) { sum += f(arr[i]); } printf("%d", sum); } 14.执行以下程序的输出结果是() #include <stdio.h> int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } main() { int arr[] = {3,5,2,7,4}; int m = arr[0],i; for(i=1; i<5; i++) { m = max(min(m, arr[i]), min(arr[i-1], arr[i])); } printf("%d", m); } 15.执行以下程序的输出结果是() #include <stdio.h> int fun(int x) { if(x == 0) return 0; return (x % 10) * (x % 10) + fun(x / 10); } main() { int arr[] = {12, 23, 34, 45, 56}; int sum = 0,i; for(i=0; i<5; i++) { sum += fun(arr[i]); } printf("%d", sum); } 16.执行以下程序的输出结果是() #include <stdio.h> int f(int x) { return x % 2 == 0 ? x / 2 : 3 * x + 1; } int g(int x) { int count = 0; while(x != 1) { x = f(x); count++; } return count; } main() { printf("%d", g(7)); } 17.执行以下程序的输出结果是() #include <stdio.h> int fun(int x) { if(x <= 1) return x; return fun(x-1) + fun(x-2); } main() { int sum = 0,i; for(i=0; i<6; i++) { if(i % 2 == 0) sum += fun(i); } printf("%d", sum); } 18.执行以下程序的输出结果是() #include <stdio.h> int f(int x) { return x > 0 ? x : -x; } int g(int x) { return f(x) - f(x-1); } main() { int arr[] = {-2, 1, -3, 4, -5}; int sum = 0,i; for(i=0; i<5; i++) { sum += g(arr[i]); } printf("%d", sum); } 19.执行以下程序的输出结果是() #include <stdio.h> int f(int x) { return x * 2 + 1; } int g(int x) { return f(x) + f(x+1); } main() { int arr[] = {1,2,3,4,5}; int sum = 0,i; for(i=0; i<5; i++) { if(arr[i] % 2 == 1) sum += g(arr[i]); } printf("%d", sum); } 20.执行以下程序的输出结果是() #include <stdio.h> int fun(int x) { if(x == 0) return 0; return x % 10 + fun(x / 10); } main() { int arr[] = {123, 456, 789, 321, 654}; int count = 0,i; for(i=0; i<5; i++) { if(fun(arr[i]) > 15) count++; } printf("%d", count); } 三、编程题 1.编写一个函数,计算两个整数的最大公约数,使用递归实现。 2.编写一个函数,判断一个整数是否是回文数(正读反读相同),使用递归实现。 3.编写一个函数,计算x的n次方(n为非负整数),使用递归实现。 4.编写一个函数,计算1到n的整数中奇数的和,使用递归实现。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第6章 第2节:函数的调用(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂-第1页
1
第6章 第2节:函数的调用(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂-第2页
2
第6章 第2节:函数的调用(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。