首页 > 试题广场 >

读下面程序,请给出test( )函数的返回值。[$##$]

[填空题]
读下面程序,请给出test( )函数的返回值。1

int test( )
{
    int k=0;
    char c='A';
    do{
        switch (c++)
        {
            case 'A': k++; break;
            case 'B': k--;
            case 'C': k+=2; break;
            case 'D': k=k%2; break;
            case 'E': k=k*10; break;
            default: k=k/3;
        }
        k++;
    }while(c<'G');
    return k;
}

A   2 
B   4
C   7
D   2
E   21
F   8
细心

编辑于 2017-09-06 19:53:57 回复(2)
大意了,,,算出来7 忘记加一
发表于 2017-09-11 10:52:28 回复(2)
c和k的变化为:(注意是先由c的原始值得到k,然后c再执行c++)
c:                          k:
A                             0
B                             2   (c为A时,先swith里面执行k++,swith外执行k++)
C                             2   (c为B时,先swith里面执行k--,swith外执行k++,所以k值不变)
D                             5   (c为C时,先swith里面执行k+=2,swith外执行k++)
E                             2    (c为D时,先swith里面执行k%=2,swith外执行k++)
F                             21  (c为E时,先swith里面执行k*=10,swith外执行k++)
G                            8    (c为F时,先swith里面执行k/=10,swith外执行k++
最后粗心,激动算出了最后结果忘记了k++,正确答案应该是8。

发表于 2017-09-05 17:23:43 回复(4)
//第1步
A    1
B    2
//2
B    3
C    4
//3
C    6
D    7
//4
D    1
E    2
//5
E    20
F    21
//6
F    7
G    8

发表于 2020-04-03 09:36:51 回复(0)
循环
1           B           2       caseA
2           C           4       caseB C
3           D           7       caseC
4           E           2       caseD
5           F           21     caseE
6           G           8       default
发表于 2020-05-09 14:31:21 回复(0)
K=8
发表于 2017-12-21 15:37:17 回复(0)
循环n次后的结果:(注意switch后有k++) 0:A 0 ①:B 2 (注意此处case:'B'后无break,会执行下个case:'C') ②:C 4 ③:D 7 ④:E 2 ⑤:F 21 ⑥:G 8
编辑于 2017-11-30 10:14:00 回复(0)
8
发表于 2017-11-16 21:26:57 回复(0)
8
发表于 2017-11-15 19:39:12 回复(0)
8
发表于 2017-11-15 13:34:00 回复(0)
发表于 2017-10-27 20:29:36 回复(0)
8
发表于 2017-10-18 22:17:28 回复(0)
c后加加,故 A:2 B:4 C:7 D:2 E:21 F:8
发表于 2017-10-10 20:11:06 回复(0)
注意C是后加加

发表于 2017-09-07 19:53:52 回复(0)
一定要注意B时,求得k为4而不是1
发表于 2017-09-07 12:07:42 回复(2)