請教一道C語言題目,求解一道C語言題目

時間 2023-03-08 09:10:02

1樓:

呵呵 這個 容易啊 就是個 強制型別轉換的意思。

首先 long 型別 佔 四個位元組。

char 型別 佔 一個位元組。

明白了這個 就好解決了。

char *p="abcdefgh",*r;

long *q;

這兩行 標明 p是指向字元的指標 並且 指向abcdefgh這個字串(實際是指向a)

r 為指向字元的指標。

q 為指向長整形的指標。

下面 q=(long *)p; 這一步 吧p這個指向字元的指標 強制轉換成了 指向長整形的 指標 把值 賦予 q (這個解釋夠直接吧) 具體的 由於 長整形是四個位元組 所以 現在 p指向型別 就以 四個位元組為一個單位 移動了 (但是 其值 任然 a的地址 只是 移動的單位變數 ——原來是 一個位元組,現在是四個位元組啦)

先後 q++就很好理解了。

移動的 步長 是四個位元組 那麼 自然 q++之後 q就指向了 e了 (實際有個公式 好像。

是 (q++)q+sizeof(q所指型別) 大概就是這麼個意思 (strlen就是 求 此型別 的位元組數)

然後 r的情況 就類似啦 反過來 就行啦 q又被強制轉換成 指向字元型別的啦 現在 步長又是一個位元組啦 (具體原理 與上面所說 類似)

最後。printf("%s",r); 就是列印出 r所指字串的值啦 (雖然r是指向字元型別 但注意 是%s 是列印字串,如果是 %c 那列印的就是e)

具體 字元指標列印字串是這樣的 , 函式自動 從當前指標指向位置(e的位置)像後掃描,知道找到 \0 然後 將 這個字串序列列印出來。

前面 *p="abcdefgh", 賦值是 h後面系統自動加上了 \0的 只是 顯示不出來而已 (這才是 他成為一個字串的 標誌 結尾標誌)

答案自然是 efgh 啦。

解釋完畢 希望有幫助。

2樓:匿名使用者

q=(long*)p意思是把指向字元陣列的指標p強制轉換成指向long (int)的指標;

q其實也是指向那個字串的(存放的是字串的首地址),q++是跳4個位元組(即指向di五個字元的地址)

再讓r也指在此處,顧輸出的是第五個字元以及以後的字元,即efgh

3樓:原味三分甜咩

q=(long*)p; /強制轉換p的資料型別,轉換成long型,long佔4個位元組,指向e*/

r=(char*)q; /強制轉換q的資料型別,轉換成char型,並把r的首地址指向e,故輸出的就是efgh*/

求解一道c語言題目

4樓:匿名使用者

++和--執行優先於*

所以,語句b=++a*--a是如下執行:

先是++a,a=6;接著是--a,a=5;

最後執行*,此時的a=5;所以b=5*5=25

5樓:sky_淺眉

++和--執行優先於*

所以執行完++ 後才執行*

所以結果是25 還有什麼叫機試結果為30,我想不通你那什麼年代的電腦了。

6樓:網友

結果可能取決於編譯器,我執行的結果是30,也是容易理解的答案,所以問題本身有問題,而且實際程式設計中絕對避免這種表示式,軟體開發不是做題。

求解一道c語言題目

請教高手一道c語言題 15

7樓:水墨江南客

樣例輸入 4 表示有四組輸入。

然後對應的5 | 9 | 16 | 11就是四個輸入輸入5 對應的輸出 5

輸入9 對應的輸出9 7 11 17 13 5輸入16對應的輸出no number can be output !

輸入11對應的輸出11 17 13 5

問一道c語言的題

8樓:在岸上的魚

int a[3][2]為一個三行兩列的元素1 2

*p[3]為指標陣列,陣列中的每個元素都是整形的指標。

a[1]為指向二維陣列第二行首地址的指標。

p[0]=a[1],使p[0]也指向陣列的第二行的首地址p[0]+1,移動指標p[0]使之挪動一個單元即指向第二行第二個元素*(p[0]+1)取出p[0]所指單元的內容即a[1][1]

9樓:匿名使用者

p[0]=a[1]這個是行座標,如果只是*(p[0])即為a[1][0]。可是它+1,+1是找列座標啊,就變成a[1][1]。

10樓:大雪滿弓刀楊炯

在2維陣列中a[1]的意思就是陣列第二行的首地址,將它賦值給指標陣列p[0],而p[0]指向行的指標陣列,所以p[0]+1就是a[1][1]的地址,所以*(p[0]+1)就是a[1][1]了,還是不明白的話,看看c語言中將指標的那部分,、、

11樓:匿名使用者

沒有錯, 具體我也不知道怎麼說,書上就是這麼規定的,《c程式設計》--譚浩強 看了指標就知道了。

12樓:鼴鼠可可

p[0]=a[1];說明p[0]是指向a[1]的,記錄的是a[1]的地址從,那開始,所以是a[1][1])

