HDU2031 进制转换【进制】
生活随笔
收集整理的這篇文章主要介紹了
HDU2031 进制转换【进制】
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問題鏈接:HDU2031 進(jìn)制轉(zhuǎn)換。這是一個(gè)入門訓(xùn)練題,自然用C語(yǔ)言編寫程序。
問題簡(jiǎn)述:參見上述鏈接。
問題分析:(略)。
程序說(shuō)明:需要注意的一點(diǎn)是,將一個(gè)10進(jìn)制數(shù)轉(zhuǎn)換為2進(jìn)制的話,字符串可能很長(zhǎng),字符數(shù)組需要大一點(diǎn)的空間,80=20*4字符是夠的,因?yàn)檎麛?shù)最長(zhǎng)只有10進(jìn)制19位。
本題還需要注意負(fù)數(shù)的處理!
參考鏈接:人們常用的是10進(jìn)制,有關(guān)10進(jìn)制轉(zhuǎn)換,可以參見:I00028 整數(shù)逆序。
/* HDU2031 進(jìn)制轉(zhuǎn)換 */#include <stdio.h> #include <string.h>void reverse(char s[]) {int i,j;int c;for(i=(s[0]=='-'?1:0),j=strlen(s)-1; i<j;i++,j--){c = s[i];s[i] = s[j];s[j] = c;} }void convert(int n, int r, char *s) {char *t;t = s;// 處理負(fù)數(shù)if(n<0) {*t++ = '-';n = -n;}while(n) {*t = n % r;if(*t >= 10)*t = *t - 10 + 'A';else*t = *t + '0';n /= r;t++;}*t = '\0';reverse(s); }int main(void) {int n, r;char t[80];while(scanf("%d%d", &n, &r) != EOF) {convert(n, r, t);printf("%s\n", t);}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/tigerisland/p/7564708.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的HDU2031 进制转换【进制】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.3、Android Studio使用
- 下一篇: 【转】开始iOS 7中自动布局教程(一)