【問題描述】
編寫一函數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'為標志結束字符串。