2008年下半年软件考试因故推迟了,这未尝不是一件好事,对于那些准备还不够充分的考生来说,现在正是查漏补缺的好时机,本站为您整理了考前练习题,希望对您有所帮助,祝您考出好成绩!
1.若有下列说明,则数值为4的表达式是( )
int a[12]={ l,2,3,4,5,6,7,8,9,10,11,12 };
char c=’a’,d, g;
①a[g-c]
②a[4]
③a[’d’-’c’]
④a[’d’-c]
2.设有定义:"char s[12]={"string"};" 则printf("%d\n",strlen(s));的输出是( )
① 6
② 7
③11
④ 12
【解】数组元素的下标自0开始顺序编号,值为4的元素是a[3]。所以只有下标表达式的值为3的才是正确的。下标表达式g-C中的的变量g和c的值是还未被设定的,其值不确定。a[4]的值为5,下标为4是不对的。’d’-’c’的值为1,a[l]的值是2,所以也是不对的。变量c的值为’a’ ,’d’-c=3,所以正确解答是④。
【解】在C语言中,字符串是指在有效字符之后有字符率结束标记符的字符列,并约定字符串的长度是指字符率中有效字符个数,不包括字符串的结束标记符。存放于字符数组s中的字符串是“string”,该字符串的长度为6,所以输出该字符串的长度应是6。正确的解答是①。 3COME文档编辑
3.下面各语句中,能正确进行赋字符串操作的语句是( )
①char s[5] ={"ABCDE"};
②char s[5] ={’A’,’B’,’C’,’D’,’E’};
③ char *s;s="ABCDE";
④ char *s;scanf("%", s);
4.若有以下定义,则不能表示a数组元素的表达式是()
int a[10]={1,2,3,4,5,6,7,8,9,1o},*p=a;
①*p
② a[10]
③*a
④ a[p-a]
【解】字符串最终存储于字符数组中,存储字符串的字符数组可以是程序主动引入的(定义或动态分配),也可以是字符串常量,由系统分配。其中字符数组用字符串初始化就是字符串存储于由程序引入的字符数组的例子。给字符指针赋字符串则是系统自动分配字符率存储空间的例子。给字符指针赋字符串并不是将一个长长的字符串存于字符指针变量中,而是将字符串常量存储于常量区,并将存储这个字符串的首字节地址赋给指针变量,让指针变量指向字符率常量的首字符。对于以字符串作为字符数组初值的情况,要求字符数组足够的大,能存得下字符串常量。这里有一个特别的规定,若数组的大小少于存储字符串有效字符的字节个数,系统将报告错误;当字符数组的大小只能存储字符串的有效字符,而不能存储字符率结束标记符时,则存储于字符数组中的内容是字符序列,因没有存储字符率结束标记符,存储的内容就不是字符串。如代码char a[5]="ABCDE"。另外,给字符数组元素逐一赋字符初值,并在字符初值中没有字符串结束标记符,则存于字符数组中的内容也不是字符率。如代码 char s[5]={’A’,’B’,’C’,’D’,’E’}。特别要注意当字符指针还未指向某个字符数组的元素时,不可以通过字符指针输入字符串。如代码char *s;scanf("%s",s)。若写成char *str;scanf("%s",&str)更是错误的了。由于C语言规定数组不能相互赋值,所以只能将字符串常量赋给某字符指针。如代码char *s;s="ABCDE"是正确的。实际上,字符率"ABCDE" 被存储于常量区中,向指针变量赋的是字符指针,让s指向其中的字符’A’。所以解答是③。
【解】上述代码定义了有10个元素的整型数组。,和定义指针变量p,并让p指向数组元素a[0]。所以代码*p是引用 a[0]。由于数组a只有10个元素,最后一个元素是a[9],表达式a[10]是错误的。数组名a可以作为a的首元素的指针,表达式*a就是a[0] ,是对数组a的首元素a[0]的引用。指针p的值是a,表达式p-a。的值是0,所以a[p-a]就是a[0]。所以解答是②。
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/