㈠ C++,如何提取数字的每一位
有两种方法可以做到提取数字任意一位。
1 根据数学定义,利用除法和取余来获取。
整型的除法会省略掉小数部分,所以可以除以10的对应位数次幂,来达到将要取的值移动到个位的效果,再用10取余,即可得到对应数字。
比如1234,取其百位数,就可以用1234/100%10=12%10=2从而得到百位数2.
以下函数的功能为将整型正整数反序输出。原理为从低位到高位依次取出数值,并输出。
#include<stdio.h>
voidreverse_int(intv)
{
while(v)
{
printf("%d",v%10);//输出个位。
v/=10;//将下一位数字移动到个位。
}
}
2 利用sprintf函数,将整型数字转为字符串,并对字符串进行处理。
sprintf的功能是格式化输出到字符串,操作类似于printf,但输出目标不是标准输出,而是字符数组。
以下函数功能为,将整型正整数按位加空格输出。
#include<stdio.h>
voidput_int_with_space(intv)
{
charstr[50];//定义一个足够大的数组。
inti;
sprintf(str,"%d",v);//将v转为字符串。
for(i=0;str[i];i++)
printf("%c",str[i]);//将每位后加空格输出。
}
㈡ c语言提取字符串中的所有数字
#include<stdio.h>
int
main()
{
char
str[1000];//保存读取到的字符串
long
sum=0,data[1000];
int
i=0,top=0;
printf("输入字符串:\n");
scanf("%s",str);
while(str[i]!='\0')//未到字符串末尾
{
if(str[i]>='0'&&str[i]<='9')//如果是数字
sum=sum*10+(str[i]-'0');//连续数字转换为数.
else
if(sum!=0)//保存这个数
{
data[top++]=sum;
sum=0;
}
i++;
}
if(sum!=0)//判断最后一个字符是否是数
data[top++]=sum;
printf("字符串中的数字是:\n");
i=0;
while(i<top)
{
printf("%ld",data[i]);
if(i<top-1)//不打印最后一个逗号
printf(",");
i++;
}
printf("\n");
system("pause");
return
0;
}
㈢ C语言怎样提取一个数的十位个位百位千位
设一个数为n,则在C语言中其个位、十位、百位、千位依次这样计算:n/1%10,n/10%10,n/100%10,n/1000%10
代码如下:
#include<stdio.h>
int main(){
int n = 123456;
int unitPlace = n / 1 % 10;
int tenPlace = n / 10 % 10;
int hundredPlace = n / 100 % 10;
int thousandPlace = n / 1000 % 10;
printf("个位:%d 十位:%d 百位:%d 千位:%d ", unitPlace, tenPlace, hundredPlace, thousandPlace);
getchar();
return 0;
}
运行结果如图:
(3)c语言提取各个数位的数扩展阅读
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
㈣ C语言中如何将一个数字的各个位上的数分别提取
#include<stdio.h>
int main()
{
int a;
int b[111]={0};//这里数组必须赋于初值,不然系统会随机赋值,将输出错误!赋值任何数
scanf("%d",&a);//都行!
int i=0;
while(a!=0)
{
b[i]=a%10;//将各个位的数赋值于数组b[i] ;
a/=10; //现在数组b[i]记录的是各个位上的数的反序;
i++;//i记录这个数是几位数 ;
}
for(int j=i-1;j>=0;j--)
{
printf("%d ",b[j]);//最后反序输出数组b[j];
}
return 0;
}
有不理解的地方,欢迎追问。望采纳!
㈤ 怎样用C程序提取一个3位数的各个数位
如果简单点就int i=123;int k,s;k=i%10;个位数s=(i-100)/10;十位数i=i/100;//百位数
#include
<stdio.h>
void
main()
{
int
a;
int
b,c,d;//各个位数上的数字
printf("请输入一个三位数:");
scanf("%d",&a);
b=a/100;
//百位
c=(a-b*100)/10;
//十位
d=a%10;
//个位
printf("百位:%d,十位:%d,个位%d ",b,c,d);
printf("它们的和是:%d ",b+c+d);
}
(5)c语言提取各个数位的数扩展阅读:
C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,又是一个实用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。
㈥ c语言分离整数各个位上的数
我来做,你等一会儿就好。
㈦ 怎样用c语言将任意一个数的各个位置上的数分离出来
我给你将x的各个位数分离在数组a中,a[0]个位,a[1]十位,a[2]百位……最后返回数据的位数
int fun(long x, int a[])
{ int i=0;
while(x)
{ a[i++]=x%10;
x/=10;
}
return i;
}
㈧ 用C语言如何提取一个数的各个数位上数字,在不知道是几位数的情况下 PS:顺便判断是几位数
#include<stdio.h>
voidmain()
{
intnum;
intcount=0;
scanf("%d",&num);
while(num!=0)
{
printf("%d",num%10);//提出当前个位
num=num/10;
count++;//累加位数
}
printf(" %d ",count);
}