内容正文:
《编程语言基础-C语言》高等教育出版社(第5版)
第六章 函数 章节过关卷(二)(解析版)
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、以下程序的输出结果是( )
int f(int a, int b) {
return (a > b) ? a : b;
}
main() {
int x = 3, y = 5, z = 2;
printf("%d", f(f(x, y), z));
}
A. 2
B. 3
C. 5
D. 编译错误
答案:C
解析:内层f(x,y)返回5,外层f(5,2)返回5,因此输出5。
2、以下程序的输出结果是( )
void fun(int a, int b) {
a = a + b;
b = a - b;
a = a - b;
}
main() {
int x = 8, y = 3;
fun(x, y);
printf("%d,%d", x, y);
}
A. 8,3
B. 3,8
C. 8,8
D. 3,3
答案:A
解析:值传递,形参交换不影响实参,x和y不变,输出8,3。
3、以下程序的输出结果是( )
int f(int n) {
static int s = 1;
s *= n;
return s;
}
main() {
printf("%d", f(2));
printf("%d", f(3));
}
A. 26
B. 16
C. 212
D. 26
答案:A
解析:static局部变量s保持上次结果。第一次调用f(2):s=1*2=2,输出2;第二次调用f(3):s=2*3=6,输出6,最终输出“26”。
4、以下程序的输出结果是( )
int fun(int x) {
if (x == 0) return 0;
return x + fun(x - 1);
}
main() {
printf("%d", fun(5));
}
A. 10
B. 15
C. 5
D. 0
答案:B
解析:递归函数计算0+1+2+3+4+5=15。
5、以下程序的输出结果是( )
void change(int a[]) {
a[0] = a[0] + a[1];
a[1] = a[0] - a[1];
a[0] = a[0] - a[1];
}
main() {
int a[2] = {5, 9};
change(a);
printf("%d,%d", a[0], a[1]);
}
A. 5,9
B. 9,5
C. 14,5
D. 5,14
答案:B
解析:数组名作参数传递地址,change函数实现了交换a[0]和a[1]的值。初始a[0]=5,a[1]=9,经过交换后a[0]=9,a[1]=5。
6、以下程序的功能是计算数组元素之和,划线处应填( )
int sum(int arr[], int n) {
int s = 0;
for (int i = 0; i < n; i++)
________;
return s;
}
A. s += arr[i]
B. s = s + i
C. s += i
D. s = arr[i]
答案:A
解析:累加数组元素。
7、以下程序的输出结果是( )
void fun(int *p) {
*p = *p + 5;
}
main() {
int a = 10;
fun(&a);
printf("%d", a);
}
A. 10
B. 15
C. 5
D. 编译错误
答案:B
解析:通过指针传递地址,修改了实参a的值,a变为15。
8、以下程序的输出结果是( )
int f(int a, int b) {
return (a + b) * (a - b);
}
main() {
int x = 8, y = 3;
printf("%d", f(x, y));
}
A. 55
B. 45
C. 35
D. 25
答案:A
解析:f(8,3)=(8+3)*(8-3)=11*5=55。
9、以下程序用于求斐波那契数列的第n项(n从1开始),划线处应填( )
int fib(int n) {
if (n == 1 || n == 2) return 1;
return ________;
}
A. fib(n-1) + fib(n-2)
B. fib(n) + fib(n-1)
C. fib(n-1) * fib(n-2)
D. fib(n-1) - fib(n-2)
答案:A
解析:斐波那契数列递归定义:第n项等于前两项之和。
10、以下程序的输出结果是( )
int fun(int x) {
int y = x;
static int z = 0;
z += y;
return z;
}
main() {
printf("%d", fun(2));
printf("%d", fun(3));
}
A. 23
B. 25
C. 35
D. 32
答案:B
解析:第一次调用fun(2):z=0+2=2,输出2;第二次调用fun(3):z=2+3=5,输出5。最终输出“25”。
11、以下程序的输出结果是( )
void fun(int a[], int n) {
for (int i = 0; i < n / 2; i++) {
int t = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = t;
}
}
main() {
int a[5] = {1, 2, 3, 4, 5};
fun(a, 5);
printf("%d", a[2]);
}
A. 1
B. 2
C. 3
D. 5
答案:C
解析:fun函数实现数组逆序,逆序后数组变为5,4,3,2,1,a[2]=3。
12、以下关于函数的叙述,正确的是( )
A. 函数的形参可以是常量
B. 函数的返回值类型必须是int
C. 函数可以没有返回值
D. 函数定义时,参数列表不能为空
答案:C
解析:形参必须是变量;返回值类型可以是void;函数可以无参。
13、以下程序的输出结果是( )
int global = 10;
void fun() {
int global = 20;
printf("%d ", global);
}
main() {
printf("%d ", global);
fun();
printf("%d", global);
}
A. 10 20 10
B. 10 20 20
C. 20 10 10
D. 20 20 20
答案:A
解析:main中输出全局变量10;fun中输出局部变量20;返回main后输出全局变量10。
14、以下程序的功能是求数组a中的最大值,划线处应填( )
int max(int a[], int n) {
int m = a[0];
for (int i = 1; i < n; i++)
if (________) m = a[i];
return m;
}
A. a[i] < m
B. a[i] > m
C. a[i] == m
D. i > m
答案:B
解析:如果当前元素大于最大值m,则更新m。
15、以下程序的输出结果是( )
void swap(int *x, int *y) {
int t = *x;
*x = *y;
*y = t;
}
main() {
int a = 3, b = 5;
swap(&a, &b);
printf("%d,%d", a, b);
}
A. 3,5
B. 5,3
C. 3,3
D. 5,5
答案:B
解析:通过指针传递地址,实现了交换,a和b的值互换。
16、以下程序的输出结果是( )
int f(int n) {
if (n == 0) return 1;
return n * f(n - 1);
}
main() {
printf("%d", f(4));
}
A. 6
B. 24
C. 120
D. 1
答案:B
解析:递归计算阶乘,4! = 24。
17、以下程序的输出结果是( )
void fun(int a[], int n) {
for (int i = 0; i < n; i++)
a[i] = a[i] * 2;
}
main() {
int a[3] = {1, 2, 3};
fun(a, 3);
printf("%d", a[1]);
}
A. 2
B. 4
C. 6
D. 1
答案:B
解析:数组传递地址,每个元素乘以2,a[1]原为2变为4。
18、以下关于递归函数的说法,错误的是( )
A. 递归函数必须有终止条件
B. 递归函数调用时,每次调用都会在栈中分配空间
C. 递归函数的效率通常低于非递归函数
D. 所有递归函数都可以改写成非递归形式,但效率一定更高
答案:D
解析:递归可改写为非递归(循环),但非递归不一定效率更高。D说法绝对化,错误。
19、以下程序的输出结果是( )
int counter() {
static int count = 0;
count++;
return count;
}
main() {
printf("%d", counter());
printf("%d", counter());
printf("%d", counter());
}
A. 111
B. 123
C. 112
D. 122
答案:B
解析:静态局部变量 count 只在第一次调用时初始化为0,之后保持其值。第一次调用 counter():count 变为1,输出1;第二次调用:count 变为2,输出2;第三次调用:count 变为3,输出3。最终输出“123”。
20、以下程序的功能是判断一个整数是否为素数,划线处应填( )
int isprime(int n) {
if (n < 2) return 0;
for (int i = 2; i <= n / 2; i++)
if (________) return 0;
return 1;
}
A. n % i == 0
B. n % i != 0
C. i % n == 0
D. n / i == 0
答案:A
解析:如果n能被i整除,则n不是素数。
21、以下程序的输出结果是( )
int f(int a, int b) {
return (a > b) ? a : b;
}
int g(int a, int b) {
return (a < b) ? a : b;
}
main() {
int x = 7, y = 2, z = 5;
printf("%d", f(g(x, y), g(y, z)));
}
A. 2
B. 5
C. 7
D. 3
答案:B
解析:函数的嵌套调用,先求g(x,y)=2,g(y,z)=2,再求f(2,2)=2。
22、以下程序的输出结果是( )
void fun(int a[], int n, int *max, int *min) {
*max = *min = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > *max) *max = a[i];
if (a[i] < *min) *min = a[i];
}
}
main() {
int a[5] = {3, 1, 4, 1, 5};
int mx, mn;
fun(a, 5, &mx, &mn);
printf("%d,%d", mx, mn);
}
A. 5,1
B. 3,1
C. 5,3
D. 4,1
答案:A
解析:函数通过指针返回最大值和最小值,最大值为5,最小值为1。
23、以下程序的输出结果是( )
int fun(int n) {
int s = 0;
while (n) {
s += n % 10;
n /= 10;
}
return s;
}
main() {
printf("%d", fun(1234));
}
A. 1
B. 10
C. 4
D. 1234
答案:B
解析:函数计算各位数字之和,1+2+3+4=10。
24、以下程序的功能是求字符串的长度,划线处应填( )
int strlen(char *s) {
int len = 0;
while (________) {
len++;
s++;
}
return len;
}
A. *s != '\0'
B. s != '\0'
C. *s == '\0'
D. s
答案:A
解析:指针s指向字符,判断当前字符是否为结束符。
25、以下程序的输出结果是( )
void fun(int a[], int n) {
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (a[i] > a[j]) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
main() {
int a[4] = {4, 2, 3, 1};
fun(a, 4);
printf("%d", a[2]);
}
A. 1
B. 2
C. 3
D. 4
答案:C
解析:fun函数实现冒泡排序(升序),排序后数组为{1,2,3,4},a[2]=3。
二、多选题(本题共5小题,每题4分,共20分)
1、以下关于C语言函数的说法,正确的有( )
A. 函数可以没有返回值
B. 函数可以没有参数
C. 函数可以返回数组
D. 函数可以递归调用
答案:ABD
解析:函数可以无返回值;可以无参;不能返回数组,但可以返回指针;可以递归调用。
2、以下关于参数传递的说法,正确的有( )
A. 普通变量作为实参时,形参的改变不影响实参
B. 数组名作为实参时,形参的改变会影响实参
C. 指针作为实参时,形参的改变会影响实参
D. 结构体变量作为实参时,形参的改变不影响实参
答案:ABC
解析:普通变量值传递;数组名传递地址;指针传递地址;结构体变量值传递(除非用指针)。
3、以下关于变量的说法,正确的有( )
A. 局部变量在函数调用结束后被释放
B. 静态局部变量在函数调用结束后仍保留其值
C. 全局变量的作用域是整个源程序文件
D. register变量存储在CPU寄存器中,不能取地址
答案:ABCD
解析:所有选项均正确。
4、以下关于递归函数的叙述,正确的有( )
A. 递归函数必须有终止条件
B. 递归函数调用时,系统使用栈来管理返回地址和局部变量
C. 递归函数的效率通常低于循环实现
D. 递归函数可以解决所有循环能解决的问题
答案:ABC
解析:递归必须有终止条件;递归使用栈;递归效率通常低于循环;
5、以下关于数组作为函数参数的说法,正确的有( )
A. 形参可以写成 int a[] 或 int *a
B. 实参传递的是数组的首地址
C. 在被调函数中,可以使用 sizeof(a) 得到数组的长度
D. 在被调函数中,对形参数组的修改会影响实参数组
答案:ABD
解析:形参可写为数组形式或指针形式;实参传递首地址;sizeof(a)得到指针大小,不是数组长度;修改形参数组即修改实参数组。
三、判断题(本题共10小题,每题2分,共20分)
1、C语言中,函数可以嵌套定义。( )
答案:×
解析:不能嵌套定义,但可以嵌套调用。
2、函数的形参属于局部变量,其作用域仅限于函数内部。( )
答案:√
解析:局部变量的作用范围是本函数内有效。
3、全局变量定义时若未初始化,系统自动赋值为0。( )
答案:√
解析:全局变量和静态变量未初始化默认为0。
4、在函数内定义的静态局部变量,其值在函数调用结束后会消失。( )
答案:×
解析:静态局部变量的值在函数调用结束后保留,下次调用时继续使用。
5、函数的返回值类型由return语句中表达式的类型决定。( )
答案:×
解析:由函数定义时指定的返回值类型决定。
6、使用指针作为函数参数可以实现“双向传递”数据。( )
答案:√
解析:通过指针,被调函数可以修改实参的值。
7、递归函数比非递归函数更节省内存空间。( )
答案:×
解析:递归消耗更多栈空间。
8、数组名作为函数参数时,在被调函数中使用sizeof可以得到整个数组的字节数。( )
答案:×
解析:数组名退化为指针,sizeof得到指针大小。
9、一个函数中可以有多个return语句。( )
答案:√
解析:可以,但只有一个会被执行。
10、函数原型中的参数名可以省略,但参数类型不能省略。( )
答案:√
解析:如int fun(int, int);。
四、填空题(本题共5小题,每题2分,共10分)
1、以下程序段执行后,输出结果为( )。
int f(int n) {
if (n == 1) return 1;
return f(n - 1) + 2;
}
main() {
printf("%d", f(5));
}
答案:9
解析:f(5)=f(4)+2,f(4)=f(3)+2,f(3)=f(2)+2,f(2)=f(1)+2=1+2=3,然后带入返回:f(3)=3+2=5,f(4)=5+2=7,f(5)=7+2=9。即通项公式为2n-1,f(5)=9。
2、以下程序段的功能是计算数组a中所有元素的乘积,请填空( )。
int product(int a[], int n) {
int p = 1;
for (int i = 0; i < n; i++)
________;
return p;
}
答案:p *= a[i] 或 p = p * a[i]
解析:累乘。
3、以下程序段执行后,输出结果为 ( )。
int fun(int x,int y) {
static int count = 0;
count++;
return x*y+count;
}
main() {
printf("%d ", fun(2,3));
printf("%d ", fun(2,3));
答案:7 8
解析:fun函数中的变量count为static型,第一次调用fun(2,3),count的值为1,返回值为7;第二次调用fun(2,3),count的值为2,返回值为8。
4、以下程序的功能是:找出1000以内的所有完数(一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6=1+2+3。),请填空( )。
int wanshu(int n)
{
int t, sum;
for(t=1,sum=0;t<n;t++)
if(_________) sum=sum+t;
if(sum==n) return 1;
else return 0;
}
main( )
{
int x;
printf("1000以内的完数有:
");
for(x=1;x<=1000;x++)
if(wanshu(x)==1) printf("%d\t",x);
}
答案:n%t==0
解析:判断t是否是n的因数。
5、以下程序段执行后,输出结果为( )。
int fun(int a, int b) {
return (a > b) ? a : b;
}
main() {
int x = 4, y = 7, z = 2;
printf("%d", fun(fun(x, y), z))
}
答案:7
解析:内层fun(x,y)=7,外层fun(7,2)=7。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《编程语言基础-C语言》高等教育出版社(第5版)
第六章 函数 章节过关卷(二)(原卷版)
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、以下程序的输出结果是( )
int f(int a, int b) {
return (a > b) ? a : b;
}
main() {
int x = 3, y = 5, z = 2;
printf("%d", f(f(x, y), z));
}
A. 2
B. 3
C. 5
D. 编译错误
2、以下程序的输出结果是( )
void fun(int a, int b) {
a = a + b;
b = a - b;
a = a - b;
}
main() {
int x = 8, y = 3;
fun(x, y);
printf("%d,%d", x, y);
}
A. 8,3
B. 3,8
C. 8,8
D. 3,3
3、以下程序的输出结果是( )
int f(int n) {
static int s = 1;
s *= n;
return s;
}
main() {
printf("%d", f(2));
printf("%d", f(3));
}
A. 26
B. 16
C. 212
D. 26
4、以下程序的输出结果是( )
int fun(int x) {
if (x == 0) return 0;
return x + fun(x - 1);
}
main() {
printf("%d", fun(5));
}
A. 10
B. 15
C. 5
D. 0
5、以下程序的输出结果是( )
void change(int a[]) {
a[0] = a[0] + a[1];
a[1] = a[0] - a[1];
a[0] = a[0] - a[1];
}
main() {
int a[2] = {5, 9};
change(a);
printf("%d,%d", a[0], a[1]);
}
A. 5,9
B. 9,5
C. 14,5
D. 5,14
6、以下程序的功能是计算数组元素之和,划线处应填( )
int sum(int arr[], int n) {
int s = 0;
for (int i = 0; i < n; i++)
________;
return s;
}
A. s += arr[i]
B. s = s + i
C. s += i
D. s = arr[i]
7、以下程序的输出结果是( )
void fun(int *p) {
*p = *p + 5;
}
main() {
int a = 10;
fun(&a);
printf("%d", a);
}
A. 10
B. 15
C. 5
D. 编译错误
8、以下程序的输出结果是( )
int f(int a, int b) {
return (a + b) * (a - b);
}
main() {
int x = 8, y = 3;
printf("%d", f(x, y));
}
A. 55
B. 45
C. 35
D. 25
9、以下程序用于求斐波那契数列的第n项(n从1开始),划线处应填( )
int fib(int n) {
if (n == 1 || n == 2) return 1;
return ________;
}
A. fib(n-1) + fib(n-2)
B. fib(n) + fib(n-1)
C. fib(n-1) * fib(n-2)
D. fib(n-1) - fib(n-2)
10、以下程序的输出结果是( )
int fun(int x) {
int y = x;
static int z = 0;
z += y;
return z;
}
main() {
printf("%d", fun(2));
printf("%d", fun(3));
}
A. 23
B. 25
C. 35
D. 32
11、以下程序的输出结果是( )
void fun(int a[], int n) {
for (int i = 0; i < n / 2; i++) {
int t = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = t;
}
}
main() {
int a[5] = {1, 2, 3, 4, 5};
fun(a, 5);
printf("%d", a[2]);
}
A. 1
B. 2
C. 3
D. 5
12、以下关于函数的叙述,正确的是( )
A. 函数的形参可以是常量
B. 函数的返回值类型必须是int
C. 函数可以没有返回值
D. 函数定义时,参数列表不能为空
13、以下程序的输出结果是( )
int global = 10;
void fun() {
int global = 20;
printf("%d ", global);
}
main() {
printf("%d ", global);
fun();
printf("%d", global);
}
A. 10 20 10
B. 10 20 20
C. 20 10 10
D. 20 20 20
14、以下程序的功能是求数组a中的最大值,划线处应填( )
int max(int a[], int n) {
int m = a[0];
for (int i = 1; i < n; i++)
if (________) m = a[i];
return m;
}
A. a[i] < m
B. a[i] > m
C. a[i] == m
D. i > m
15、以下程序的输出结果是( )
void swap(int *x, int *y) {
int t = *x;
*x = *y;
*y = t;
}
main() {
int a = 3, b = 5;
swap(&a, &b);
printf("%d,%d", a, b);
}
A. 3,5
B. 5,3
C. 3,3
D. 5,5
16、以下程序的输出结果是( )
int f(int n) {
if (n == 0) return 1;
return n * f(n - 1);
}
main() {
printf("%d", f(4));
}
A. 6
B. 24
C. 120
D. 1
17、以下程序的输出结果是( )
void fun(int a[], int n) {
for (int i = 0; i < n; i++)
a[i] = a[i] * 2;
}
main() {
int a[3] = {1, 2, 3};
fun(a, 3);
printf("%d", a[1]);
}
A. 2
B. 4
C. 6
D. 1
18、以下关于递归函数的说法,错误的是( )
A. 递归函数必须有终止条件
B. 递归函数调用时,每次调用都会在栈中分配空间
C. 递归函数的效率通常低于非递归函数
D. 所有递归函数都可以改写成非递归形式,但效率一定更高
19、以下程序的输出结果是( )
int counter() {
static int count = 0;
count++;
return count;
}
main() {
printf("%d", counter());
printf("%d", counter());
printf("%d", counter());
}
A. 111
B. 123
C. 112
D. 122
20、以下程序的功能是判断一个整数是否为素数,划线处应填( )
int isprime(int n) {
if (n < 2) return 0;
for (int i = 2; i <= n / 2; i++)
if (________) return 0;
return 1;
}
A. n % i == 0
B. n % i != 0
C. i % n == 0
D. n / i == 0
21、以下程序的输出结果是( )
int f(int a, int b) {
return (a > b) ? a : b;
}
int g(int a, int b) {
return (a < b) ? a : b;
}
main() {
int x = 7, y = 2, z = 5;
printf("%d", f(g(x, y), g(y, z)));
}
A. 2
B. 5
C. 7
D. 3
22、以下程序的输出结果是( )
void fun(int a[], int n, int *max, int *min) {
*max = *min = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > *max) *max = a[i];
if (a[i] < *min) *min = a[i];
}
}
main() {
int a[5] = {3, 1, 4, 1, 5};
int mx, mn;
fun(a, 5, &mx, &mn);
printf("%d,%d", mx, mn);
}
A. 5,1
B. 3,1
C. 5,3
D. 4,1
23、以下程序的输出结果是( )
int fun(int n) {
int s = 0;
while (n) {
s += n % 10;
n /= 10;
}
return s;
}
main() {
printf("%d", fun(1234));
}
A. 1
B. 10
C. 4
D. 1234
24、以下程序的功能是求字符串的长度,划线处应填( )
int strlen(char *s) {
int len = 0;
while (________) {
len++;
s++;
}
return len;
}
A. *s != '\0'
B. s != '\0'
C. *s == '\0'
D. s
25、以下程序的输出结果是( )
void fun(int a[], int n) {
for (int i = 0; i < n - 1; i++)
for (int j = i + 1; j < n; j++)
if (a[i] > a[j]) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
main() {
int a[4] = {4, 2, 3, 1};
fun(a, 4);
printf("%d", a[2]);
}
A. 1
B. 2
C. 3
D. 4
二、多选题(本题共5小题,每题4分,共20分)
1、以下关于C语言函数的说法,正确的有( )
A. 函数可以没有返回值
B. 函数可以没有参数
C. 函数可以返回数组
D. 函数可以递归调用
2、以下关于参数传递的说法,正确的有( )
A. 普通变量作为实参时,形参的改变不影响实参
B. 数组名作为实参时,形参的改变会影响实参
C. 指针作为实参时,形参的改变会影响实参
D. 结构体变量作为实参时,形参的改变不影响实参
3、以下关于变量的说法,正确的有( )
A. 局部变量在函数调用结束后被释放
B. 静态局部变量在函数调用结束后仍保留其值
C. 全局变量的作用域是整个源程序文件
D. register变量存储在CPU寄存器中,不能取地址
4、以下关于递归函数的叙述,正确的有( )
A. 递归函数必须有终止条件
B. 递归函数调用时,系统使用栈来管理返回地址和局部变量
C. 递归函数的效率通常低于循环实现
D. 递归函数可以解决所有循环能解决的问题
5、以下关于数组作为函数参数的说法,正确的有( )
A. 形参可以写成 int a[] 或 int *a
B. 实参传递的是数组的首地址
C. 在被调函数中,可以使用 sizeof(a) 得到数组的长度
D. 在被调函数中,对形参数组的修改会影响实参数组
三、判断题(本题共10小题,每题2分,共20分)
1、C语言中,函数可以嵌套定义。( )
2、函数的形参属于局部变量,其作用域仅限于函数内部。( )
3、全局变量定义时若未初始化,系统自动赋值为0。( )
4、在函数内定义的静态局部变量,其值在函数调用结束后会消失。( )
5、函数的返回值类型由return语句中表达式的类型决定。( )
6、使用指针作为函数参数可以实现“双向传递”数据。( )
7、递归函数比非递归函数更节省内存空间。( )
8、数组名作为函数参数时,在被调函数中使用sizeof可以得到整个数组的字节数。( )
9、一个函数中可以有多个return语句。( )
10、函数原型中的参数名可以省略,但参数类型不能省略。( )
四、填空题(本题共5小题,每题2分,共10分)
1、以下程序段执行后,输出结果为( )。
int f(int n) {
if (n == 1) return 1;
return f(n - 1) + 2;
}
main() {
printf("%d", f(5));
}
2、以下程序段的功能是计算数组a中所有元素的乘积,请填空( )。
int product(int a[], int n) {
int p = 1;
for (int i = 0; i < n; i++)
________;
return p;
}
3、以下程序段执行后,输出结果为 ( )。
int fun(int x,int y) {
static int count = 0;
count++;
return x*y+count;
}
main() {
printf("%d ", fun(2,3));
printf("%d ", fun(2,3));
4、以下程序的功能是:找出1000以内的所有完数(一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6=1+2+3。),请填空( )。
int wanshu(int n)
{
int t, sum;
for(t=1,sum=0;t<n;t++)
if(_________) sum=sum+t;
if(sum==n) return 1;
else return 0;
}
main( )
{
int x;
printf("1000以内的完数有:
");
for(x=1;x<=1000;x++)
if(wanshu(x)==1) printf("%d\t",x);
}
5、以下程序段执行后,输出结果为( )。
int fun(int a, int b) {
return (a > b) ? a : b;
}
main() {
int x = 4, y = 7, z = 2;
printf("%d", fun(fun(x, y), z))
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$