一道c語言題目,一道C語言題目

2021-12-19 10:14:25 字數 4436 閱讀 3773

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 ...