0

我正在尝试制作三个简单的 c 程序,但我将把它限制在其中一个,因为第一个问题只针对一个。(是的,如果你好奇的话,这是hw。)

对于这个程序,目标是创建一个可以接受字符串的程序:

"BCC  6 T LL 8 9 *** & EXTRA@@@@@"

和输出/打印

"689"

我将在下面粘贴的代码是我对此的悲伤尝试,实际上我没有得到任何结果。任何帮助表示赞赏。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main()
{
printf("BCC  6 T LL 8 9 *** & EXTRA@@@@@\n");

char ch=getchar();  
while(ch!='\n')
    {
    if(isdigit(ch)|| ch!='*' || ch!='@')
        printf("%c", ch);
    }
return 0;
}
4

2 回答 2

0

试试这个:

while ((ch = getchar()) != '\n') {
    if (isdigit(ch) {
        printf("%c", ch);
    }
}

您的代码有一个严重的问题:您没有getchar()while循环内调用。所以它只会读取一个字符并重复处理同一个字符。另一个问题是你的情况——所有字母和空格字符if的测试都是正确的。ch != '*' || ch != '@'如果您只想打印数字,则无需进行这些测试。

正如我在评论中提到的,这将处理用户键入的内容,而不是您打印的内容printf()

于 2013-09-27T01:04:50.723 回答
0

简单地做

while(ch!='\n')
    if(ch >= '0' && ch <= '9')
        printf("%c",ch);

简洁明了的代码。无需调用单独的函数isdigit(),当您使用ch >= '0'它时,将字符的ASCII值与'0'进行比较, 一旦条件成立,您的数字将被打印出来。还有no need to check for '*' and '@',新字符串中可以有更多这样的特殊字符。你能放多久的支票?

于 2013-09-27T04:28:38.860 回答