case 3: case 55:
时间: 2024-02-10 16:01:26 浏览: 62
这是一个包含两个 case 分支的 switch 语句,分别处理值为 3 和 55 的情况。当 switch 表达式的值为 3 时,程序执行 case 3: 后面的语句;当 switch 表达式的值为 55 时,程序执行 case 55: 后面的语句。如果 switch 表达式的值既不是 3 也不是 55,那么程序将跳过这个 switch 语句。
相关问题
void Fun_10_Any(int number, int cet) { Stack S = (Stack)malloc(sizeof(struct StackNode));; int e; InitStack(S); if (number == 0) { printf("转换后的%d进制数为:0", cet); return; } while (number) { Push(S, number % cet); number = number / cet; } printf("转换后的%d进制数为:", cet); while (!IsEmpty(S)) { e = Top(S); Pop(S); switch (e) { case 10: case 11: case 12: case 13: case 14: case 15: e += 55; break; default:e += 48; } printf("%c", e); } free(S); }
这段代码实现了将一个十进制数转换为任意进制的功能。函数名为 Fun_10_Any,接受两个参数:一个是待转换的十进制数 number,另一个是目标进制 cet。代码中首先创建了一个栈 S,并初始化为空栈。然后判断待转换的数是否为 0,如果是,则直接输出转换后的结果为 0,结束函数。如果不是,则通过 while 循环将 number 不断除以 cet 并将余数压入栈 S 中,直到 number 变为 0。接下来,通过 while 循环取出栈 S 中的元素并打印,需要注意的是,如果取出的元素是 10~15(即十六进制数中的 A~F),需要将其转换为对应的字符,这里使用了 switch 语句实现。最后释放栈 S 的内存。
从键盘上输入 3 4 5 6 7 时,下面程序的输出结果是____。 #include <stdio.h> int main() { int c; while((c=getchar())!=’\n’) switch(c–‘2’) { case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default: putchar(c+2);break; } printf(“\n”); return 0; }
这段程序的输出结果是:
```
89:;<
```
解释如下:
- 当输入 3 时,c 的值为 51,51 - '2' 的结果为 1,因此会执行 case 1,输出 51 + 4 的结果 55,即字符 '7'。
- 当输入 4 时同上,执行 case 2,输出 4 + 4 的结果 8,即字符 '\b'(退格符)。
- 当输入 5 时同上,执行 case 3,输出 5 + 3 的结果 8,即字符 '\b'。
- 当输入 6 时同上,执行 default,输出 6 + 2 的结果 56,即字符 '8'。
- 当输入 7 时同上,执行 default,输出 7 + 2 的结果 57,即字符 '9'。
最后程序输出一个换行符,即 '\n'。
阅读全文