在c语言中以下程序段运行后的输出结果是

int n[3], t, j, k;

for (t=0; t<3; t++)
{
n[t] = 0;
}
k = 2;
for (t=0; t<k; t++)
{
for (j=0; j<3; j++)
{
n[j] = n[t] + 1;
}
}
printf("%d\n", n[1]);

输出结果是3.
int n[3], t, j, k;
for (t=0; t<3; t++)
{
n[t] = 0; //这个相当于数组的初始化,全部初始化为0
}
k = 2;
for (t=0; t<k; t++) //执行for循环,当t=0时,j=0时,n[0] = n[0] + 1;得到n[j]=1,这里的n[t]的
{ 值也将从0变为1,因为n[t]跟n[j]此时t=j=0;所以表示的都是数组n的同
for (j=0; j<3; j++) 一元素,接着执行下一步t=0,j=1,n[1]=n[0]+1; n[1]= 2; 当t=0,j=2时,
{ n[2]=n[0]+1; n[2] = 1;接着跳出内层for循环,执行外层for循环,t=1时,
n[j] = n[t] + 1; j = 0,n[j] = n[t] + 1即相当于n[0] = n[1] + 1;前面算出n[1] = 2,所以这里
} n[0] = 3;
}
printf("%d\n", n[1]);追问

对的,但为什么呢?

追答

详细的执行步骤已经附加到旁边了,希望能帮到你!上面当t=0,j=2时,n[2]=n[0]+1; n[2] = 2,不小心打错了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-01
for (t=0; t<3; t++)
{
n[t] = 0;
}
开始时一维数组三个元素都被赋值为0
for (t=0; t<k; t++)
{
for (j=0; j<3; j++)
{
n[j] = n[t] + 1;
}
}
当t=0时
j=0 n[0]=n[0]+1=1
j=1 n[1]=n[0]+1=2
j=2 n[2]=n[0]+1=2
当t=1时
j=0 n[0]=n[1]+1=3
j=1 n[1]=n[1]+1=3
j=2 n[2]=n[1]+1=4
第2个回答  2012-12-01
3

c语言 下面程序段执行完成后的输出结果是: int x=0; if (x=2) printf...
输出:2 x=2是赋值语句,成立,执行printf,因为是x++,所以先输出x,x再自加,故答案是C

在C语言中,下列程序段的输出结果是( ) int x=0,y=0; switch(x==y)_百...
真值在C语言中与1对等, 所以进入case 1分支

以下运行程序后的输出结果是#include<stdio.h>main(){int x=1,y=1...
首先指出程序中的三处错误,第一个是int m n中间应该有逗号,第二个是swtich拼写有错误,第三个是打印输入语句printf("x=%d,y=%d",x,y)有误。修正后程序的运行结果是:x=6,y=6。代码运行结果如下图所示:程序运行过程解析:1、完成变量的赋值,其中有x=1,y=1,m=1,n=1。2、执行第一...

c语言题目:下面程序段的输出结果是什么?
答案是0 int k没有初始化,所以初始值不确定,但是int类型 4个字节(范围是-2147483648~2147483647). 所以在计算k的值时候,从起始地址往下数32位, 超出32位的会被截断 如果是正数,那最后就是0,很直观 如果是负数(8个字节来看)0xffffffffffffffff === -1 0xfffffffffffffffe === -2 ...

C语言,下列程序段输出的结果是()。 printf("|%10.5f|\\n",12345,678...
10是数据宽度,小数点也算1位,不过当数据实际长度超过规定数字时,这个宽度就被自动突破,没用了,.5代表小数点后保留5位,所以添加2个0,这里10相当于没有了

...n', m);执行后的输出结果是A.0x0 B.0x0 C.0 D.0xABC
【答案】:C 本题考查C语言中的数据输出格式。题目中定义了两个整型变量m、n,对这两个变量赋值,输入的数值为十六进制整数,并且有m=n。进行m-n运算后,将减法所得到的值赋给m,并将m值输出。其中printf的格式字符选用的格式字符为x,即以十六进制形式输出整数。注意,0x是表示该数为十六进制的...

C语言有关问题。以下程序的输出结果是:(并且给出解释)
输出结果:c language 解释:if LETTER if(c>='a'&&c<='z') c=c-32;else if(c>='A'&&c<='Z') c=c+32;endif 这段是指当LETTER的值为真(非零)时执行第一个程序段if(c>='a'&&c<='z') c=c-32;否则执行第二个程序段if(c>='A'&&c<='Z') c=c+32;这里宏定义#define...

下面程序段的输出结果是??为什么??C语言
while(a>120); \/\/请注意这里有没有“;”a=a+1;printf(″%d″,a);如果有的“;”话,答案就是101,因为while循环的是空语句,a=a+1;是下一条语句,一定会执行的。如果没有“;”的话,答案就是100,因为while的循环语句是a=a+1;,当不满足判定条件a>120时,不执行a=a+1;,所以...

【求助c语言】下面程序段的运行结果是()
正确输出为cde,没有正确选项。s代表字符串第一个字符,S+=2就是向后移2,即c 输出s 则应为cde。

以下程序段执行后输出结果()。inti;for(i=1;;i++);printf(“%d”,i+...
是永远不会有输出的 首先for(i=1;;i++)是个无限循环,因为没有循环的判断条件 另外,再for(i=1;;i++);后面紧跟着一个分号,所以循环执行的是一个空语句,后面的printf是不在循环体内的

相似回答