c語言fun函數(shù)兩束合并 c語言字符串合并函數(shù)

C語言編程 自定義兩個兩位數(shù)的整數(shù)合并函數(shù):

首先假設(shè)合并函數(shù)的功能:將兩個兩位數(shù)的整數(shù) a、b 合并成一個整數(shù)放在 c 中。合并的方

“真誠服務(wù),讓網(wǎng)絡(luò)創(chuàng)造價值”是我們的服務(wù)理念,成都創(chuàng)新互聯(lián)公司團(tuán)隊10年如一日始終堅持在網(wǎng)站建設(shè)領(lǐng)域,為客戶提供優(yōu)質(zhì)服。不管你處于什么行業(yè),助你輕松跨入“互聯(lián)網(wǎng)+”時代,PC網(wǎng)站+手機(jī)網(wǎng)站+公眾號+成都微信小程序。

式是:將 a 的十位和個位數(shù)依次放在 c 數(shù)千位和十位上,b 數(shù)的十位和個位數(shù)依次放在 c 數(shù)的個位和百位上。

實(shí)現(xiàn)方法如下:

C語言編程:將a、b的兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。(設(shè)計子函數(shù)fun實(shí)現(xiàn)此功能)?

int?fun(int?a,int?b){

int?c=a%10;

c=(a/10)*100+c;

c=(b%10)*10+c;

c=(b/10)*1000+c;

return?c;

}

C語言問題,解釋下fun函數(shù)部分

先說結(jié)果:fun函數(shù)其實(shí)是用來將兩個字符串輪流交叉合并。

也就是說,若a[]=dfg,b[]=678,則fun(a,b)后,a[]=d6f7g8

對于一些特殊情況,

1.當(dāng)strlen(a)strlen(b),如a[]=dfg,b[]=67899,則運(yùn)行后a[]=d6f7g899,不用再交叉,直接補(bǔ)上多出來的b字符串的部分99

2.當(dāng)strlen(a)strlen(b),如a[]=dfghjk,b[]=678,則運(yùn)行后a[]=d6f7g8hjk,不用再交叉,直接補(bǔ)上多出來的來自a字符串的部分hjk

以下是分析:

先看內(nèi)層循環(huán)for(k=strlen(s1);k=i;k--) s1[k+1]=s1[k];

這實(shí)際上就是將字符串s1從s1[i]開始到末尾依次后移1位,這樣s1[i]的位置就空出(這里的空出其實(shí)是有值的,但由于已經(jīng)令s1[i+1]=s1[i],所以s1[i]相當(dāng)于空出)以便插入s2[j]到sa[i]

s1[i]=s2[j];

j++;i++;

if(s1[i]) i++;

這一段,實(shí)際上是在執(zhí)行插入賦值,每一次賦值后,i,j分別順移一位,其實(shí)你可能也注意到了,s1其實(shí)應(yīng)該要移兩位,因為一位是保留s1的下一位,s2要插的位置是s1的下下位

所以,他有兩個i++(i對應(yīng)的是s1的序號),

但是他前面有個條件if(s1[i])

這個條件主要是針對s1比s2長設(shè)置的,當(dāng)s2還有值沒有插入,而s1已經(jīng)到字符串尾部,即有s1[i]=0(注意,這里的0不是指數(shù)值0,而是char=0,也就是空"\0"),此時,i就不用+2,+1即可,因為s2[j]只要插入到下一位,不用下下位

如果沒有這個條件,則每次都加入到下下為的話,由于s1序列中的\0沒有被s2覆蓋,則輸出時,到這個\0就已經(jīng)截止,如上面的特殊情況1,輸出就是a[]=d6f7g8,而不會是a[]=d6f7g899

然后外層循環(huán)就是為了保證s2序列全部遍歷

終于完了。。。嗯,不懂可以追問

將兩個數(shù)組合并到一個數(shù)組并排序的c語言程序編寫

這里是借用第三個數(shù)組。

原理:先將兩個數(shù)組復(fù)制到第三個數(shù)組中,然后對第三個數(shù)組排序

