第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的整数中奇数的和,使用递归实现。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$