c语言switch结构+循环题目

查看:122
本文介绍了c语言switch结构+循环题目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

为什么最终结果k=4?可以给出详细的过程吗?谢谢
main()
{

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;continue;
    case  'E': k=k*10;break;
    default:k=k/3;  
    }
    k++;
    printf("k=%d\n",k); 
}while(c<'G');
printf("最终结果k=%d",k); 
system("pause");
return 0;

}

解决方案

任何时候 printf 都是调试的利器, 我在你的代码上加了一些 printf 输出, 整个代码运行流程一目了然:

int main() {
    int k = 0;
    char c = 'A';
    do {
        switch (c++) {
            case 'A':
                printf("case A: k++, 执行前, k: %d", k);
                k++;
                printf(", 执行后, k: %d\n", k);
                break;
            case 'B':
                printf("case B: k--, 执行前, k: %d", k);
                k--;
                printf(", 执行后, k %d\n", k);
            case 'C':
                printf("case C: k += 2, 执行前, k: %d", k);
                k += 2;
                printf(", 执行后, k: %d\n", k);
                break;
            case 'D':
                printf("case D: k = k %% 2, 执行前, k: %d", k);
                k = k % 2;
                printf(", 执行后, k: %d\n", k);
                continue;
            case 'E':
                printf("case E: k = k * 10, 执行前, k: %d", k);
                k = k * 10;
                printf(", 执行后, k: %d\n", k);
                break;
            default:
                printf("case default: k = k / 3, 执行前, k: %d", k);
                k = k / 3;
                printf(", 执行后, k: %d\n", k);
        }

        k++;
        printf("执行 k++, k 当前值: %d\n", k);
        printf("k=%d\n", k);
    } while (c < 'G');

    printf("最终结果k=%d", k);
    system("pause");
    return 0;
}

打印输出如下:

case A: k++, 执行前, k: 0, 执行后, k: 1
执行 k++, k 当前值: 2
k=2
case B: k--, 执行前, k: 2, 执行后, k 1
case C: k += 2, 执行前, k: 1, 执行后, k: 3
执行 k++, k 当前值: 4
k=4
case C: k += 2, 执行前, k: 4, 执行后, k: 6
执行 k++, k 当前值: 7
k=7
case D: k = k % 2, 执行前, k: 7, 执行后, k: 1
case E: k = k * 10, 执行前, k: 1, 执行后, k: 10
执行 k++, k 当前值: 11
k=11
case default: k = k / 3, 执行前, k: 11, 执行后, k: 3
执行 k++, k 当前值: 4
k=4
最终结果k=4

话说, 这样的问题, 单步调试也很容易确定了吧?

这篇关于c语言switch结构+循环题目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