若有程序段int =10 while(k=0) k=k-1
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/17 03:57:49
执行过程:k==2时,k
输出结果为1;因为k=10,此时选择else分支,输出表达式k>=0的值;因为k=10;所以输出为真,结果为1;
注意while后面的括号中是k=1,这是一个赋值语句,意思是把1赋值给k,所以相当于while(1),而不是平常用的k==1(这是运算语句).
D是正确的A,B中p是n的地址那么如果要输入n应该是scanf("%d",p);C中p还没定义给*p赋值就是给一个没有开辟的地址赋值了D是正确的意思是p为n的地址,将p地址上的数变成m,等价于n=m;
#include <stdio.h>int main(){int x,y ;printf("请输入x:");scanf(&
#includevoidmain(){\x05inta[]={1,2,3,4,5,6,7,8,9,10,11,12};//对数组a初始化\x05int*p[3];//定义指针数组,每一个元素都是指针\
程序的输出结果是:1-2第一次执行循环体:输出1此时x=x-2=3-2=1判断条件!(--x)结果为真//此时x再减1变成x=0第二次执行循环体:输出-2此时x=x-2=0-2=-2判断条件!(--x
intk=10;//定义一个整型的变量k=10while(k=0)//当k=0时执行循环序列{printf("%d",k);//输出十进制整数kk--;//k值减一}大致是这样,循环序列应该不会被执行
a3=false所以返回k即k=k=2
结果是0,编译器会把结果0.5强制转换为int型,丢失小数部分
p取a[0]地址,q取[5]地址,两个相减得到距离5.
我感觉:你把K定义为整数(int)等于零,没法循环下去,所以K++,也就是说k+1.所以k原来是零,现在变为·1,循环一次,下来K就会变成2,没法循环下去了,所以循环一次吧.,对了,我感觉你写的问题没
main(){intn,sum=0;scanf(“%d”,&n);while(n>0){sum=sum+n%10;n=n/10;}printf(“sum=%d”,sum);}
依然是4,不过你写的不规范,分号哪去了?第一个if成立,程序将执行大括号里的内容,elsex=d++不运行.第二个if不成立,不运行x=c.x值一直未变.
选D吧A:q2不是二级指针,赋值有问题B:n没有初始化,赋值没意义C:q2没有初始话,野指针赋值
一般来说他们的区别在于混合表达式中运算符的处理顺序.k++是先处理其他运算,然后k再自加;而++k则是先处理k自加运算,再处理其他表达式运算;如果只是单纯的表达式k++;或者是++k;这两个表达式的结
4,while后面是分号,表示循环语句为空,k=3时跳出循环,然后执行k++,最终k=4.
CA里面b是二维数组首地址B里面*(b+2)已经越界了,他首先要定位到b[2],而下标范围只能是0~1,C里面,p是指向b首地址的指针,p+2是内存首地址开始,第二个整数的位置(从0开始数的),该位置
x>>1是对位来的,对照储存来看r本来是8,二进制下就是0000000000001000(二字节)进行移位操作就是把所有位置的数往右边移动,右边是数字1,所以是移动一位,也就是000000000000
Ap本身就是地址,所以&p错误Bp本身就是地址,输入函数参数是地址,所以*p错误Cp没有指向任何一个变量,所以不能赋值D对