打印数字,直到输入负数

时间:2016-11-18 21:48:17

标签: c

我的问题与scanf();

无关

例如:input - > 542-4Output - > 5,4,2,-4

我的意思是,打印到带负数的负数。它是直到负数,但我也想打印负数。我能怎么做 ?请帮我。我使用了getchar()isdigit()int a=x-'0'

char x =getchar();
while(isdigit(x)){
    int a=x-'0';
    printf("%d,",a);
    x=getchar();
}

3 个答案:

答案 0 :(得分:2)

对于isdigit(x)

'-'不适用,因此您需要单独测试。

由于您想在第一个负数后停止,因此您需要在阅读-时设置一个标记,这样您就不会继续读取其他负数。

int neg = 0;
char x = getchar();
while (isdigit(x) || x == '-') {
    if (x == '-') {
        neg = 1;
    } else {
        int a = x - '0';
        if (neg) {
            a = -a;
        }
        printf("%d", a);
        if (neg) {
            break;
        }
    x = getchar();
}

答案 1 :(得分:0)

getchar()一次读取一个字符。你会得到'5','4','2'和' - '。

isdigit(x)不适用于' - ',因此循环终止于那里。

答案 2 :(得分:0)

这个怎么样:

#include <stdio.h>

int main(int argc, char *argv[])
{
    char x = getchar();
    int a;
    while (x != '\n')
    {
        if (isdigit(x))
        {
            a = x - '0';
            printf("%d,", a);
        }
        else
            printf("%c", x);

        x = getchar();
    } 

    printf("\n");

    return 0;

}