如果不使用第三個函數(shù),那么下面這個函數(shù)一樣可以做到,不過函數(shù)聲明就要改成:

char* fun(char *dest, char *str, char *dest)

/*------------------------------函數(shù)--------------------------------*/

char* fun(char *str1,char *str2,char *dest) //前提,目標(biāo)數(shù)組能偶容納兩個數(shù)組

{

char *tmp=dest;

char *tmp_dest=dest;

if(!dest)

return NULL;

while(*str1) //將str1復(fù)制進(jìn)dest

*tmp++=*str1++;

while(*str2) //將str2復(fù)制進(jìn)dest

*tmp++=*str2++;

tmp_dest--; //

while(*++tmp_dest) //選擇排序法

{

char *tmp_px=NULL;

tmp=tmp_dest;

while(*++tmp) //找到后面一串的最值

{

if(*tmp_dest*tmp)

tmp_px=tmp;

}

if(!tmp_px)

{

char ch=*tmp_dest;

*tmp_dest=*tmp_px;

*tmp_px=ch;

}

}

return dest;

}

編寫函數(shù)fun,其功能是:將兩個兩位數(shù)的正整數(shù)a、b合并形成一個整數(shù)放在c中。

代碼如下:

#include stdio.h

int fun(int a,int b){

int c=10*(b%10)+(a/10)+1000*(b/10)+100*(a%10);

return c;

}

int main() {

int a;

int b;

printf("請輸入第一個兩位數(shù)a:");

scanf("%d",a);

printf("請輸入第二個兩位數(shù)b:");

scanf("%d",b);

int c=fun(a,b);

printf("結(jié)果為:%d",c);

return 0;

}

擴(kuò)展資料

C語言自定義函數(shù)

強(qiáng)調(diào)一點(diǎn),C語言不允許函數(shù)嵌套定義;也就是說,不能在一個函數(shù)中定義另外一個函數(shù),必須在所有函數(shù)之外定義另外一個函數(shù)。main() 也是一個函數(shù)定義,也不能在 main() 函數(shù)內(nèi)部定義新函數(shù)。

注意:main 是函數(shù)定義,不是函數(shù)調(diào)用。當(dāng)可執(zhí)行文件加載到內(nèi)存后,系統(tǒng)從 main 函數(shù)開始執(zhí)行,也就是說,系統(tǒng)會調(diào)用我們定義的 main 函數(shù)。

求大神幫忙做道(C語言)的題! 編寫函數(shù)fun,其功能是:將兩個兩位數(shù)的正整數(shù)a,b合并成一個整數(shù)放在c中

怎么合并呢?

連接:?如65,23,合并為6523還是2365,還是6253,還是2635呢?

/*

請輸入兩個兩位正整數(shù)(任意一個為0則結(jié)束): 45 12

45和12的組合結(jié)果為 : 1524

請輸入兩個兩位正整數(shù)(任意一個為0則結(jié)束): 36 20

36和20的組合結(jié)果為 : 2603

請輸入兩個兩位正整數(shù)(任意一個為0則結(jié)束): 0 0

Press any key to continue

*/

#include stdio.h

int main() {

int a,b,n;

while(1) {

printf("請輸入兩個兩位正整數(shù)(任意一個為0則結(jié)束): ");

scanf("%d%d",a,b);

if(a == 0 || b == 0) break;

n = 1000 * (b / 10); // 取b的十位放到千位上

n += 100 * (a % 10); // 取a的個位放到百位上

n += 10 * (b % 10); // 取b的個位放到十位上

n += a/10; // 取a的十位放到個位上

printf("%d和%d的組合結(jié)果為 : %d\n",a,b,n);

}

return 0;

}

新聞名稱:c語言fun函數(shù)兩束合并 c語言字符串合并函數(shù)
鏈接分享:http://muchs.cn/article6/hheoog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、響應(yīng)式網(wǎng)站靜態(tài)網(wǎng)站網(wǎng)站營銷、網(wǎng)站制作、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司