会计考友 发表于 2012-8-2 09:08:23

2012年软件水平考试软件设计师课后练习题(8)

1.下面各语句中,能正确进行赋字符串操作的语句是( )
  ①char s ={"ABCDE"};
  ②char s ={’A’,’B’,’C’,’D’,’E’};
  ③ char *s;s="ABCDE";
  ④ char *s;scanf("%", s);
  6.若有以下界说,则不能暗示a数组元素的表达式是()
  int a={1,2,3,4,5,6,7,8,9,1o},*p=a;
  ①*p  ② a  ③*a  ④ a
  【解】字符串最终存储于字符数组中,存储字符串的字符数组可所以轨范自动惹人的(界说或动态分配),也可所以字符串常量,由系统分配。其中字符数组用字符串初始化就是字符串存储于由轨范惹人的字符数组的例子。给字符指针赋字符串则是系统自动分配字符率存储空间的例子。给字符指针赋字符串并不是将一个长长的字符串存于字符指针变量中,而是将字符串常量存储于常量区,并将存储这个字符串的首字节地址赋给指针变量,让指针变量指向字符率常量的首字符。对于以字符串作为字符数组初值的情形,要求字符数组足够的大,能存得下字符串常量。这里有一个出格的划定,若数组的巨细少于存储字符串有用字符的字节个数,系统将陈述错误;当字符数组的巨细只能存储字符串的有用字符,而不能存储字符率竣事标识表记标帜符时,则存储于字符数组中的内容是字符序列,因没有存储字符率竣事标识表记标帜符,存储的内容就不是字符串。如代码char a="ABCDE"。此外,给字符数组元素一一赋字符初值,并在字符初值中没有字符串竣事标识表记标帜符,则存于字符数组中的内容也不是字符率。如代码 char s={’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。所以代码*p是引用 a。因为数组a只有10个元素,最后一个元素是a,表达式a是错误的。数组名a可以作为a的首元素的指针,表达式*a就是a ,是对数组a的首元素a的引用。指针p的值是a,表达式p-a。的值是0,所以a就是a。所以解答是②。
页: [1]
查看完整版本: 2012年软件水平考试软件设计师课后练习题(8)