吴贤炬 发表于 2021-11-23 13:55:13

求解,为什么第一个switch不会执行?

各位大佬,为什么第一个switch不会执行?
#include<stdio.h>
int main()
{
        char money;
        char m = { 'a','b','c','d','e','f','g','h','i','j'};
        char z = { 'S','B','Q','W','Y' };
        char n;
        int k, l, ch, w, x = 0;
        for (k = 0, w = 0; k < 9; k++, w++)
        {
                money = getchar();
                if (money == '\n')
                        break;       
        }
        ch = w;
        for (l = 0, k = 0; l < w; l++)
        {
                switch (money)
                {
                case 0:x = 0; break;
                case 1:x = 1; break;
                case 2:x = 2; break;
                case 3:x = 3; break;
                case 4:x = 4; break;
                case 5:x = 5; break;
                case 6:x = 6; break;
                case 7:x = 7; break;
                case 8:x = 8; break;
                case 9:x = 9; break;
                }
                n = m;
                k++;
                switch (ch)
                {
                case 9:n = z; break;
                case 8:
                case 4:n = z; break;
                case 7:
                case 3:n = z; break;
                case 6:
                case 2:n = z; break;
                case 5:n = z; break;
                default:n = ' ';
                }
                k++;
                ch--;
        }
        for (l = 0; l < k; l++)
        {
                printf("%c", n);
        }
        return 0;

}

jhq999 发表于 2021-11-23 17:19:16

本帖最后由 jhq999 于 2021-11-23 17:22 编辑

ASCII码对照表

0000 0000        0        00        NUL        ␀        空字符(Null)
0000 0001        1        01        SOH        ␁        标题开始
0000 0010        2        02        STX        ␂        本文开始
0000 0011        3        03        ETX        ␃        本文结束
0000 0100        4        04        EOT        ␄        传输结束
0000 0101        5        05        ENQ        ␅        请求
0000 0110        6        06        ACK        ␆        确认回应
0000 0111        7        07        BEL        ␇        响铃
0000 1000        8        08        BS        ␈        退格
0000 1001        9        09        HT        ␉        水平定位符号

yzzc 发表于 2021-11-24 11:20:26

因为Money[]是字符数组,switch(money)用的是他的ascll码值,数组里ascll码值都大于10。

15218524174 发表于 2021-11-24 23:39:03

第一个switch传入的是money,即money,然而money是a,a对于的ASCII是97,故条件不成立,所以不执行。
页: [1]
查看完整版本: 求解,为什么第一个switch不会执行?