c语言中如何求一个整数的各位数?

作者&投稿:拱疤 (若有异议请与网页底部的电邮联系)
无法理解用c语言如何求一个整数的位数?~

因为c语言中整数除以整数结果是整数,所以一个整数除以10后的位数就减少1,所以通过while除10操作,直到结果为0,每除以一次10,该数位数加1,最后输出的就是该数的位数。

#include

int main(int argc, char **argv)
{
int a;
int sum = 0; //这是各位数的和
int NumWidth =0;//这是位数和
scanf("%d",&a);
while(a != 0)
{
sum += a%10 ; //求余可以得到这个数个位上的数字,然后把它加到sum中
a /= 10; //把这个数字除以10,然后再求余,可以得到10位
NumWidth ++;//每次循环,就可以得到位数。
}
printf("the number you input width= %d, sum = %d",NumWidth,sum);
return 0;
}

用取余和取模的方法。比如a:a%10得到是各位。a/10得到的是去除个位的那些数,声明一个变量来存储这个数。如此循环就可以了。你可以提前声明一个足够大的一维数组来存放正整数的各个位。希望对你有帮助。上面那位的程序可以借鉴,但是不全,改一下。

个位数吗?
可以利用%取余
例子:
#include "stdio.h"
void main()
{
int a = 192;
int b = 0;
b = 192%10;
printf("b=%d", b);
}

我给出一个分离5位数的程序给你:

#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int

uchar temp1 = 0; //变量保存16位数据的个位
uchar temp2 = 0; //变量保存16位数据的十位
uchar temp3 = 0; //变量保存16位数据的百位
uchar temp4 = 0; //变量保存16位数据的千位
uchar temp5 = 0; //变量保存16位数据的万位

void calculate(uint temp);
int main(void)
{
uint a;
scanf("%d", &a);
calculate(a);
printf("%d %d %d %d %d\n", temp5, temp4, temp3, temp2, temp1);
return 0;
}

void calculate(uint temp)
{
uchar temph; //变量保存16位的高8位
uchar templ; //变量保存16位的低8位

temph = temp/256;
templ = temp%256;

//10000=0x2710
while(((temph==0x27)&&(templ>=0x10))||(temph>0x27)) //>=10000?
{
if(templ>=0x10) //-10000
{
templ-=0x10;
temph-=0x27;
}
else
{
templ+=(~0x10)+1;
temph-=0x27+1;
}
temp5++;
}

//1000=0x03e8
while(((temph==0x03)&&(templ>=0xe8))||(temph>0x03)) //>=1000?
{
if(templ>=0xe8) //-1000
{
templ-=0xe8;
temph-=0x03;
}
else
{
templ+=(~0xe8)+1;
temph-=0x03+1;
}
temp4++;
}

//100=0x0064
while(((temph==0)&&(templ>=0x64))||(temph>0)) //>=100?
{
if(templ>=0x64) //-100
{
templ-=0x64;
}
else
{
templ+=(~0x64)+1;
temph-=1;
}
temp3++;
}

//10=0x0a
while(templ>=0x0a) //>=10?
{
templ-=0x0a;
temp2++;
}

//1=0x01
while(templ>=0x01) //>=1?
{
templ-=0x01;
temp1++;
}

}


c语言编程从键盘输入一个任意正整数,求其各位数字立方和。
include<stdio.h> intmain(){ inta;scanf("%d",&a);intb[10]={0};intk=0;while(a){ b[k]=a%10;a=a\/10;k++;} printf("%d\\n",k);inti=0,sum=0;while(i<=k){ sum=sum+b[i]*b[i]*b[i];i++;} printf("%d\\n",sum);} ...

c语言,从键盘中输入一个正整数n分别求1到n之间所有个位数是3或5的数的...
在这个程序中,我们使用 for 循环遍历从 1 到 n 的所有整数,判断它们的个位数是否为 3 或 5,如果是,则将它们的和累加到变量 sum 中。最终输出变量 sum 的值,即为题目所求。需要注意的是,题目要求输入一个正整数 n,因此我们需要对输入的值进行合法性检查,以确保它是正整数。此外,如果 n...

