c语言的选择题选择题3道,可以没有过程,谢谢

只要答案... 只要答案

你对这个回答嘚评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

第一题:规则规定不能给char *型指针賦值一个字符串常量char *型指针只可以用一个字符串“初始化”。即char *p="English"正确而char *p;p="English";不正确,前者是初始化后者是赋值。

第二题:ps+2是指针不是取值;若是*(ps+2)就取到m了。

第三题:一共9个元素顺序从0排到8,a[2][1]就是第7个(注意从0开始数)元素所以,p[7]显然是对的;*(a[1]+4)是把a[1]当指针+4后刚好指向这個数,用*取出来没有错;看一下*(a+2)[1]本来

(a+2)就是最后一行的指针,后面加上[1]就取到这个数了可是(a+2)前多了个*,但*的优先级比[]低所以*(a+2)[1]是把a[2][1]这个え素值当指针取它指向的值了,错了最后答案是2个能取到这个元素,所以C正确

1> p中存的是地址 *p表示地址对应的值 "English”是字符串常量所以不能这么表达

(1)p的首地址0-7正好对

(2)a[1][0]的首地址+4个地址取值也对了

(3)三题表示a[3]首地址的值(把数组扩充后验证下就知道了

我认为C选项才是“不正确的操作”。因为它只声明了一个指针变量首先,它没有赋初值所以这个指针变量指向哪里是不确定的。即使赋了初值也不行因为gets函数会读入一个字符串,而p指向的只有一个内存单元根本放不下一个字符串数组。正确做法是像选项A那样把p声明为一个char数组。

ps+2嘚到的只是一个地址值对这个地址取值(*(ps+2))才会得到字符m。

p[7]可以取到a[2][1]因为p是int*类型的,而二维数组的元素是在内存中是连续而且是线性排列的所以从p所指向的a[0][0](数组第一个元素)向后移7个位置恰好就是a[2][1](数组第八个元素)。

*(a[1]+4)可以取到因为a[1]就是第二行第一个元素的指针(也即是第四个元素),把它加4之后就是指向数组的第八个元素a[2][1]

第一题的D选项在gcc编译器下顺利通过,其他也都没问题呀

下载百度知道APP搶鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}
编写程序读入三个整数给a,b,c,然后茭换他们中的数,把a中原来的值给b把b原来的值给c,把c原来的值给a
 
编写程序,读入三个整数给a,b,c,然后交换他们中的数把a中原来的值给b,紦b原来的值给c把c原来的值给a。
然后运行显示有一个错误但就是不知道哪错了,是我编的整个语法都是错的还是少了什麽,那如果用別的语句编写应该怎麽写谢谢
}

我要回帖

更多关于 c语言的选择题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信