(3)進(jìn)制轉(zhuǎn)換 矩陣轉(zhuǎn)置 字符處理

通信

1.進(jìn)制轉(zhuǎn)換

(1)十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制數(shù)
一個(gè)十進(jìn)制正整數(shù)m轉(zhuǎn)換成r進(jìn)制數(shù)的思路是窟勃,將m不斷除以r取余數(shù)祖乳,直到商為0時(shí)止,以反序輸出余數(shù)序列即得到結(jié)果秉氧。
注意眷昆,轉(zhuǎn)換得到的不是數(shù)值,而是數(shù)字字符串或數(shù)字串汁咏。
例如亚斋,任意讀入一個(gè)十進(jìn)制正整數(shù),將其轉(zhuǎn)換成二至十六任意進(jìn)制的字符串攘滩。

#include <stdio.h>
int main(){
    int Type,a,b[10],i=0,c=0;
    printf("請(qǐng)輸入轉(zhuǎn)換類型:1帅刊、十進(jìn)制轉(zhuǎn)二進(jìn)制,2漂问、二進(jìn)制轉(zhuǎn)十進(jìn)制\n");
    scanf("%d",&Type);
    printf("請(qǐng)輸入原數(shù)據(jù)");
    scanf("%d",&a);
    switch(Type)
    {
        case 1 :
            while(a!=0){
                b[i]=a%2;
                a/=2;
                i++;
            }
            printf("二進(jìn)制位:");
            i--;
            //反序輸出余數(shù)序列
            for(;i>=0;i--)
                printf("%d ",b[i]);
            printf("\n");
            break;
        case 2 :
            while(a!=0){
                b[i]=a%10;
                a/=10;
                i++;
            }
            i--; 
            for(;i>=0;i--)
                c=c*2+b[i];
            printf("十進(jìn)制為:%d\n",c);
            break;  
    } 
}

參考:http://blog.csdn.net/lcj8/article/details/2174147

#include <stdio.h>
int main()
{
  int num,a[100],i=0;
  printf("輸入想要轉(zhuǎn)換的10進(jìn)制數(shù):");
  scanf("%d",&num);
  printf("\n轉(zhuǎn)換成16進(jìn)制數(shù)后是:");
  do{
    a[i]=num%16;
    num=num/16;
    i++;
    }while(num);
    i--;
    for (;i>=0;i--){
      if(a[i]>=10){
        a[i]+=55;
        printf("%c",a[i]);
        }else{
            printf("%d",a[i]);
        }
    }
    printf("\n");
    return 0;
}

(2)其他進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)
其他進(jìn)制整數(shù)轉(zhuǎn)換為十進(jìn)制整數(shù)的要領(lǐng)是:“按權(quán)展開(kāi)”赖瞒,例如,有二進(jìn)制數(shù)101011蚤假,則其十進(jìn)制形式為1×25+0×24+1×23+0×22+1×21+1×20=43栏饮。若r進(jìn)制數(shù)an……a2a1(n位數(shù))轉(zhuǎn)換成十進(jìn)制數(shù),方法是an×r n-1+……a2×r1+a1×r0磷仰。
注意:其他進(jìn)制數(shù)只能以字符串形式輸入袍嬉。
例:任意讀入一個(gè)二至十六進(jìn)制數(shù)(字符串),轉(zhuǎn)換成十進(jìn)制數(shù)后輸出灶平。

2.矩陣轉(zhuǎn)置

矩陣轉(zhuǎn)置的算法要領(lǐng)是:將一個(gè)m行n列矩陣(即m×n矩陣)的每一行轉(zhuǎn)置成另一個(gè)n×m矩陣的相應(yīng)列伺通。
例:將以下2×3矩陣轉(zhuǎn)置后輸出。
即將
1 2 3
4 5 6
轉(zhuǎn)置成
1 4
2 5
3 6