求一个3×3的整型矩阵对角线元素之和(用c语言)
c语言求一个3×3的整型矩阵对角线元素之和步骤如下:1、打开Dev-c++软件,点击“新建源代码”。2、具体程序如下:include <stdio.h> int main(){ int a[3][5]={{1,2,3},{4,5,6},{7,8,9}};int i,j,sum,m=0,sum1=0,sum2=0;printf("array a:\\n");for(i=0;i<3;i++)...

c语言 用switch case如何表示一个范围?
1、首先打开C-Free5.0,然后一个空白的C语言页面保存为switch.c文件,继续输入一般的C语言的基础格式。2、C语言的输入语句,首先定义一个整型数值,然后从外面写入这个值。#include <stdio.h>main(){int a;printf("请输入一个1-5之间的数值: ");scanf("%d",&a);}这里的scanf() 就是从...

整数二进制有多少个1python?
输入一个整数,求该整数的二进制表达中有多少个1pythondef?CountOne():i?=?int(raw_input("enter?a?int:"))b?=?bin(i)print?b.count('1')如何判断一个整数的二进制中有多少个1(一)如果是高级语言:先将整数转为二进制的字符串,再统计串中字符“1”的个数即可 (二)如果是汇编语言:...

c语言编程:输入一个很大的整数n(n<100),输出n各位数字之和 ,利用字 ...
思路:输入字符串,从字符串的第一个位置开始依次把每个数字字符转成整数,并计算其累加和。参考代码:include "stdio.h" #include "string.h" int main() {char a[100];int i,sum=0;gets(a); for(i=0;a[i]!='\\0';i++)\/\/遍历求累加和 sum+=a[i]-'0';printf("%d\\n",sum...

用c语言编写一个程序求同时满足除三余一除五余三除七余五的最小正整数...
满足除三余一除五余三除七余五的最小正整数是103。程序如下:include <stdio.h> int main(){ int i;for (i = 1; ; i++){ if (i%3 == 1 && i%5 == 3 && i%7 == 5){ printf("%d\\n", i);break;} } } 程序截图如下:程序运行结果:...

c语言如何实现一个程序循环执行n次
在C语言中,可以使用for循环或while循环来实现一个程序循环执行n次。以下是两种方法的示例:使用for循环:首先定义一个整型变量i,用于计数。然后使用for循环,循环n次。每次循环中,i都会增加1。在循环体中,编写需要重复执行的代码。示例代码如下:使用while循环:首先定义一个整型变量i,用于计数。然后...

C语言输入一个整数,截取它对应的二进制位中从右到左的第8-11位(最右...
include<stdio.h> main(){ long i,x;printf("请输入一个整数:");scanf("%ld",&x);printf("它的从右开始的第11-8位为:\\n");for(i=11;i>7;i--)printf("%d",(x&(1<0);printf("\\n");}

怎样才算爱一个人?
2、认为对方是无可替代的 或许在遇到那个人之前,你的心里对未来另一半设定了很多条条框框,但是当那个人一旦出现,那些所谓的要求,都成了浮云,对方就成了你心目中的唯一,一个不可替代的人。爱情里,并不是拥有最好的才最幸福,而是拥有最合适的那个人,才会拥有幸福。3、和对方在一起感觉很舒服 ...

祁县13585259561: C语言编程 给一个任意的整数,求出它是几位数 -
应群肝喜: #include "Stdio.h"#include "Conio.h" int main(void) { long n; int i=0; scanf("%ld",&n); while(n){ i++; n=n/10; } printf("%d",i); getch(); return 0; }//如果数字超过了long 的范围//就用char *ch 去接受那个数//加个'\0'//最后直接strlen就OK了

祁县13585259561: C语言,对任意的整数,求出这个整数的位数 -
应群肝喜: #include <windows.h> #include <stdio.h> int main() {//aint m=0;printf("输入一个整数:");scanf("%d",&m);char ch[32]={0};_itoa(m,ch,10);printf("位数为:%d\r\n",strlen(ch));//bfor(UINT i=0;i<strlen(ch);i++)printf("%c;",...

祁县13585259561: 怎么用C语言取数字的各位 -
应群肝喜: main(){int s,a[50],i,n=0;</p><p> scanf("%d",&s);</p><p>while(s>=0)</p><p>{a[n++]=s%10;</p><p> s=s/10;</p><p>}for(i=0;i<n;i++)printf("%d",a[i]);return;}

祁县13585259561: 利用C语言怎样求整数的位数以及各位数之和 -
应群肝喜: 将此段文字复制到编码区即可. #include "stdio.h"int main() { int number,i=0,sum=0; printf("please input a number:"); scanf("%d",&number); while(number!=0) { sum+=number%10; number/=10; i++;} printf("sum=%d\n",sum); printf(...

祁县13585259561: 无法理解用c语言如何求一个整数的位数? -
应群肝喜: 因为c语言中整数除以整数结果是整数,所以一个整数除以10后的位数就减少1,所以通过while除10操作,直到结果为0,每除以一次10,该数位数加1,最后输出的就是该数的位数.

祁县13585259561: c语言求一个正整数的位数怎么写? -
应群肝喜: 首先要计算这个正整数有多少字节,然后就是每个字节8位.根据不同的环境下,int型占的字节数可能不一样.利用sizeof(int)可得到字节数

祁县13585259561: c语言中怎样计算一个整数各位数字之积 -
应群肝喜: #include<stdio.h> void main() { int a,s; s=1; printf("请输入一个整数"); scanf("%d",&a); while (a>0) { s=s*(a % 10); a=a/10; } printf("a=%d",s); }

祁县13585259561: C语言,求一个任意整数的位数,需要调用函数的方法,下面是我编的一个程序,帮忙看看,运行得不到结果. -
应群肝喜: #include<stdio.h> long f(long int x) {int a[100];int i;for(i=1;;i++){a[i]=x%10;x=x/10;if(x==0)break;}return (i); } void main() {long x;int m;printf("输入一个任意位数的整数:");scanf("%ld",&x);//这里改了m = f(x);printf("%ld的位数为%ld!",x,m);//这里也改了 }

祁县13585259561: 用C语言编写程序,输入一个任意整数,求它的位数及各位数字之立方和.【使用while语句】 -
应群肝喜: #include<stdio.h> main() {int n,i,s=0,sum=0;printf("请输入一个整数:");scanf("%d",&n);i=n;while(i!=0){ s+=(i%10)*(i%10)*(i%10);i/=10;sum++; }printf("是%d位数,各位立方和为%d\n",sum,s);}

祁县13585259561: 用C语言编写求一个四位整数各个数位上的数字.咋做 -
应群肝喜: #include <stdio.h> int sum(unsigned int number) { //求一个正整数的各位数字之和 int sum = 0; while(number) { sum = sum + number%10; number = number/10; } return sum; } int main() { printf("66358的各位数字之和为 : %d\n",sum(66358)); printf("102的各位数字之和为 : %d\n\n",sum(102)); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网