请帮我解析下这几道C语言选择题?

[复制链接]
查看11 | 回复5 | 2011-3-16 13:36:16 | 显示全部楼层 |阅读模式
第一题,在数组n[k]中,里面的元素是从0开始排到k-1的,所谓的n[k]只是在定义时候申请了k个元素的意思,数组中并不存在n[k]这个元素,所以系统就随机分配一个值。第二题,用于p++中的++运算是先执行完所有的运算才进行的,即先输出,然后才将p指向下一个元素。如果改成++p就是先指向下一个元素,再输出了。第三题,很简单,在你输入的时候,在a和b 之后都按了回车键,getchar()将回车作为一个元素读入,所以实际得到的数组就是a,,b,,d,e这六个字符,而在输出时就是换行的作用,这也就是为什么在输出a和b后都换行的原因第四题,本循环共执行两次。第一次,i=0,所以执行aa[i+1]=*p+1,也就是aa[...
回复

使用道具 举报

千问 | 2011-3-16 13:36:16 | 显示全部楼层
第一题 int n[2]={0},定义的是数组,即n[0]=0,n[1]=0,n[2]并不是数组中定义的,即不确定第二题P为指针,指向数组的首地址,*(p++)即运行完*p后,*p=a[0],p再指向下一个元素的首地址,即运行后p=&a[1],此时运行**k,即运行*p,即a[1]第三题程序输入6个字符,题目输入时enter键也会被认为一...
回复

使用道具 举报

千问 | 2011-3-16 13:36:16 | 显示全部楼层
9.4 n[2]={0}只赋了一个值即n[0]=0,而n[1]没赋值,其值不确定,所以最终答案不确定9.10 printf("%d",*(p++)); 是先输出p所指向的值,然后p才加1,你要搞清楚++和--运算符放在变量前和变量后的区别9.11回车也算一个字符9.15 int aa[3][3]={{2},{4},{6}}只赋值给aa...
回复

使用道具 举报

千问 | 2011-3-16 13:36:16 | 显示全部楼层
9.4选A是因为数组n[2]中只有n[0]和n[1]两个元素,要求输出n[k]越界;9.11是因为被当做字符接收到数组中了;9.15中for语句第一次执行时满足第一个条件i=0故执行aa[0][1]=*p+1,即aa[0][0]+1,得aa[0][1]此时的值为3,到printf时输出aa[0][0]的值2;此时返回for语句i++,i此时不...
回复

使用道具 举报

千问 | 2011-3-16 13:36:16 | 显示全部楼层
9.4:数组越界(定义int n[2]; 只有n[0],n[1]两个元素,n[2]越界故值未知)9.10:p++为后自增,即先引用一次,后自增1,若为++p则为前自增,先加1,后引用9.11:回车也算是一个字符,所以输入的是'a''\n''b''\n''c''d' , 回车符也就是'\n',打印出来表现的就是换行,所以...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行