对a取绝对值,再计算10为底的对数,所得结果取整数部分,再加1,即为位数。由于log10函数的变量不能是整数,需要a*1.0转换为实数。又由于log10的变量不能是0,因此针对a=0的情形,通过max将其转换成1.0。 第三种,逐个数数字的个数。将a取绝对值,写入字符串,统计字符串中不为空(为数字)的字节数,即为位数。
直接编译,程序输出结果中任意输入三个数字,程序执行结果如下图所示:
用一个特定的数字表示结束,比如0, 当用户输入0 的时候就停止,可以参考下面的代码:int a[100],i, count;i =0;while(scanf("%d", &a[i]) != EOF) { if (a[i] == 0) break; // 用户输入了0,表示结束。i++;} count = i-1;...
include <stdio.h>int main(){ int n; scanf ("%d", &n);//输入字 if (n == 0){ printf ("zero\n"); } else if (n == 1){//1 printf ("one\n"); } else if (n == 2){//2 printf ("two\n"); } else if (n == 3){//...
void StepTwo(int x){ for(i=0;x!=0;i++,x/=10)printf("%d",x%10);} int StepOne(int x){ for(i=0;x!=0;i++,x/=10);return i;} void main(){ int x;puts("请输入整数:");scanf("%d",&x);printf("位数:%d",StepOne(x));printf("\n逆序输出:");StepTwo(x);pu...
// 记录输入的数的个数inti;printf("请输入数字,以空格或回车分隔:\n");// 循环读取输入的数字...
你的这个问题难点在于判断输入的数是多少位的。我这里运用了一个将数转换成字符数组(sprintf函数),然后用strlen函数算出这个int型的数有多少位。后面再利用一个字符数组来接收修改后的数,再由字符串转成数字就好。具体见代码。代码在linux系统下 gcc编译器下运行通过,结果如下。在vs下同样可以通过 ...
你可以再新建一个变量来累加:include<stdio.h>int main(){ int a,s=0,k; scanf("%d",&a); while(a) { k=a%10; printf("%d\n",k); a=a/10; s=s+k; /*这里是关键,用s变量来累加,注意s一开始要初始化为0*/ } printf("%d",s);} ...
include <stdio.h>int main(void){ int num,i; printf("Enter a number:"); scanf("%d",&num); i=num; while(i/10) i=i/10; printf("最高位是:%d\t最低位是:%d\n",i,num%10); return 0;} ...
首先设置一个很大的数组(宏定义即可),其次以用户输入回车表示结束为例,每次用c=getchar()判断是否...