c语言switch结构+循环题目
本文介绍了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屋!
查看全文