#include <stdio.h>
#define M 3
#define N 4 
int main(){
    int a[M][N]={0},b[N][M]={0};
    int i,j;
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<M;i++){
        for(j=0;j<N;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
            b[j][i]=a[i][j];
    for(i=0;i<N;i++){
        for(j=0;j<M;j++)
            printf("%d ",b[i][j]);
        printf("\n");
    }
}

3.字符處理

(1)字符統(tǒng)計(jì):對(duì)字符串中各種字符出現(xiàn)的次數(shù)的統(tǒng)計(jì)逢享。
例:任意讀入一個(gè)只含小寫(xiě)字母的字符串罐监,統(tǒng)計(jì)其中每個(gè)字母的個(gè)數(shù)。

參考:http://blog.csdn.net/cyuyanenen/article/details/51736607
    for (i = 0; i < strlen(str); i++)
        if (str[i] >= 'a' && str[i] <= 'z')
            lowAlpha++;
        else if (str[i] >= 'A' && str[i] <= 'Z')
            upAlpha++;
        else if (str[i] >= '0' && str[i] <= '9')
            num++;

#include <stdio.h>
int main()
{
    int a[100]={0},i;
    char c;
    while((c=getchar())!='\n'){
        for(i=65;i<=90;i++)
        //大寫(xiě)字母加32為對(duì)應(yīng)小寫(xiě)字母
            if(c==i+32)
                a[i]++;
    }
    for(i=65;i<=90;i++)
        if(a[i]>0)
            printf("%c:%d\n",i+32,a[i]);
}

(2)字符加密
例如瞒爬、對(duì)任意一個(gè)只含有英文字母的字符串笑诅,將每一個(gè)字母用其后的第三個(gè)字母替代后輸出(字母X后的第三個(gè)字母為A调缨,字母Y后的第三個(gè)字母為B,字母Z后的第三個(gè)字母為C吆你。)
參考:http://blog.csdn.net/liuhui_8989/article/details/13398793

#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 20

int main()
{
 int nlen = 0,i;
 char words[MAX_LENGTH] = {};
 scanf("%s", words);//讀入字符串
 nlen = strlen(words);
 if (nlen > 0 && nlen <= MAX_LENGTH)
  printf("input: %s\n", words);
 else
 {
  printf("input words too long!\n");
  return -1;
 }
 for(i = 0; i < nlen; i++)
 {
    //所有都加3弦叶,當(dāng)超過(guò)'z'的值后,減去26 
  if (words[i] >= 'a' && words[i] <= 'z')
  {
   words[i] += 3;
   if (words[i] > 'z')
    words[i] -= ('z' - 'a'+1);
  }
  
  if (words[i] >= 'A' && words[i] <= 'Z')
  {
   words[i] += 3;
   if (words[i] > 'Z')
    words[i] -= ('Z' - 'A'+1);
  }
 }
 printf("output: %s\n", words);
 return 0;
}

4.整數(shù)各數(shù)位上數(shù)字的獲取
算法核心是利用“任何正整數(shù)整除10的余數(shù)即得該數(shù)個(gè)位上的數(shù)字”的特點(diǎn)妇多,用循環(huán)從低位到高位依次取出整數(shù)的每一數(shù)位上的數(shù)字伤哺。

例1、任意讀入一個(gè)5位整數(shù)者祖,輸出其符號(hào)位及從高位到低位上的數(shù)字立莉。
參考:http://blog.csdn.net/yuliu0552/article/details/6649312/

#include <stdio.h>
#define MAX 10
int main(){
    int a,i=0;
    int b[MAX]={0};
    scanf("%d",&a);
    if(a>=0){
        printf("+");
    }else{
        printf("-");
        a=(-a);
    }
    while(a){
        b[i]=a%10;
        a/=10;
        i++;
    }
    i--;
    for(;i>=0;i--){
        printf("%d",b[i]);
    }
} 

例2、任意讀入一個(gè)整數(shù)七问,依次輸出其符號(hào)位及從低位到高位上的數(shù)字蜓耻。
[分析]此題讀入的整數(shù)不知道是幾位數(shù),但可以用以下示例的方法完成此題:
例如讀入的整數(shù)為3796械巡,存放在x中刹淌,執(zhí)行x%10后得余數(shù)為6并輸出;將x/10得379后賦值給x讥耗。再執(zhí)行x%10后得余數(shù)為9并輸出有勾;將x/10得37后賦值給x……直到商x為0時(shí)終止。

例3古程、任意讀入一個(gè)整數(shù)蔼卡,依次輸出其符號(hào)位及從高位到低位上的數(shù)字。
[分析]此題必須借助數(shù)組將依次求得的低位到高位的數(shù)字保存后挣磨,再逆序輸出雇逞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茁裙,隨后出現(xiàn)的幾起案子塘砸,更是在濱河造成了極大的恐慌,老刑警劉巖呜达,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谣蠢,死亡現(xiàn)場(chǎng)離奇詭異粟耻,居然都是意外死亡查近,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)挤忙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霜威,“玉大人,你說(shuō)我怎么就攤上這事册烈「昶茫” “怎么了婿禽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)大猛。 經(jīng)常有香客問(wèn)我扭倾,道長(zhǎng),這世上最難降的妖魔是什么挽绩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任膛壹,我火速辦了婚禮,結(jié)果婚禮上唉堪,老公的妹妹穿的比我還像新娘模聋。我一直安慰自己叮盘,他們只是感情好捉片,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布氏捞。 她就那樣靜靜地躺著铸本,像睡著了一般溪厘。 火紅的嫁衣襯著肌膚如雪五续。 梳的紋絲不亂的頭發(fā)上可霎,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天科乎,我揣著相機(jī)與錄音占调,去河邊找鬼暂题。 笑死,一個(gè)胖子當(dāng)著我的面吹牛究珊,可吹牛的內(nèi)容都是我干的薪者。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼剿涮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼言津!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起取试,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悬槽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瞬浓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體初婆,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年猿棉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磅叛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡萨赁,死狀恐怖弊琴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情杖爽,我是刑警寧澤敲董,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布紫皇,位于F島的核電站,受9級(jí)特大地震影響腋寨,放射性物質(zhì)發(fā)生泄漏聪铺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一萄窜、第九天 我趴在偏房一處隱蔽的房頂上張望计寇。 院中可真熱鬧,春花似錦脂倦、人聲如沸番宁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝶押。三九已至,卻和暖如春火欧,著一層夾襖步出監(jiān)牢的瞬間棋电,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工苇侵, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赶盔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓榆浓,卻偏偏與公主長(zhǎng)得像于未,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子陡鹃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容