c0402_將兩個兩位數的正整數a、b合並為一個四位整數


【問題描述】
編寫一函數int comb(int a,int b),將兩個兩位數的正整數a、b合並形成一個整數並返回。合並的方式是:將a的十位和個位數依次放在結果的十位和千位上, b的十位和個位數依次放在結果的個位和百位上。例如,當a=45,b=12。調用該函數后,返回5241。要求在main函數中調用該函數進行驗證:從鍵盤輸入兩個整數,然后調用該函數進行合並,並輸出合並后的結果。
【輸入形式】
輸入兩個兩位數的正整數,以空格隔開。
【輸出形式】
輸出合並后的正整數。
【輸入樣例】
45 12
【輸出樣例】
5241

--------------------------------

個人代碼:

#include <stdio.h>

int comb(int a, int b){
    int res,m[2],n[2];
    m[0] = a%10;//個位
    m[1] = a/10;//十位
    n[0] = b%10;//個位
    n[1] = b/10;//十位
    res = m[0]*1000+n[0]*100+m[1]*10+n[1];
    return res;
}

int main(){
    int a,b,res;
    scanf("%d %d",&a,&b);
    res = comb(a,b);
    printf("%d\n",res);
    getchar();
    return 0;
}

標答:

#include <stdio.h>
#include <stdlib.h>

int combine(int a, int b);

main()
{
    int a,b;
    scanf("%d %d", &a, &b);
    printf("%d\n",combine(a, b));
}

int combine(int m, int n)
{
    int s[2], t[2], i = 0, j = 0;
    char st[5];
    do{
        s[i++] = m % 10;
        t[j++] = n % 10;
    }while((m /= 10)*(n /= 10) > 0);

    st[0] = s[0] + '0';
    st[1] = t[0] + '0';
    st[2] = s[1] + '0';
    st[3] = t[1] + '0';
    st[4] = '\0';
    
    return atoi(st);
}

---------------------------

1、獲取某整數的各位值也可用atoi()函數實現:

頭文件<stdlib.h>

    int i = 0;
    char s[16];

    do {
        s[i++] = x % 10 + '0'; 
    } while ((x /= 10) > 0);
    s[i]='\0';
    
    x = atoi( s );

字符串s[]最后一個的值必須為'\0',因為atoi()函數是將字符串轉換為int型,以'\0'為標志結束字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM