Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C-计数_C - Fatal编程技术网

C-计数

C-计数,c,C,我是一名编码初学者,希望听到您对本练习的以下解决方案的建议: 编写一个程序,循环提示输入long数据类型的正整数或零整数。然后,整数包含的位数(以十进制表示)应打印到标准输出。输入负数会立即停止程序。 输出示例:0有一个数字。999有3个数字。等等 我已经编写了下面的代码,根据我所做的测试,该程序完成了所有给定的任务。但是你怎么看呢?我怎样才能改进它 (我还认为,我不允许在任何c库中使用任何已完成的有用函数。它只是“普通”c编码而已。Idk如何描述它。) (编程语言为C) #包括 内部主(空)

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

编写一个程序,循环提示输入long数据类型的正整数或零整数。然后,整数包含的位数(以十进制表示)应打印到标准输出。输入负数会立即停止程序。 输出示例:0有一个数字。999有3个数字。等等

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

(我还认为,我不允许在任何c库中使用任何已完成的有用函数。它只是“普通”c编码而已。Idk如何描述它。)

(编程语言为C)

#包括
内部主(空)
{
长数;
int n=0;
做
{
printf(“输入一个数字:”);
扫描单位(“%ld”和编号);
如果(数字>0)
{
while(数字!=0)
{
数目/=10;
n++;
}
}
else if(数字==0){
n=1;
}
否则{
退出();
}
printf(“您输入的数字有%d位。\n\n”,n);
n=0;
}while(getchar()!='EOF');
返回0;
}

getchar没有用,因为EOF是指文件结束了,而您没有读取文件。将其更改为while(number>=0)。

什么是
“EOF”
?编译器不是对你大喊警告吗?依我看,这个问题属于
exit()
需要一个参数。
exit
需要
#include
你应该检查
scanf_s()
调用的结果。目前的情况是,如果它失败,
number
将在未初始化的情况下使用,这很可能会引发未定义的行为,任何事情都可能发生。
#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;
}