C語言如何計算一個整數(shù)的位數(shù)
計算一個整數(shù)的位數(shù)
只需要設(shè)計一個計時器,因為C語言中除法只留下整數(shù)部分,所以可以拿數(shù)字/10;數(shù)字位數(shù)即為循環(huán)次數(shù),待n為個位時n/10=0,然后循環(huán)結(jié)束。
#include<stdio.h> int main() { int n; int count = 0; scanf("%d",&n); if(n == 0)//n為0的情況,個人感覺無位數(shù),退出 { return 0; } else { while(n) { n=n/10;//每次去掉數(shù)字最后一位 count++;//循環(huán)一次計數(shù)器+1 } } printf("%d",count); return 0; }
關(guān)于如何獲取整數(shù)各個位
對于這個在實際的編程題中應(yīng)用比較多,做了一個總結(jié)。
基礎(chǔ)思路
... int i=123,a; a = i%10; printf("a=%d",a);
輸出的便是i的個位數(shù)
a=3
然后知道通過 i/10 便可"清除"個位數(shù)
由此我們便可以通過循環(huán)此方法獲取各個位數(shù)
... int i=123,a,b,c; a = i%10; i/=10; b = i%10; i/=10; c = i%10; i/=10; printf("a=%d,b=%d,c=%d",a,b,c);
輸出的a,b,c便是 i 的個位數(shù),十位數(shù),百位數(shù)
于是我們便知道將整數(shù)反轉(zhuǎn)的方法
... int i; long rex = 0;//反轉(zhuǎn)后的整數(shù) while(i != 0){ ? ? rex = rex*10 + i % 10; ? ? i = i / 10; }//溢出判斷暫時忽略
將整數(shù)反轉(zhuǎn)后那我們又可以得到將整數(shù)按位存入數(shù)組的方法
int i,j,count=0; int nums[numsSize];//需要存入的數(shù)組 long rex = 0; while(i != 0){ ? ? rex = rex*10 + i % 10; ? ? i = i / 10; } ... while(rex != 0) { ? ? j = rex % 10;//獲取個位數(shù) ? ? nums[count] = j; ? ? rex/=10; ? ? count++; }
反之也可以將字符串轉(zhuǎn)化為整數(shù),不過本質(zhì)是一樣的,就不多說了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談帶緩沖I/O 和不帶緩沖I/O的區(qū)別與聯(lián)系
下面小編就為大家?guī)硪黄獪\談帶緩沖I/O 和不帶緩沖I/O的區(qū)別與聯(lián)系。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01如何使用C語言將數(shù)字、字符等數(shù)據(jù)寫入、輸出到文本文件中
在分析數(shù)據(jù)時,首先要解決數(shù)據(jù)的保存問題,下面這篇文章主要給大家介紹了關(guān)于如何使用C語言將數(shù)字、字符等數(shù)據(jù)寫入、輸出到文本文件中的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-06-06