c语言:显示正整数的位数

您所在的位置:网站首页 c语言输出首位0的整数是什么 c语言:显示正整数的位数

c语言:显示正整数的位数

2023-07-17 19:17| 来源: 网络整理| 查看: 265

题目

编写一段程序,读取一个正整数,显示其位数。 

※注意:代码中while语句的循环次数和输入的正整数的位数一致。

格式要求( 红色字体为固定格式)

请输入一个正整数:1963 1963的位数是4。 

输入样例

-3 1963

输出样式

请输入一个正整数:-3 请不要输入非正整数。 请输入一个正整数:1963 1963的位数是4。 题目分析

1.计算位数的时候要用while循环。(次数与位数一致)

2.因为不能保证输入的整数都是正数,所以要先判断输入的整数的正负情况。

在敲代码之前,我们先思考一下 ,如何求一个整数的位数?

我们不难想到,“/” 这个有意思的运算符,int型只保留整数部分,所以用  a/10 计算位数 哇 真的简直是再好不过了。

代码如下:

# include int main(void) { int a; int c = 0;//用来存储位数 scanf("%d", &a); while (a) { a /= 10; c++; } printf("%d", c); return 0; }

 

代码展示 # include void Input(int * p) { printf("请输入一个正整数:"); scanf("%d", p); } void weishu(int * p, int * c) { int t; t = *p; //用 t先保存*p的值,为了后面计算a的位数时不改变a的值。 while (t) { t /= 10; (*c)++; } } void Output(int * p, int * c) { printf("%d的位数是%d。\n", *p, *c); } int main(void) { int a; int c = 0;//c用来存储a的位数。 Input(&a); if (a > 0) { weishu(&a, &c); Output(&a, &c); } else { printf("请不要输入非正整数。\n"); Input(&a); weishu(&a, &c); Output(&a, &c); } return 0; } 运行结果

可以满足题目的要求。

存在的错误

本程序只能够对输入的整数进行一次判断,若第二次输入的也为负数,则会出错

所以我们在这里可以考虑使用递归的方法进行改进。

代码改进

无语了...

先空着。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3