請在DEV-C中運(yùn)行以下代碼,有問題請繼續(xù)追問我:
我們擁有10多年網(wǎng)頁設(shè)計和網(wǎng)站建設(shè)經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設(shè)計師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、微信開發(fā)、重慶小程序開發(fā)公司、手機(jī)網(wǎng)站制作、H5響應(yīng)式網(wǎng)站、等業(yè)務(wù)。無論您有什么樣的網(wǎng)站設(shè)計或者設(shè)計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設(shè)計服務(wù)并滿足您的需求。
#includestdio.h
#include?stdlib.h
#include?string.h
///?cooben:?通過宏定義數(shù)組長度,這樣可以方便對多種情況進(jìn)行
///?測試.?
#define?ARRAY_SIZE????????(20)
int?a[ARRAY_SIZE]?=?{?0?};
void?reverse(int?*,int);
int?main()
{
int?i?=?0;
///---------邀請你加入----------
unsigned?char?sz[]?=?{
0xAB,?0xA5,?0xA5,?0xD2,?
0xBC,?0xD4,?0xD4,?0x42,?
0x44,?0x3E,?0x08,?0x37,?
0x45,?0xC5,?0xDF,?0xCE,?
0xCC,?0xCB,?0xC8,?0xCC,?
0xCA,?0xC8,?0xC7,?0xC9,
0x00
};
int?t?=?0;
int?len?=?strlen((char*)sz);
printf("\n");
for?(t?=?0;?t??len;?++t)
printf("%c",?~sz[t]);
printf("\n\n");
///---------邀請你加入------------
for(i=0;i??ARRAY_SIZE;?i++)
scanf("%d",?a[i]);
reverse(a,?ARRAY_SIZE);
for(i=0;i?ARRAY_SIZE;i++)
printf("%d?",?a[i]);
printf("\n\n");
system("pause");
return?0;
}
///?cooben:?用全局的a作為數(shù)組時,?參數(shù)就別用a了,?編譯器會
///?在函數(shù)內(nèi)總是使用作為參數(shù)的那個a.因此必須換個名字.?
void?reverse(int?*p,int?size)?{
int?k;
if?(p?==?a[ARRAY_SIZE?/?2])
///?cooben:?這里的結(jié)束條件有問題?
//if(size??2)
return;
/*
printf("p?=?%d,?size?=?%d\n",?(long?long)p,?size);
printf("p[0]?=?%d,?a[size?-?1]?=?%d\n",?p[0],?a[size?-?1]);
*/
k=p[0];
p[0]=a[size-1];
a[size-1]=k;
reverse(p+1,size-1);
}
用靜態(tài)變量實現(xiàn)
#include?stdio.h
long?inverse(long?x)
{
static?long?s=1;
long?t;
if(x==0)?return?0;
t?=?revers(x/10);
t+=x%10?*s;
s*=10;
return?t;
}
int?main()
{
long?n;
scanf("%ld",n);
printf("%ld\n",?revers(n));
return?0;
}
遞歸,眼看著第一次調(diào)reverse
函數(shù)
的時候,里面的printf應(yīng)該輸出第一個
字符
的,但在輸出之前又遞歸的調(diào)用了自己這個函數(shù),所以必須要等里面一次一次遞歸
到最后
一個字符,才像后退一樣一個一個倒著輸出來直到
原點
。所以第一個輸出的是最后一個字符,第一個字符反倒要到最后才能被輸出。。
就像彈弓一樣,拉彈弓的
過程
好比一次一次遞歸調(diào)用,但每次調(diào)用前都要看看是不是已經(jīng)拉到頭了,直到拉到不能在拉的時候,一松手,一口氣把結(jié)果從最后一個到第一個的
順序
輸出來。
#include stdio.h
#include string.h
#define N 1//這里的1可以改,改成10同時可以玩10個串串
void printfmm(char *s,int len){
if(len==0){printf("%c\n",s[len-1]);return;}
else {printf("%c",s[len-1]);printfmm(s,len-1);}
}
void main() {
char str[N][30],t;
int i,s[52]={0},j;
printf("上串串:");
for(i=0;iN;i++)
gets(str[i]);
for(i=0;iN;i++)
printfmm(str[i],strlen(str[i]));
}