1樓:匿名使用者
就是個斐波那契數的列遞迴解法啊,k項==k-1項與k-2項的和。你可以函式慢慢算。。。
fib(0)==0, fib(1)==1,fib(1)==1,fib(3)==fib(1)+fib(2)
0,1,1,2,3,5,8,13...
fib(7)= fib(6)+fib(5)=fib(5)+fib(4)+fib(4)+fib(3)=fib(4)+fib(3)+...
2樓:匿名使用者
無聊的人出的無聊的題目。
手工演算一次,找出規律(或者從判斷條件及運算推演出規律)不就行了。
重複計算不就是計算機的強項嗎?快、不會出錯、同樣的條件肯定能得到同樣結果。
這題目到底考核什麼能力呢?演算法設計能力還是**分析能力?還是只是為了學會用遞迴?
3樓:匿名使用者
函式遞迴呼叫:fib(7)=fib(6)+fib(5);然後再呼叫fib函式,求出fib(6)=fib(5)+fib(4),fib(5)=fib(4)+fib(3);以此類推,最後求出fib(1),fib(2)的值,就可以算出fib(3),fib(4),直到fib(7);
一道c語言題目
4樓:匿名使用者
#include
int main(void)
else
}else}}
return 0;}
5樓:戰無ko勝
|||#include
#include
int main()
if(i%2==0)
printf("a\n");
else
printf("b\n");
else if(x-y==2||y-x==2)else
return 0;
}新手上路
一道c語言題目
6樓:匿名使用者
首先,change函式應該置於main函式之前,或者在main函式前生命change函式(在main函式前加入這樣一行:char change (char*);)
其次,你的change函式裡有點邏輯問題:
迴圈體裡的判斷錯誤,你的邏輯是如果p指向空格,p的下一位指向'a'到『z』,那麼p的下一位減少32,似乎是正確的,但是第一位您沒有考慮,因為第一位不是空格,而是字母。
正常的邏輯是這樣的,判斷p當前是否指向『a』到『z',如果是,則當前位減32,如果p指向空格『 』,直接跳過,如果p指向『.』,退出迴圈,如果p指向其他,則不作操作,直接跳過。
參考的改正後的change**:
char change(char *p)
return *(p+1);}
7樓:匿名使用者
#include
#include
int main()
char change(char *p)
return *(p+1);}
8樓:匿名使用者
|//先宣告,或者實現提前
char change(char *p);
void main()
char change(char *p)
return *(p+1);}
9樓:匿名使用者
#include
void main()
char change(char *p)
while(*p!='\0')
p++;
}return *(p+1);
} 幫你改好了 我要分
10樓:匿名使用者
#include
void main()
puts(a);
} 你這
樣試試!
一道c語言題目
11樓:
聯合體,i和ch共享同一段記憶體,i是32為整型變數,ch是2個元素的字元陣列,
正常小段儲存模式下,先存低位元組再存高位元組,ch[0]是i的低位元組那個位置,ch[1]是i的第二個位元組的位置。
這裡你只對ch[0],ch[1]賦值了,得假定其後兩個位元組值為0(可能你這裡int是16位的,什麼編譯器呢?)。那麼i對應記憶體下連續位元組值為13 0 0 0,實際int值就是13了
12樓:匿名使用者
1.共用體表示幾個變數共用一個記憶體位置,在不同的時間儲存不同的資料型別和不同長度的變數。在union中,所有的共用體成員共用一個空間,並且同一時間只能儲存其中一個成員變數的值。
2.當一個共用體被宣告時, 編譯程式自動地產生一個變數, 其長度(以位元組byte為單位,一個byte是8個二進位制位)為聯合中最長的資料型別長度的整數倍,例如
union foo
;在這個union中,foo的記憶體空間的長度為12,是int型的3倍,而並不是陣列的長度10。若把int改為double,則foo的記憶體空間為16,是double型的兩倍。
3.綜上可知,你定義的pw實際在記憶體中分配的空間是4個byte,因為int資料型別長度是4個byte,而char 字元型資料型別是一個byte。pw實際在記憶體中分配的空間示意圖
0000 0000(4,最高位)
0000 0000(3)
0000 0000(2)
0000 0000(第一個byte,最低位)
4.於是a.ch[0]=13,實際佔用的是第一個byte,實際存放方式是:
0000 1101,a.ch[1]=0佔用第二個byte,實際存放方式是:0000 0000,於是,最後輸出結果是13
5.如果你將a.ch[1]=1,則第二個byte,實際資料是:
0000 0001,於是,最後輸出結果是1乘以(2的八次方) + 13 = 256 + 13 = 269,這事二進位制的運算就不多說了。
6.如果對共同體還不是很瞭解,你可以看一下
13樓:匿名使用者
union 聯合體
union 聯合體的特點是它所有的資料成員共用一個空間,同一時間只能儲存一個資料成員
一個union只配置一個只夠打的空間老容納最長的資料成員
union 型資料所佔的空間等於其最大的成員所佔的空間。對union 型的成員的存取都相 對於該聯合體基地址的偏移量為0 處開始,也就是聯合體的訪問不論對哪個變數的存取都 是從union 的首地址位置開始
所以在union pw
a ;最大長度是int,所以pw的空間大小就是int型別
在分析樓主的**之前,先介紹一下計算機排列資料的兩個通用規則 1.大端法,2.小端法
1.大端法:資料從最高有效位元組到最低有效位元組順序排序
2.小端法:資料從最低有效位元組到最高有效位元組順序排序
繼續我們前面的分析
假設pw的地址位於0x100處,且int型別的資料位32位
執行**a.ch[0]=13;a.ch[1]=0後
其十六進位制是0x0000 0013h
大端法的排列順序是
0x100 0x101 0x102 0x103
00 00 00 13
而小端法的排列順序是
0x100 0x101 0x102 0x103
13 00 00 00
注意:在0x0000 0013 中 高位位元組是0x00,而低位位元組是0x13
終上所述
如果樓主的計算機是以大端法排列資料的話
printf("%d\n",a.i);將輸出0
如果是小端法的話
printf("%d\n",a.i);將輸出13
若樓主有不明白的地方,可以追問
14樓:匿名使用者
只要你這機型是高於32位機(int所佔位元組2,或4),答案就是13
a.ch[0]=13;a.ch[1]=0,則記憶體中分佈為0x000d,那麼a.i的值就是0x000d即13
一道c語言題目
15樓:mexico卡卡
#include
int main()
for (i = 0; i < 2 * k; i++)n = 1;
while (1)
if (i < 0)break;
n++;
}cout << temp << endl;
return 0;}
求解釋一道C語言檔案題目,一道c語言填空題,程式沒看懂 求詳細解釋!
1 輸出的結果為 123456 2 分析 void main fp fopen d3.dat wb fwrite a,sizeof int 3,fp 把陣列a的前三個元素寫入檔案 fseek fp,sizeof int 3,seek set 把檔案指標從檔案頭開始向後移動12位元組 fread a,...
一道C語言習題!?大家幫幫忙一道c語言的題目請各位幫幫忙,急得很,先謝謝大家了!!!
an x x bai2 x du3 x 4 1 n 1 x n an 1 x x 2 x 3 x 4 1 n 1 x n 1 n x n 1 x 1 an 所以第一個空zhi是 x 第二dao 個是 1 px x,n 1 求 baix x 2 x 3 x 4 1 n 1 x n x提出後du 就是 ...
求高人解答一道c語言題目,求高人解答一道C語言題目
include include int crypt int decrypt void main int crypt if fp1 fopen file2.txt w null while 1 else break printf d n i fclose fp fclose fp1 return 0 ...