题目
以下程序的输出结果是( ) # include < stdio . h > int main ( void ) ( int a = 30 , b = 6 , i ; for ( i = 1 ; ; i ++ ) { a++ ; b++; if ( a == 2*b ) break ; ) printf ( " %d , %d , %d , " , a , b , i ) ; return 0 ; } A 48 , 24 , 18 C 24 , 48 , 18 B 30 , 6 , 16 D 6 , 30 , 24
以下程序的输出结果是( )
# include < stdio . h >
int main ( void )
{ int a = 30 , b = 6 , i ;
for ( i = 1 ; ; i ++ )
{
a++ ; b++;
if ( a == 2*b ) break ;
}
printf ( " %d , %d , %d , " , a , b , i ) ;
return 0 ;
}
A 48 , 24 , 18
C 24 , 48 , 18
B 30 , 6 , 16
D 6 , 30 , 24
题目解答
答案
首先分析程序结构。给定程序包含一个 for 循环,循环体内每次执行时,a 和 b 分别加 1。当 a 的值等于 2 倍的 b 时,循环终止。
接下来分析循环执行过程。初始时,a = 30,b = 6,i = 1。循环开始执行:
1、第一次循环:a = 31, b = 7, i = 1,a != 2 * b
2、第二次循环:a = 32, b = 8, i = 2,a != 2 * b
...
17、第十七次循环:a = 47, b = 23, i = 17,a != 2 * b
18、第十八次循环:a = 48, b = 24, i = 18,a == 2 * b,循环终止
综上,当循环终止时,a = 48,b = 24,i = 18。因此,程序的输出结果是 A 48 , 24 , 18。
解析
步骤 1:初始化变量
程序开始时,变量 a 被初始化为 30,变量 b 被初始化为 6,变量 i 被初始化为 1。
步骤 2:进入循环
程序进入一个无限循环,每次循环中,变量 a 和 b 都会增加 1,变量 i 也会增加 1。
步骤 3:判断条件
在每次循环中,程序会检查变量 a 是否等于变量 b 的两倍。如果条件满足,循环将终止。
步骤 4:循环终止
当 a 的值等于 2 倍的 b 时,循环终止。此时,a = 48,b = 24,i = 18。
步骤 5:输出结果
程序输出 a、b 和 i 的值,即 48, 24, 18。
程序开始时,变量 a 被初始化为 30,变量 b 被初始化为 6,变量 i 被初始化为 1。
步骤 2:进入循环
程序进入一个无限循环,每次循环中,变量 a 和 b 都会增加 1,变量 i 也会增加 1。
步骤 3:判断条件
在每次循环中,程序会检查变量 a 是否等于变量 b 的两倍。如果条件满足,循环将终止。
步骤 4:循环终止
当 a 的值等于 2 倍的 b 时,循环终止。此时,a = 48,b = 24,i = 18。
步骤 5:输出结果
程序输出 a、b 和 i 的值,即 48, 24, 18。