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