【问题标题】:How to ignore some interger input in C如何忽略C中的一些整数输入
【发布时间】:2018-01-26 12:18:36
【问题描述】:

我是解决编程问题的新手,这是我想解决的一些来自onlinejudge的问题,

问题来了:

你需要对所有输入求和

样本输入1:

1 -184

样本输出1:

-184

样本输入2:

10 439 298 -935 72 636 774 -509 -568 228 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) 我的代码适用于第一个示例,但不适用于另一个示例。

有什么办法吗?

【问题讨论】:

  • 从 2 个输入和输出我无法理解算法是什么。你想忽略什么?
  • 为什么不处理 1、0 和 10?
  • 你的代码工作,我刚开始初始化三个变量
  • if(num != 1 || 0 ) 没有做你认为的那样 - || 0 是一个单独的子句并且总是错误的

标签: c


【解决方案1】:

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

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

看看这个: How to get int from stdio in C?

看看这个(并适应将每个字符串标记转换为 int(使用类似 strtol 的东西): How does strtok() split the string into tokens in C?

【讨论】:

    【解决方案2】:

    你只需要初始化“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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 2020-06-14
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多