1、首先我们知道宏只是简单的字符替换,那么宏NUM实际就等价于
(N+1+1)*N+1/2,再等价于(2+1+1)*2+1/2,然后要注意优先级的问题,NUM=8,那么循环就是1~8。
2、A、*p //就是a[0]
B、a[10] //这样就越界了,数组元素只有a[0]~a[9]
C、*a //就是a[0]
D、a[p-a] //就是a[0]
3、我们知道字符数组是以数字0(也就是'\0')为结束标识的。p指向的是字符数组第一个元素'H',那么p+1指向'e',p+2指向'l',p+3指向'l',p+4指向'o',p+5指向'\0'。
3、A、p+=2,*(p++) //p指向元素1,p+=2后p指向元素3,p++:先使用再自增,则*(p++)就是3
B、p+=2,*++p //++p先自增再使用,则*++p是4
C、p+=3,*p++ //p+=3后p指向元素4
D、++*p //值为2
4、strcpy(s1,s2)将s2复制到s1并返回s1,即之后s1与s2内容是一样的,strlen取长度值为4。
5、 A、scanf("%d%s",&p->num,p->name);
B、scanf("%d%s",&p->num,&p->name);
C、scanf("%d%s",&p.num,p.name);
D、scanf("%d%s",&p.num,&p.name);
以结构指针操作成员要用到成员运算符->,那么C、D排除;scanf需要的是一个内存地址,p->num是一个整型变量,要用取地址符&;结构中成员name是一个字符数组,p->name表示的是这个字符数组的首地址,不需要再用取地址符。
请采纳答案,支持我一下。
while(k=10),这个循环是对k的赋值,中间一个等号=,所以k会被赋为10,而10是非0值,为真,
while条件一直成立。会一直死循环。