导言:
前三篇文章都是编程题,
今天的五道则都是选择/填空题
当然,还是全部都是基础知识。
我在第二题处对于sizeof和strlen进行了对比,大家有兴趣可以看看
1.
题干:
定义了一维 int 型数组 a[10] 后,下面错误的引用是:
A. a[0] = 1;
B. a[0] = 5*2;
C. a[10] = 2;
D. a[1] = a[2] * a[0];
答案:
C
解析:
数组是相同类型的一段连续的空间,下标是从0开始的,比如:int array[N]
下标的范围为[0,N),其中N位置不能存储有效元素
2.
题干:
下面代码的结果是:( )
#include <stdio.h> int main() { int arr[] = {1,2,(3,4),5}; printf("%d\n", sizeof(arr)); return 0; }
答案:
16
解析:
对于int arr[] = {1,2,(3,4),5}数组,里面总共有4个元素,(3,4)为逗号表达式,取后者,因此数组中元素分别为:1,2,4,5
而sizeof(arr)求的是整个数组所占空间的大小,即:4sizeof(int)=44=16
此处还是多说一句吧:
sizeof这个操作符可以用于任何类型的变量,它的结果是这个类型在当前操作系统下的所占字节的大小
而strlen这个操作符只能用于字符串,它的作用是用于测量字符串的元素个数,它遇到\0就会停止,当遇不到时,程序就会报错,其结果是随机值,比如很经典的“烫烫烫烫”
sizeof同样可以求数组的元素个数,格式如下:
sizeof(arr)/sizeof(arr[0]),sizeof是包含\0在内的
其实sizeof和strlen根本就没关系,初学者可能会在此处产生混淆,所以在此做出解释
3.
题干:
根据下面递归函数:调用函数Fun(2),返回值是多少( )
int Fun(int n) { if(n==5) return 2; else return 2*Fun(n+1); }
答案:
16
解析:
代码运行过程如下:
Fun(2)--->返回16 return 2*Fun(3) 2*8=16 |__Fun(3):8 return 2*Fun(4) 2*4=8 |__Fun(4):4 return 2*Fun(5) 2*2=4 |__Fun(5):2 return 2
4.
题干:
能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是:( )
A. return 这二个数
B. 形参用数组
C. 形参用二个指针
D. 用二个全局变量
答案:
A
解析:
这题选项可能对于初学者来说有点拿不准,
但其实记住一个知识点就可以了:
一个函数只能返回一个结果
5.
题干:
函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是:
答案:
4
解析:
本题涉及到的知识点是:逗号表达式:
逗号表达式,即用逗号隔开的多个表达式,
这些表达式,从左向右依次执行,最后一个表达式的结果,为逗号表达式的结果
从这道题来看:
exec((vl,v2),(v3,v4),v5,v6) 总共有四个参数
(v1, v2)属于第一个实参,逗号表达式,真实的参数时v2
(v3,v4)属于第二个实参,逗号表达式,真实的参数是v4
v5属于第三个实参
v6属于第四个实参