一、单选题
假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是__。
A.char s[5]={“ABCDE”}; puts(s);
B.char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; puts(s);
C.char *s; scanf("%s", s); puts(s);
D.char *s; s=“ABCDE”; puts(s);
A.不能这样定义,应该是6。
B、puts对应的是字符串的输出,不能使用
C、不懂
D、正确
自己:
1.字符串如何定义
2.字符串与字符数组区别
3.puts如何使用
解答
1.
(字符数组)
char cArr[] = {‘I’,‘L’,‘O’,‘V’,‘E’,‘C’};
(字符串数组)
char sArr[] = “ILOVEC”;
char st[]={“C Language”}
记住,这里的 sArr 必须是“char sArr[7]=“ILOVEC””,而不能够是“char sArr[6]=“ILOVEC””。
2.字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的(C语言对字符串常量是按照字符数组来处理的,在内存中开辟了一个字符数组用来存放字符串常量)
字符串
1、char *ps=”C Language”;可以写成char *ps;ps=”C Language”;
字符串数组
数组方式char st[]={”C Language”};不能写成char st[20];St={”C Language”};
字符串(双引号)储存时候,系统会自动在后面加上一个\0,字符数组不用。
用%s时候,引用的是名字而并非字符数组完整名字(printf 与 scanf一样);
注意:要想输入How are you!不能只有一个数组,因为当输入How加空格之后,程序会认为已经结束(\0与空格是一样的)
3.puts(char *p)是专门输出字符串的函数,形参为指针。puts()函数会在你输入的字符串后自动加一个“”作为结束符,所以要考虑越界
**** In the following declarations, the correct assignment expression is __.
int *p[3], a[3];
A.p = a
B.p = &a[0]
C.*p = a
D.p[0] = *a
指针数组:存放元素为指针的数组,所以使每个元素都为地址,而并非让该数组的地址被赋予a的地址。
2-12对于定义 char str[] = “abc\000def\n”(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是:
数组大小:sizeof(数组名)/sizeof(数组类型)。
四、函数题
6-4 在数组中查找指定元素 (15分)
自己
int search( int list[], int n, int x )
{
int i;
for(i=0;i<n;i++)
{
if (list[i]==x)
{
return i;break;
}
else if(i==n-1&&list[i]!=x)
return -1;
}
}
正确
int search( int list[], int n, int x ){
int i;
for(i=0;i<n;i++){
if(list[i]==x){
return i;
}
}
return -1;
}
思想:当有return语句执行时,该函数就已经结束了,不用考虑其他情况。