下面程序运行时从键盘上输入:1 2 3 -4↙,写出程序的运行结果
#include
int main()
{
int i, k = 0, s = 0, a[10];
while ( 1 )
{
scanf( "%d", &a[k] );
if ( a[k] <= 0 )
break;
s = s + a[k++];
}
for ( i = 0; i < k; i++ )
printf( "%d", a[i] );
printf( "%d", s );
return(0);
}
想要详细计算过程,谢谢
a[0] = 1,a[1] = 2,a[2] = 3,a[3] =- 4
因为-4小于0,所以k最后的值为3
for ( i = 0; i < k; i++ ) ,是循环输出a数组前三个元素123
最后输出s,s为前三个元素值和,1+2+3 = 6
因此最终输出是1236
int i, k = 0, s = 0, a[10]; //首先,先声明定义整型变量k和s,以及数组a[10],并对k和s进行初始化
while ( 1 )
{
//循环输入第一次:1 赋值给a[0]
//循环输入第二次:2 赋值给a[1]
//循环输入第三次:3 赋值给a[2]
//循环输入第四次:-4 赋值给a[3]
scanf( "%d", &a[k] );
if ( a[k] <= 0 ) //由于第四次输入的值为-4<=0 因此终止while循环
break;
//第一次 s = s +a[0++] = s + a[0] = 0 + 1 =1 s = 1之后 k++ k=1
//第二次 s = s +a[1++] = s + a[1] = 1 + 2 =3 s = 3之后 k++ k=2
//第三次 s = s +a[2++] = s + a[2] = 3 + 3 =6 s = 6之后 k++ k=3
s = s + a[k++];
}
//经历while循环后s=6
for ( i = 0; i < k; i++ )
printf( "%d", a[i] );//输出所输入的数组元素的值1 2 3
printf( "%d", s );//输出最终s的值为6
#include
int main()
{
int i, k = 0, s = 0, a[10]; //step1, 初始化,只会走一次
while ( 1 )
{
scanf( "%d", &a[k] ); //step2, 这里k 从0~3,a[3]=-4
if ( a[k] <= 0 ) //step3,当k为3,a[3]为-4,break出while循环
break; //step4,当k为3时,break,k不再继续++
s = s + a[k++]; //当k 为3时,step4生效,break出循环,这里只是a[0] + a[1] + a[2]
}
for ( i = 0; i < k; i++ ) //step5,经过step4 后,k 为3
printf( "%d", a[i] ); //step6, 因为k 最大为3,所以打印a[0]、a[1]、a[2]
printf( "%d", s ); //step7,s 只是a[0] + a[1] + a[2] = 6
return(0);
}
如代码中的注释,因为printf 最后没有分隔符,所以,输出结果是连在一起,分别是a[0]、a[1]、a[2]、s,即最终结果为1236