C语言作业
单项选择题1.若已定义chars[10];则下面表达式中不表示s[1]的地址的是()。A.s+1B.s++C.&s[0]+1D.&s[1]2.有定义inta[]={2,5...
单项选择题
1. 若已定义char s[10] ;则下面表达式中不表示s[1]的地址的是( )。
A.s+1 B.s++ C.&s[0] +1 D.&s[1]
2. 有定义 int a[ ]={2,5,6,},*p=a; 则*(p+1)所代表的数组元素是( )。
A.a[3] B.a[2] C.a[1] D.a[0]
3.已知有定义int a[5] ; a数组中最后一个元素的地址可表示为( )。
A.&a+4 B.a+5 C.a+4 D.&a[5]
4. 若有定义int x[ ]={8,7,6,5,4,3,2},*s; s=x+3;则表达式*(s+2)的值为( )。
A.3 B. 4 C. 5 D. 6
5. 有定义char s[ ]="China",*p=s;则执行printf ("%s",p+1);的输出结果为( )。
A.无输出 B.China C.hina D.ina
6. 已有定义 int a[10],*p; 则正确的赋值语句是( )。
A. p=100; B.p=a[5]; C.p=a[2]+2; D.p=a+2;
7. 若有定义int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是 ( )
A.*p B.a[1] C.*a D.a[10]
8. 设有定义int x[6]={2,4,6,8,5,7},*p=x, i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是( )。
A.for(i=0;i<6;i++) printf("%2d",*(p++)); B.for(i=0;i<6;i++) printf("%2d",*(p+i));
C.for(i=0;i<6;i++) printf("%2d",*p++); D.for(i=0;i<6;i++) printf("%2d",(*p)++);
9. 若有定义char *s1="12345",*s2="1234"; 则printf("%d\n",strlen(strcpy(s1,s2))); 的输出结果是 ( )。
A.4 B.5 C.9 D.10
10. 若定义int a=511,*b=&a; 则printf("%d\n",*b); 的输出结果为( ) 。
A.无确定值 B. a的地址 C. 512 D. 511 展开
1. 若已定义char s[10] ;则下面表达式中不表示s[1]的地址的是( )。
A.s+1 B.s++ C.&s[0] +1 D.&s[1]
2. 有定义 int a[ ]={2,5,6,},*p=a; 则*(p+1)所代表的数组元素是( )。
A.a[3] B.a[2] C.a[1] D.a[0]
3.已知有定义int a[5] ; a数组中最后一个元素的地址可表示为( )。
A.&a+4 B.a+5 C.a+4 D.&a[5]
4. 若有定义int x[ ]={8,7,6,5,4,3,2},*s; s=x+3;则表达式*(s+2)的值为( )。
A.3 B. 4 C. 5 D. 6
5. 有定义char s[ ]="China",*p=s;则执行printf ("%s",p+1);的输出结果为( )。
A.无输出 B.China C.hina D.ina
6. 已有定义 int a[10],*p; 则正确的赋值语句是( )。
A. p=100; B.p=a[5]; C.p=a[2]+2; D.p=a+2;
7. 若有定义int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是 ( )
A.*p B.a[1] C.*a D.a[10]
8. 设有定义int x[6]={2,4,6,8,5,7},*p=x, i; 要求依次输出x数组6个元素中的值,不能完成此操作的语句是( )。
A.for(i=0;i<6;i++) printf("%2d",*(p++)); B.for(i=0;i<6;i++) printf("%2d",*(p+i));
C.for(i=0;i<6;i++) printf("%2d",*p++); D.for(i=0;i<6;i++) printf("%2d",(*p)++);
9. 若有定义char *s1="12345",*s2="1234"; 则printf("%d\n",strlen(strcpy(s1,s2))); 的输出结果是 ( )。
A.4 B.5 C.9 D.10
10. 若定义int a=511,*b=&a; 则printf("%d\n",*b); 的输出结果为( ) 。
A.无确定值 B. a的地址 C. 512 D. 511 展开
3个回答
展开全部
1.B 这种写法是错误的
2.C 由于p指向a的首元素地址,所以p+1就指向下标为1的地址,*(p+1)的值就是5对应下标为1
3.C 表示数组a的首地址在加4指向最后的地址,D是越界了,下标从0开始
4.A 由于s指向x数组中下标为3元素的地址在加2,指针就指向了下标为5的元素地址,取得的值就是3
5.C 运行可以显示结果,要是把s改成c就有错了
6.D D的含义就是p指向a的首地址,加2后,p就指向下标为2的元素地址
7.D 越界了,下标从0开始
8.D *p:表示p所指向x数组首地址的元素值,与题目不符
9.A strcpy就覆盖拷贝,不管s1有没有数据都会被s2覆盖,因此strlen实际就是s2的长度
0.D 由于指针b指向a的地址,*b就是得到该地址对应的值
如有问题大家共同讨论
2.C 由于p指向a的首元素地址,所以p+1就指向下标为1的地址,*(p+1)的值就是5对应下标为1
3.C 表示数组a的首地址在加4指向最后的地址,D是越界了,下标从0开始
4.A 由于s指向x数组中下标为3元素的地址在加2,指针就指向了下标为5的元素地址,取得的值就是3
5.C 运行可以显示结果,要是把s改成c就有错了
6.D D的含义就是p指向a的首地址,加2后,p就指向下标为2的元素地址
7.D 越界了,下标从0开始
8.D *p:表示p所指向x数组首地址的元素值,与题目不符
9.A strcpy就覆盖拷贝,不管s1有没有数据都会被s2覆盖,因此strlen实际就是s2的长度
0.D 由于指针b指向a的地址,*b就是得到该地址对应的值
如有问题大家共同讨论
展开全部
1、 A
2、 C
3、 D
4、 A
5、 A
6、 D
7、 D
8、 D
9、 A
10、D
(以上均为参考答案,如有疑问,可以自行编写简单函数验证。)
2、 C
3、 D
4、 A
5、 A
6、 D
7、 D
8、 D
9、 A
10、D
(以上均为参考答案,如有疑问,可以自行编写简单函数验证。)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、 A
2、 C
3、 D
4、 A
5、 A
6、 D
7、 D
8、 D
9、 A
10、D
2、 C
3、 D
4、 A
5、 A
6、 D
7、 D
8、 D
9、 A
10、D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询