-3

因此,每当我尝试运行此代码时,它将通过第一个 printf 但它显示第二个而不让我输入值。有什么我做错了吗?

    #include <stdio.h>

int main(int argc, const char * argv[])
{
    int suit1;
    int suit2;
    char H, S, C, D;
    float value1;
    float value2;
    printf("Please enter the card's suit");
    scanf("%d", &suit1);
    printf("Please enter the card's value");
    scanf("%f", &value1);
    printf("%d %f", suit1, value1);
}
4

2 回答 2

1

考虑对花色使用字符(“CDHS”),对卡片使用整数(而不是浮点数——尽管它们可以表示小整数而不会损失精度)。当你可以时,让变量的内部表示“接近现实世界”通常是一个好主意……

稍作修改,您的程序对我来说就可以正常工作(根据您上面最近的评论进行了更新)

#include <stdio.h>

int main(int argc, const char * argv[])
{
    int suit1;
    int suit2;
    char suitInput;
    char Hearts, Spades, Clubs, Diamonds;
    int value1;
    int value2;
    printf("Please enter the card's suit (C, D, H or S): ");
    scanf("%c", &suitInput);

    printf("\nPlease enter the card's value: (1 = Ace, up to 13 = King): ");
    scanf("%d", &value1);
    printf("\nYou entered %c, %d\n", suitInput, value1);
}

我得到的输出:

Please enter the card's suit (C, D, H or S): D

Please enter the card's value: (1 = Ace, up to 13 = King): 5

You entered D, 5
于 2013-10-16T03:28:12.473 回答
0

我怀疑您正在为第一个输入输入一个字母或字符串,这将导致“跳过”第二个输入(因为第一次扫描不会消耗字母并且第二次扫描会失败)。

将西装扫描为字符或字符串:

char *suit;
suit = malloc(100 * sizeof(char));
scanf("%s\n", suit);

或输入两个数字

于 2013-10-16T03:41:27.017 回答