從字符串頭到串中心,頭尾字符分別交換就可以,如下reverse
創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實(shí)施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元西吉做網(wǎng)站,已為上家服務(wù),為西吉各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
函數(shù)(自己實(shí)現(xiàn))
void
reverse(char
*s)
{
int
len
=
strlen(s)
-
1;
int
i
=
0;
if
(len
=
0)
return;
for(;;;)
{
char
t
=
s[i];
s[i]
=
s[len-i];
s[len-i]=t;
i++;
if(len
-
i
=
i)
{
break;
}
}
}
第一條語句在不同的編譯器下可能會有不同的結(jié)果的,因?yàn)檫@里存在一個順序點(diǎn)的問題.
即:
在執(zhí)行順序中某些指定的點(diǎn)叫做順序點(diǎn)。這個點(diǎn)上,之前所有的賦值所產(chǎn)生的副作用都已發(fā)生完成,并且在其后的賦值不能在該點(diǎn)產(chǎn)生任何副作用。
說白了就是:
最好不要試圖在一行語句里多次改變一個變量的值,否則編譯器可以隨便定義改變的時機(jī)和次序
參考鏈接:
請注意其中順序點(diǎn)的定義和介紹,和你的問題相關(guān)的描述應(yīng)該是"在函數(shù)所有參數(shù)賦值之后但在函數(shù)第一條語句執(zhí)行之前"這句話
要調(diào)換三個數(shù)的順序,用排列組合原理簡單的計算總共有6種方法,不知道樓主是想按其中某種方法交換變量的具體數(shù)值,還是將所有6種排序都打印出來?
例如,a=1,b=2,c=3,交換后結(jié)果為:a=3,b=1,c=2.
首先需要兩個中間變量作為交換的媒介。程序如下
:
main()
{
int
a=1,b=2,c=3;
int
*x=a,*y=b,*z=c;/*定義3個指針變量,并分別賦予初值為a,b,c的地址。*/
int
*p=null,*s=null;/*x為交換中介指針變量,初始化為空*/
*p=*x;
*s=*y;
*x=*z;
*y=*p;
*z=*s;
printf("%d
%d
%d",a,b,c);
getch();
}
其實(shí)交換數(shù)不需要用到指針,直接運(yùn)用變量本身也可交換。當(dāng)然指針交換的好處在于函數(shù)內(nèi)部可以實(shí)際交換兩個數(shù)的值。
假定數(shù)據(jù)長n,輸入一個整數(shù)m,
1、使數(shù)組的后n-m個元素移到前邊,前m-1個元素在數(shù)組中從最后位置倒序排列
#include
"stdio.h"
main()
{
int
i,n,m,t,j;
int
d[200];
printf("\n輸入n的值(n200):");
scanf("%d",n);
for(i=0;in;i++)d[i]=i;
printf("\n輸入m的值(m200):");
scanf("%d",m);
printf("\n輸出調(diào)整前的數(shù)據(jù):\n");
for(i=0;in;i++)printf("%d
",d[i];
//調(diào)整程序開始
for(i=0;im;i++)
{//n-m個數(shù)前移了
t=d[0];
for(j=1;jn;j++)d[j-1]=d[j];
d[n-1]=t;
}
for(i=0;im/2;i++)
{//倒序
t=d[n-1-i];
d[n-1-i]=d[m+i];
d[m+i=t;
}
printf("\n輸出調(diào)整后的數(shù)據(jù):\n");
for(i=0;in;i++)printf("%d
",d[i];
}
其實(shí)就是內(nèi)存地址的內(nèi)容互換了;
p1 = a1,就是取了a1在內(nèi)存中的地址給p1,這個指針,那么p1就指向了a1的那塊內(nèi)存。
同理p2指向a2的內(nèi)存。
然后*p1是取p1內(nèi)存中的內(nèi)容,也就是a1,賦值給a;
然后把*p2把p2內(nèi)存的內(nèi)容給*p1指向的內(nèi)存。然后把a(bǔ)的值給p2指向的內(nèi)存,*p2 = a;完成值的互換。
解答:
1.??? 注意形式參數(shù)和實(shí)際參數(shù)的區(qū)別,主函數(shù)中的x,y是實(shí)際參數(shù),swap函數(shù)中的a,b是形式參數(shù)。他們各有自己的存儲空間,互不干擾。
2.??? 在程序適當(dāng)位置加上輸出地址的語句,即可看出為什么回到主程序后,x,y的值為什么不交換。
為了更形象,可以用圖表示它們的關(guān)系:
可見,交換的只是swap函數(shù)中的a,b值,對主函數(shù)中的a,b值沒有影響。
3. ? ?修改的方法,將swap的交換變成值的交換。
網(wǎng)頁名稱:c語言調(diào)換順序函數(shù),函數(shù)變換順序
URL鏈接:http://chinadenli.net/article42/hegihc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、軟件開發(fā)、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站制作、小程序開發(fā)、
聲明:本網(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)