13樓:匿名使用者

指標陣列p的第一個地址指向陣列a 則*(p[0]+1)即表示a[1][1])啊 依此*(p[0]+2)表示a[1][2] 這是一種表示方法啊 記住就行了。

14樓:金蔚逮忻歡

fun函式中定義的a為靜態變數,只初始化一次main函式開始執行,你的程式有點錯。

voidmain()

如果是這樣的話。

那麼輸出的結果為。

246輸出的換行在for語句全部執行完以後輸出沒意義void

main()

}如果這樣的話。

結果就是24

6每呼叫一次fun後輸出一個換行。

15樓:聊慶赫連含煙

fun函式中a是靜態資料型別static,就是說它初始化後在記憶體中就有個固定的地址,函式返回後a仍然存在。

每次呼叫fun函式後a的值都會加2,所以最後的結果就是246printf(""

//表示換行。

求做一道c語言題目

16樓:匿名使用者

c++的。

#include

using namespace std;

int main()

{static const int gounianyear = 2006;

cout<<"輸入一個21世紀的狗年"<>yearget;

if(0 ==yearget-gounianyear)%12){for(;yearget<3000; )cout<

17樓:最終幻夜

#include

int main()

int n,i;

scanf("%d",&n);

for(i=0;i<8;i++)

if(dogyear[i]>=n)

printf("%d ",dogyear[i]);

}您好 不知道這樣是否滿足您的要求 望採納。

18樓:小菜鳥2無聊寫**

樓主,樓上不太會說話,不要理,等等我貼出**。沒有其他語言基礎的c語言初學者起步是慢了一點,但是要渣油~

#include

int main()

return 0;}

求解一道c語言簡單題目

19樓:步行者

選擇c資料庫中關係除法,是這樣的:

比如r除以s,則首先在r中查詢與s的對應項,題目r中只有第三條記錄是符合條件的,r sa b c a bc 3 1 c 3當r除以s後得到的是剩下的列屬性,即c

求解一道C語言題,求解一道C語言題目

不考慮效能優化,只考慮功能可以這麼寫 include stdio.h include string.h define max str len 128int main char str2 max str len scanf s s str1,str2 for i 0 i strlen str1 i e...

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

號和四門功課的成績從鍵盤讀入。2 計算每個學生的總分和平均分。3 按平均成績進行排序,輸出 愛吃米糕 親,這個最基本的,你要自己練習才能慢慢寫出程式啊 小輝丿仔 這個你得自己做 給你提醒一下,可以陣列做 include include define null0 define len sizeof s...

一道簡單的c語言題目,一道簡單的C語言題目

s 2 是一個指標陣列,指向兩個字串 s 0 s 1 while s 1 0 迴圈,條件為 s 1 0 字串的最後一個值是 0 這裡遍歷s 1 字串,一共會遍歷4次。 寒鐵礦 你定義了一個指標陣列,s 0 指向的是第一個 字串的起始地址,s 1 指向的是第二個 字串的起始地址。while s 1 0...