C - 计算数字

时间:2017-04-01 15:35:01

标签: c

我是一名编码初学者,希望听到您对本练习的以下解决方案的建议:

  

编写一个循环提示数据类型为long或零整数的程序。然后应该将整数组成的位数(以十进制表示)打印到stdout。输入负数会立即停止该程序。   输出示例: 0有1位数。 999有3位数。等

我已经编写了下面的代码,根据我的测试,该程序完成了所有给定的任务。但你怎么看呢?我怎样才能改进它?

(而且我也认为我不允许在任何c库中使用任何已完成的有用功能。它只是简单的C编码左右.Idk如何描述它。)

(编程语言为C)

#include <stdio.h>

int main(void) 
{
  long number;
  int n=0;

  do
  {
      printf("Enter a number: ");
      scanf_s("%ld", &number);

      if (number > 0)
      {
          while (number != 0)
          {
              number /= 10;
              n++;
          }
      }
      else if(number == 0){
          n = 1;
      }
      else {
          exit();
      }

      printf("The number you've entered has %d digits.\n\n",n);
      n = 0;

  } while (getchar() != 'EOF');

  return 0;
}

1 个答案:

答案 0 :(得分:0)

这个getchar没用,因为EOF就是说文件已经结束而你没有读取文件。将其更改为while(number&gt; = 0)。