实验7-4指针与字符数组
【实验目的】
1. 掌握字符指针和字符型变量之间的关系
2. 掌握字符指针与字符串的关系
3. 掌握字符指针与字符数组之间的关系
【课后练习】
一、选择题
1. 下面不正确的字符串赋值或初始化语句是 。
A. char * str; str = ”string”;
B. char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’};
C. char str[10]; str=”string”;
D. char str1[]=”string”, str2[20]; strcpy(str2, str1);
2. 已知char b[5], *p=b; 则正确的赋值语句是 。
A. b=”abcd”; B. *b=”abcd”; C. p=”abcd”; D. *p=”abcd”;
3. 若已有声明char s[20]=”programming”, *ps=s; 则不能引用字母’o’的表达式的是 。
A. ps+2 B. s[2] C. ps[2] D. ps+=2; *ps
4. 已知: char c[8]=”beijing”, *s=c; int i; 则下面的输出语句中错误的是 。
A. printf(“%s\n”, s); B. printf(“%s\n”, *s);
C. for(i=0; i<7; i++) D. for(i=0; i<7; i++)
printf(“%c”, c[i]); printf(“%c”, s[i]);
5. 已知char s[10], *p=s; 则在下列语句中,错误的语句是 。
A. p=s+5; B. s=p+s; C. s[2]=p[4]; D. *p=s[0];
6. 下面判断正确的是 。
A.char * a=”china”; 等价于char *a; *a=”china”;
B.char str[10]={“china”};等价于char str[10]; str[]={“china”};
C.char *s =”china”; 等价于char *s; s=”china”;
D.char c[4]=”abc”, d[4]=”abc”; 等价于char c[4]=d[4]=”abc”;
7. 下面能够正确进行字符串赋值操作的是: 。
A.char s[5]={”ABCDE”};
B.char s[5]={‘A’, ‘B’, ‘C’, ‘D’ , ‘E’};c++求字符串长度
C.char *s ; s=”ABCDE”;
D.char *s; scanf(“%s”, s);
8. 设有下面的程序段:char s[]=”china”; char *p; p=s;
则下列叙述正确的是 。
A. s和p完全相同
B. 数组s中的内容和指针变量p中的内容相等
C. s数组长度和p所指向的字符串长度相等
D. *p与s[0]相等
9. 以下正确的程序段是 。
A. char str[20]; scanf(“%s”, &str);
B. char *p; scanf(“%s”, p);
C. char str[20]; scanf(“%s”, &str[2]);
D. char str[20], *p=str; scanf(“%s”, p[2]);
10. 以下正确的程序段是 。
A. char str1[]=”12345”, str2[]=”abcdef”; strcpy(str1, str2);
B. char str[10], *st=”abcde”; strcat(str, st);
C. char str[10]=” ”, *st=”abcde”; strcat(str, st);
D. char *st1=”12345”, *st2=”abcde”; strcat(st1, st2);
11. 以下程序段的运行结果是 。
A.LANGUAGE B. language C. LANG D. langUAGE
12. 若有语句char s1[]=”string”, s2[8], *s3, *s4=”string2”; 则对库函数strcpy的正确调用是 。
A. strcpy(s1,"string2");
B. strcpy(s4,"string1");
C. strcpy(s3,"string1");
D. strcpy(s2,s1);
13. 若有声明语句如下,则不正确的叙述是 。
char a[]= “It is mine”;
char *p = “It is mine”;
A. a+1表示的是字符t的地址
B. p指向另外的字符串时,字符串的长度不受限制
C. p变量中存放的地址值可以改变
D. a中只能存放10个字符
14. 已知函数定义如下,函数func的功能是 。
func(char *s1, char *s2)
{while(*s2++ = *s1++);}
A. 串复制 B. 求串长 C. 串比较 D. 串反向
15. 若有声明char * language[]={“FORTRAN”, “BASIC”, “PASCAL”, “JAVA”, “C#”};则表达式language[2]的值是 。
A. 一个字符 B. 一个地址
C.一个字符串 D. 一个不定值
16. 若有声明char * language[]={“FORTRAN”, “BASIC”, “PASCAL”, “JAVA”, “C#”};则以下描述中错误的是 。
A. language+2表示字符串“PASCAL”的首地址
B. *language[2]的值是字母P
C. language是一个字符型指针数组,它包含5个元素,每个元素都是一个指向字符串常量的指针
D. language[2] 表示字符串“PASCAL”的首地址
17. 若有声明char * language[]={“FORTRAN”, “BASIC”, “PASCAL”, “JAVA”, “C#”};则表达式*language[1]>*language[3]比较的是 。
A. 字符F和字符P B. 字符串”BASIC”和字符串”JAVA”
C.字符B和字符J D. 字符串” FORTRAN”和字符串” PASCAL”
二、阅读程序,写出运行结果
以下程序段的运行结果是 bcdABCD 。
三、阅读程序,写出运行结果
bcd
cd
cd
d
以下程序段的运行结果是 。
四、阅读程序,写出运行结果
以下程序段的运行结果是 xyabcABC 。
五、阅读程序,写出运行结果
以下程序段的运行结果是 Porm 。
六、阅读程序,写出运行结果
Basic
asic
sic
ic
c
以下程序段的运行结果是 。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论