㈠ 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);
}