若有下面的程序段: char s[]="china"; char *p; p=s; 则下列叙述正确的是________

本文通过一个具体的C语言程序段,详细解析了字符数组与指向字符串的指针之间的区别,阐述了如何正确理解s数组与p指针的关系,包括它们的内容、长度及等价性的辨析。

若有下面的程序段: char s[]=“china”; char *p; p=s; 则下列叙述正确的是________
A)s和p完全相同 B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等 D)﹡p与s[0]相等
答:答案:D
A:s是字符数组,p是指向字符串的指针
B:显然数组s中的内容和指针变量p中的内容不相等,应该换一种说法“数组s中的内容和指针变量p所指向的字符串的内容相等”
C:s数组的长度为6(包含结束符’\0’),p所指向的字符串长度为5
D:*p=‘c’,s[0]=‘c’
追问
p所指向的字符串长度为啥是5呢?它不识别’\0’吗?
追答
'\0’不计入字符串总长度

用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为( )。 A. 4 5 3 2 1 6 B. 4 3 2 1 5 6 C. 3 2 1 4 5 6 D. 2 1 3 4 5 6 分数 1 作者 张泳 单位 浙大城市学院 下列语句定义px为指向int类型变量x的指针,正确的是()。 A. int x, *px = x; B. int x, *px = &x; C. int *px = &x, x; D. int x, px = x; 分数 1 作者 张泳 单位 浙大城市学院 已有定义int k=2; int *ptr1, *ptr2; 且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。 A. k = *ptr1 + *ptr2; B. ptr2 = k; C. ptr1 = ptr2; D. k = *ptr1 *(*ptr2); 分数 1 作者 张泳 单位 浙大城市学院 若有以下说明,且0<=i<10,则对数组元素的错误引用是()。 int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a, i; A. *(a+i) B. a[p-a+i] C. p+i D. *(&a[i]) 分数 1 作者 张泳 单位 浙大城市学院 下列程序的输出结果是( )。 # include <stdio.h> int main(void) { int a[10] = {0,1,2,3,4,5,6,7,8,9}, *p = a+3; printf("%d", p[2]); return 0; } A. 3 B. 4 C. 5 D. 非法 分数 1 作者 张泳 单位 浙大城市学院 下列程序的输出结果是()。 int main(void) { int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, *p = a+3; printf(“%d”, *++p); return 0; } A. 3 B. 4 C. a[4]的地址 D. 非法 分数 1 作者 张泳 单位 浙大城市学院 下列程序的输出结果是()。 void f(int *p) { *p = 5; } int main(void) { int x = 10, *px = &x; f(px); printf("%d#", (*px)++); printf("%d\n", x); return 0; } A. 5#6 B. 6#6 C. 10#11 D. 11#11 分数 1 作者 张泳 单位 浙大城市学院 以下程序的运行结果是( )。 #include <stdio.h> void sub(int x, int y, int *z) { *z = y-x; } int main() { int a,b,c; sub(10, 5, &a); sub(7, a, &b); sub(a, b, &c); printf("%d,%d,%d\n", a, b, c); return 0; } A. 5,2,3 B. -5,-12,-7 C. -5,-12,-17 D. 5,-2,-7 分数 1 作者 陶煜波 单位 浙江大学 下列选择中正确的语句是()。 A. char s[8]; s = { "Hello" }; B. char s[8]; s = "Hello"; C. char *s; s = { "Hello" }; D. char *s; s = "Hello"; 分数 1 作者 张泳 单位 浙大城市学院 对于以下程序段,则叙述正确的是( )。 char s[ ]="china"; char *p; p = s; A. s和p完全相同 B. 数组s中的内容和指针变量p中的内容相等 C. 数组s的长度和p所指向的字符串长度相等 D. *p与s[0]相等 分数 1 作者 陶煜波 单位 浙江大学 与while (*s++ = *t++) ;等价的是()。 A. do { *s = *t++; } while (*s++); B. while (*t) *s++ = *t++; C. do { *s++ = *t++; } while (*t); D. while (*s) *s++ = *t++; 分数 1 作者 张泳 单位 浙大城市学院 下面程序段的运行结果是()。 char s[ ] = "language", *p = s; while( *p++ != 'u') { printf("%c", *p – 'a' + 'A'); } A. LANGUAGE B. ANGU C. LANGU D. LANG 分数 1 作者 张泳 单位 浙大城市学院 以下程序的输出结果是( )。 int main(void) { char a[ ] = "programming", b[ ] = "language"; char *p1 = a, *p2 = b; int i; for(i = 0; i < 7; i++){ if( *(p1+i) == *(p2+i) ){ printf("%c", *(p1+i)); } } return 0; } A. gm B. rg C. or D. ga 分数 1 作者 张泳 单位 浙大城市学院 以下程序的输出结果是( )。 int fun(char s[ ]) { int n = 0; while ( *s <= '9' && *s >= '0'){ n = 10 * n + *s - '0'; s++; } return(n); } int main( ) { char s[10]={'6', '1', '*' , '4', '*', '9', '*', '0', '*'}; printf("%d\n", fun(s)); return 0; } A. 9 B. 61490 C. 61 D. 5
最新发布
11-29
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值