⑴ c語言數組倒序輸出如何做
#include<stdio.h>
voidmain()
{
inta[32],x,i,m;
intchange(intx,inta[]);//函數聲明
scanf("%d",&x);
m=change(x,a);
for(i=0;i<m;i++)
printf("%d",a[i]);
}
intchange(intx,inta[])//要和函數聲明一致,所以後面也要填intx,inta[]
{
intn=0,t,k;
do{a[n]=x%2;
x=(unsignedint)x>>1;//要考慮到參數intx有可能為負數所以填x=x/2是不行的。
//如果x>=0的話填x=x/2沒有問題,實際上我估計這里出題者的本意希望填x/2,但是如果當x為負數的時候
//會出錯的,要麼填x=(unsignedint)x/2也是可以的,不過x=(unsignedint)x/2的運行效率遠遠低於x=(unsignedint)x>>1。這里牽涉的東西比較多,三言兩語說不清
//如果想了解原因,建議回去看譚浩強的強制類型轉換、正數和負數的2進製表示、移位3個知識點
n++;
}while(x!=0);
//do...while()這個功能就是把這個數的二進制的位存入這個數組中
for(k=0;k<n/2;k++){
t=a[k];
a[k]=a[n-k-1];//實現數組中2個數交換
a[n-k-1]=t;
//for循環是為了交換順序,比如x=11是的二進制碼是1011這4個碼一次存在a[3]a[2]a[1]a[0]中,而輸出的時候是按a[0]a[1]a[2]a[3]這樣輸出的如果沒有這個交換屏幕上看到的會是1101
}
returnn;//返回值是數組中有用數據的個數
}
這個代碼是經計算機運行驗證的,絕對沒有問題的,如果覺得好,請採納,謝謝
⑵ C語言怎麼反序輸出
最簡單的反序輸出,就是把數組反序輸出。只需要從最大下標開始,向0下標循環輸出就可以了。
比如將字元串(字元數組)反序輸出的代碼如下:
voidreverse_output_str(char*str)
{
intlen=strlen(str)-1;//得到最大下標
while(len>=0)printf("%c",str[len--]);//反序輸出直到str[0]
}
其它類的反序輸出,也都可以歸結為類似的情況。先把要輸出的正序輸出到一個數組,然後把這個數組反序輸出。
比如把一個10進制數反序輸出,即輸入1234,輸出4321,就可以採用類似的方式:
voidreverse_int_output(inta)
{
charbuf[20];
sprintf(buf,"%d",a);//將a轉為字元串
reverse_output_str(buf);//調用剛才的函數反序輸出。
}