如何在C语言中忽略某些整数输入

如何在C语言中忽略某些整数输入,c,C,我对解决编程问题是个新手,这是我想解决的一些在线问题 问题是: 您需要将所有输入相加 示例输入1: 1-184 示例输出1: -184 示例输入2: 10439298-93572636774-509-568228 47 样本输出2: 482 这是我的代码: main() { int num,sum; char ch; while(ch != 10) { scanf("%d",&num); ch = getchar(); if(num != 1 || 0 ) { s

我对解决编程问题是个新手,这是我想解决的一些在线问题

问题是:

您需要将所有输入相加

示例输入1:

1-184

示例输出1:

-184

示例输入2:

10439298-93572636774-509-568228 47

样本输出2:

482

这是我的代码:

main() {
int num,sum;
char ch;

while(ch != 10) {
   scanf("%d",&num);
   ch = getchar();

if(num != 1 || 0 ) {
    sum += num;
    }  
  }
  printf("%d",sum);
  return 0;
}
我在这里有点迷茫,不知道如何忽略这些整数(1,0,10) 我的代码对第一个示例有效,但对另一个示例无效

有什么解决办法吗?

你有两个选择(我肯定还有很多其他选择)

  • 从输入中读取单个数字(用户键入数字,然后按enter/return);将字符串转换为数字,如果数字为1、10或0,则跳过它并读取下一个数字
  • 读取字符串中的所有数字,并使用strtok将输入拆分为不同的数字,然后将字符串转换为数字。如果数字为1、10或0,则跳过它并读取下一个数字
看看这个:

看看这个(并适应将每个字符串标记转换为int(使用类似strtol的东西):

您只需初始化“sum”变量,它就可以正常工作

main() {
    int num,sum = 0;//Initalize Here
    char ch;

    while(ch != 10) {
       scanf("%d",&num);
       ch = getchar();

    if(num != 1 || 0 ) {
        sum += num;
        }  
      }
      printf("%d",sum);
      return 0;
    }

从这两个输入和输出中,我无法理解算法是什么。您想忽略什么?为什么不处理1、0和10?如果代码工作,我只需在开始时初始化三个变量
,如果(num!=1 | 0)
没有做您认为是做的事情-
| 0
是一个单独的子句,并且总是false