C scanf()返回-1

时间:2013-02-12 17:11:44

标签: c user-input scanf

int input;
printf("Type in an odd number less than or equal to 9: \n");

int correctInput = 0;
do {
    scanf("%d", &input);
    if((input % 2) == 0) {
        printf("You have not entered an odd number. Please try again. \n");
    }
    else if(input > 9 || input < 1) {
        printf("Your input is not from 1 to 9. Please try again. \n");
    }
    else {
        correctInput = 1;
    }
} while(correctInput == 0);

printf("Input: %f. \n", input);

我想做的就是从输入变量得到1-9的奇数。但是,当我运行此代码并输入类似7的内容时,我得到了

Type in an odd number less than or equal to 9:
3
Input: -1.#QNAN0.

4 个答案:

答案 0 :(得分:5)

printf("Input: %f. \n", input);

改为使用:

printf("Input: %d. \n", input);

f转换说明符用于打印double值,使用d转化说明符打印int值。

答案 1 :(得分:3)

input是整数类型。请尝试使用printf("Input: %d. \n", input);

答案 2 :(得分:2)

这一行不正确:

printf("Input: %f. \n", input);

变量input属于int类型,因此您应使用%d格式序列:

printf(“输入:%d。\ n”,输入);

答案 3 :(得分:0)

以下是正确的语法, printf(“输入:%d。\ n”,输入);

格式说明符%d代表整数。