日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C:如何分解整数(从末位往前取以及从首位往后取)

發(fā)布時間:2024/8/26 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C:如何分解整数(从末位往前取以及从首位往后取) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  主要都是通過整除與取余來處理

1.從末位往前取

#include<stdio.h>
int main()
{
??? int num;
??? int num_1,num_2,num_3;
??? scanf("%d",&num);
??? num_1 = (num/1) % 10;
??? num_2 = (num/10) % 10;
??? num_3 = (num/100) % 10;
??? printf("%d",num_1 * 100 + num_2 * 10 + num_3 * 1);
}

  在上述代碼中,num_1表示個位,num_2表示十位,num_3表示百位,分別通過(num/1) % 10,(num/10) % 10以及(num/100) % 10來獲得。

#include <math.h>
int main()
{
??? int sum = 0;
??? int number,last,cout = 1;
??? scanf("%d",&number);
??? while(number > 0)
??? {
??????? last = number % 10;
??????? if (last % 2 == (cout % 2))
??????? {
??????????? sum += pow(2,cout-1);

??????????? cout ++;
??????? }
??????? else
??????? {
??????????? sum += 0;
??????????? cout ++;
??????? }
??????? number = number / 10;
??? }
??? printf("%d",sum);
}
  在上述的代碼中,主要通過while(number > 0)以及number % 10和number/10來完成循環(huán)取值的運(yùn)算

?

2.從首位往后取。這里用的是念數(shù)字的例子

int main()
{
??? int abs_num,num;
??? int digit = 0;
??? int deal_num;
??? int number;
??? scanf("%d",&num);
??? abs_num = abs(num);
??? deal_num = abs_num;
??? // 記住考慮零的情況
??? if (num == 0)
??? {
??????? printf("ling");
??? }

??? while(deal_num > 0)
??? {
??????? deal_num = deal_num / 10;
??????? digit += 1;
??? }
??? for (digit; digit>0; digit--)
??? {
??????? int num_10 = 1;
??????? int digit_1 = 0; // digit_1用于內(nèi)層循環(huán)
??????? digit_1 = digit;
??????? while(digit_1-1 > 0)
??????? {
??????????? num_10 *= 10;
??????????? digit_1 = digit_1 - 1;
??????? }
??????? number = abs_num / num_10;
??????? abs_num = abs_num - num_10 * number;


??????? //digit表示位數(shù)
??????? /*此時要解決的問題
??????????? 1.得到首個數(shù)字 number
??????????? 2.將首數(shù)字刪去,得到后面的值
????????? 目前有num和digit 數(shù)字和位數(shù),如何處理?
??????????? 1.得到首數(shù)字:number = num / (10 * 10)
??????????? 2.去掉首數(shù)字: num = 439 digit = 3,得到num = num - 10 * 10 * number 得到num = 39(3-1個digit)
?????????? 所以得到 10*10最為重要
??????? */

???????? //現(xiàn)在可以得到4 3 9,最后要解決的是最后一位沒有空格的輸出問題
???????? if (num < 0)
??????????? printf("fu ");
??????????? num = abs(num); //只希望觸發(fā)一次,觸發(fā)后,直接將num變?yōu)榻^對值,此時>0
???????? if (digit > 1)
???????? {
???????????? switch(number)
???????????? {
???????????? case(0):
??????????????? printf("ling ");
??????????????? break;
???????????? case(1):
??????????????? printf("yi ");
??????????????? break;
???????????? case(2):
??????????????? printf("er ");
??????????????? break;
???????????? case(3):
??????????????? printf("san ");
??????????????? break;
???????????? case(4):
??????????????? printf("si ");
??????????????? break;
???????????? case(5):
??????????????? printf("wu ");
??????????????? break;
???????????? case(6):
??????????????? printf("liu ");
??????????????? break;
???????????? case(7):
??????????????? printf("qi ");
??????????????? break;
???????????? case(8):
??????????????? printf("ba ");
??????????????? break;
???????????? case(9):
??????????????? printf("jiu ");
??????????????? break;
???????????? }
???????? }
???????? else
???????? {
??????????? switch(number)
???????????? {
???????????? case(0):
??????????????? printf("ling");
??????????????? break;
???????????? case(1):
??????????????? printf("yi");
??????????????? break;
???????????? case(2):
??????????????? printf("er");
??????????????? break;
???????????? case(3):
??????????????? printf("san");
??????????????? break;
???????????? case(4):
??????????????? printf("si");
??????????????? break;
???????????? case(5):
??????????????? printf("wu");
??????????????? break;
???????????? case(6):
??????????????? printf("liu");
??????????????? break;
???????????? case(7):
??????????????? printf("qi");
??????????????? break;
???????????? case(8):
??????????????? printf("ba");
??????????????? break;
???????????? case(9):
??????????????? printf("jiu");
??????????????? break;
???????????? }
???????? }

??? }
}
  這里的核心思路

    假設(shè)num為439

??????????? 1.得到首數(shù)字:number = num / (10 * 10)
??????????? 2.去掉首數(shù)字: num = 439 digit = 3,得到num = num - 10 * 10 * number 得到num = 39(3-1個digit)

  ???? 那么就引出如何得到digit,這里的方法是每次num/10,digit++,一直循環(huán)至num == 0

    

    

轉(zhuǎn)載于:https://www.cnblogs.com/zhaoy-shine/p/10819297.html

總結(jié)

以上是生活随笔為你收集整理的C:如何分解整数(从末位往前取以及从首位往后取)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。