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