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