塑料方水箱的价格:二级C教程上一道题,帮我看看怎么做?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 22:41:10
main() {int n[2]={0},i,j,k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++) n[j]=n[i]+1;
printf("%d\n",n[k]);
A)不确定的值B)3 C)2 D)1

A,不能确定的值
打印出的是n[2](k=2)
记得c语言中数组n[2]代表的是n[0],n[1],

语句int n[2]={0};说明n[0]的值为0.且n[2]无定义
/*--------------------------*/
当i=0时
当j=0时
n[0]=n[0]+1 ->n[0]=1
当j=1时
n[1]=n[0]+1 ->n[1]=1+1=2
当i=1时
当j=0时
n[0]=n[1]+1 ->n[0]=2+1=3
当j=1时
n[1]=n[1]+1 ->n[1]=2+1=3

/*--------------------------*/
综上所述n[2]是一个不确定的值.

A)不确定的值
数组n里只有两个元素n[0]和n[1],由于C语言没有下标越界检查,这个程序仍能运行,并出结果。但n[2]这块内存是没有被初始化,也没有被赋值,所以结果为不确定的值。如果定义n时为int n[3]={0},那么n[2]被初始化成了0,结果就成了0。

A)不确定的值
定义n[2]是定义了n[0]和n[1],程序只对n[0]和n[1]的值进行了修改,并未对n[1]后面的地址(也就是n[2]所在的地址)赋值

当i=0时
当j=0时
n[0]=n[0]+1 ->n[0]=1
当j=1时
n[1]=n[0]+1 ->n[1]=1+1=2
当i=1时
当j=0时
n[0]=n[1]+1 ->n[0]=2+1=3
当j=1时
n[1]=n[1]+1 ->n[1]=2+1=3

printf是n[2]应该还是0值