10.17复习
文章目录
- 前言
- 一、选择题
- 1.第一题
- 2.第二题
- 3.第三题
- 4.第四题
- 5.第五题
- 二、编程题
- 1.第一题
- 2.第二题
- 总结
前言
一、选择题
1.第一题
1、以下对C语言函数的有关描述中,正确的有【多选】( )
A: 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体
B: 函数的实参和形参可以是相同的名字
C: 在main()中定义的变量都可以在其它被调函数中直接使用
D: 在C程序中,函数调用不能出现在表达式语句中
答案解析:
正确答案:AB
主函数中定义的局部变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系,C错误;当函数有返回值时,可以出现在表达式中,D错误
2.第二题
2、在C语言中,以下正确的说法是( )
A: 实参和与其对应的形参各占用独立的存储单元
B: 实参和与其对应的形参共占用一个存储单元
C: 只有当实参和与其对应的形参同名时才共占用存储单元
D: 形参是虚拟的,不占用存储单元
答案解析:
正确答案:A
形参是实参的一份临时拷贝,分别占用不同的内存空间
3.第三题
3、在上下文及头文件均正常的情况下,下列代码的输出是( )(注: print 已经声明过)
}
int main()
{
char str[] = "Geneius";
print(str);
return 0;
}
print(char *s)
{
if(*s)
{
print(++s);
printf("%c", *s);
}
}
A: suiene B: neius C: run-time error D: suieneG
答案解析:
正确答案:A
代码实现了递归倒序打印字符串的功能,但是++s使得s的值发生了变化,回不到’G’的位置上,故而没有打印’G’
4.第四题
4、对于函数 void f(int x); ,下面调用正确的是( )
A: int y=f(9); B: f(9); C: f(f(9)); D: x=f();
答案解析:
答案解析:
正确答案:B
函数f是没有返回值的,不能给int类型变量赋值,故A错误,同时需要一个整型参数,C中f(9)不能作为f的参数,也是错的,D选项没有传参,也不能接收返回值也是错误的。
5.第五题
5、给定 fun 函数如下,那么 fun(10) 的输出结果是( )
int fun(int x)
{
return (x==1) ? 1 : (x + fun(x-1));
}
A: 0 B: 10 C: 55 D: 3628800
答案解析:
正确答案:C
代码是一个递归函数,等差数列求和
二、编程题
1.第一题
#include <stdio.h>
int main()
{
char str[1000];
int i=0;
int j=0;
while(gets(str))
{
int sz = strlen(str);
for(i=0;i<sz-1;i++)
{
for(j=0;j<sz-i-1;j++)
{
if(str[j]>str[j+1])
{
char ch=str[j];
str[j]=str[j+1];
str[j+1]=ch;
}
}
}
printf("%s\n", str);
}
return 0;
}
2.第二题
int pivotIndex(int* nums, int numsSize)
{
int i = 0, j = 0;
for (i = 0; i < numsSize; i++)
{
int sub1 = 0;
int sub2 = 0;
for (j = 0; j < numsSize; j++)
{
if (j < i)
{
sub1 += nums[j];
}
else if (j > i)
{
sub2 += nums[j];
}
}
if (sub1 == sub2)
{
return i;
}
}
return -1;
}
总结
编程部分主要是对冒泡排序的应用
选择题主要是对递归的掌握