有一道C語言的題請教一下哈怎麼推出答案的謝謝哈

2022-06-29 17:57:12 字數 5901 閱讀 3232

1樓:曉晨之巔

輸出肯定是輸出字元'a'!

原因:*p=b,將陣列b的首地址(也是首個字元'a'的地址賦給p),然後進入函式

point (char *p) ,此時子函式種的p僅是point(p)的形參(意為:此處p可換其他變數,如a,bc等都可以,因為他只是形參),即是p的值就是'a'的地址,此處p加3,則將p指向字元'd',此時在子函式操作完,還未返回主函式時是這樣的,所以如果在子函式種輸出結果就肯定是字元'd'。但是由於沒有將p+3後的結果返回,所以形參的值改變並不能導致主函式實參p的改變,所以主函式p還是指向字元'a',所以輸出就是'a',而非'd'!!

若樓主想要返回的是'd'的地址,則需要將將改變後的形參返回給實參可做如下修改:

#include

char* point(char *a)

//此處子函式中的形參變數不影響值的傳回,用p和a或其他變數都一樣void main()

,*p=b;

p=point(p);

printf("%c\n",*p);

}此時輸出即為字元'd'!!!

2樓:

char b[4]=,*p=b; //定義字元指標p,並賦初值為字元陣列的首地址

point (p); // 呼叫函式實現p+=3,即地址加3,這時字元指標指向指向b陣列的第四個元素

printf("%c\n",*p); //在螢幕上列印b陣列的第四個元素,即「d」。

3樓:匿名使用者

輸出結果為: a

point (char *p)

//這個函式,只是改變了當前p值的大小,並沒有改變p地址中的內容,而p是個區域性變數,對主程式中的p沒有影響,因此,主程式的p依然指向'a' .

4樓:庹暄

因為p=p+3

則輸出*p為d

嗯輸出d

這三題c語言關於acm方面的題目,求幫忙解答一下,謝謝哈!!

5樓:袁世平

你這些題資料範圍其實都可以改大的= =,現在這個範圍就比較水了...

其實我第三題沒有看清楚= =,太模糊了...

第一題可以字串hash,或者用個map什麼的,然後求出每個連續的長度為m的子串,丟到hash裡面去看出沒出現過就好了。總共最多n個子串嘛...

第二題,n<=1000,那麼n^2就可以過了,所以你可以先求一個字首異或和,然後列舉左右端點l,r,然後[l,r]的異或和=s[r]^s[l-1],然後列舉的複雜度是n^2,所以就可以了...

第三題看不太清楚,最好有個文字啥的...那我就先只答前面兩題了...

如果還是沒聽懂,可以追問。

第一題**:字串hash的**,其實說實話是可以逐位比較的。

所以這份**感覺有點醜,你應該可以打出更好的:

#include

#include

#include

using namespace std;

typedef long long ll;

struct nodea[110];

int n,m,ans=0;

int rec[110];

char ch[110];

bool used[110];

const int mod=1423333;

int main()

return 0;}

請教高手下面的c語言問題,要答的清晰一點哈~謝謝了,好的話加分

6樓:

第一道題就是4啊;struct student stu[2]=,};

stu[0].a,b,c=2,3,4;stu[1].a,b,c=5,6,7;

t=stu[0].a+stu[1].b%stu[0].c;=>t=2+6%4=2+2=4

第二道題

int w=4,x=3,y=2,z=1;

if(x>y&&!(z==w)) ;x>y為1; z==w 為0;!(z==w)為1。

故if成立;輸出是printf("%d",(w

z:x)); ;w

x;z

z:x)的結果是z也即是1;所以最終結果是1

printf("%d",strlen("ats\n012\2\\"));輸出結果是9

strlen函式是遇到\0結束,在這裡\n的ascii為10,\2的結果是ascii為2的字元是個控制字元;\\是轉義出\;加上其他6個字元,一共9個字元;

7樓:

第一題:

答案當然是4.首先stu[0].a,stu[1].b,stu[0].c的值分別為2,6,4;

那麼2 + 6 % 4 = 2 + 2 = 4;(其中%是取餘數操作)。

第二題:

這道題稍微想一下還是能看懂的。

首先,if(x>y&&!(z==w)),判斷iif語句是否為真,經檢測,語句為真,則執行緊接著if後面的語句:

printf("%d",(w

在語句(w

(z

那麼,最後自然會輸出1.

最後一問:

printf("%d",strlen("ats\n012\2\\"));輸出結果為9:

這9個字元依次為:

『a』,'t','s','\n','0','1','2','\2','\\'。

其中」\「是轉義字元

8樓:匿名使用者

第一題, stu[0].a=2 stu[1].b=6 stu[1].c=4

t=2+6%4

6%4=2;

t=2+2

t=4第2題

主要是 x>y && !(z==w)

(x>y) && !(z==w)

x>y等於真即為1

z==w為假為0

!0為1

最後 x>y && !(z==w) 變成 1 && 1 結果為1 輸出

(w

相當於if(w

輸出welse if(z

輸出zelse

輸出x最後結果是輸出z,即1.

9樓:姑蘇城外人的人

第一個是2+6%4,按運算子優先順序和結合性來說,+%都是自左向右結合,而且%優先順序高於+,所以答案是4

第二個是第一個條件裡&&,&&前面的條件成立,才看後面的,當條件同時成立才會執行下面的語句,條件運算子的結合性是自右向左的,z

w:z,不成立就是z,所以結果過是1

最後一個是求字串的實際長度,不算字元前的空格和結束符『\0』,所以結果應該是9,字元『a』,『t『,』s『,』\n『,』0『,』1『,』2『,』\2『,』\\『

10樓:完美世界

第一道題目:結果是4

主要的是這條命令:t=stu[0].a+stu[1].b%stu[0].c;

其中:stu[0].a是2

stu[1].b是6

stu[0].c是4

那就是:t=2+6%4

根據運算子的優先順序:先算%後算+

所以:t=2+(6%4)

t=2+2

t=4第二道題目:結果是1

主要的是這條命令:x>y&&!(z==w)

首先:w=4,x=3,y=2,z=1;

判斷一下表示式結果是:.t. && !(.f.)

根據優先順序,先算!後算&&,則為:

.t. && !(.f.)

->.t. && .t.

->.t.

結果為真則執行:printf("%d",(w

主要的是表示式:w

首先:w

則執行:z

再判斷:z

所以表示式w

也就是1

總結:以上兩道題目主要考察的是運算子的優先順序。

11樓:

你好:首先要明確stu[0].a=2,stu[0].b=3,stu[0].c=4 stu[1].a=5,stu[1].b=6,stu[1].c=7;

t=stu[0].a+stu[1].b%stu[0].c;

t=2 + 6 % 4= 4; 6%4=2 % 為取餘數;

if(x>y&&!(z==w))printf("%d",(wy 為真, z==w 為假,那麼!(z==w) 為真, 因此 if ()為真,執行

printf("%d",(w

(w

那就是1啦。 主要點在於 (z

printf("%d",strlen("ats\n012\2\\")); 為9

a t s \n 0 1 2 \2 \\

1 1 1 1 1 1 1 1 1

\n 轉義字元回車,為一位, \2 實際上為 \002 為八進位制,也為一位,c語言課本上有\ 後面加八進位制的轉義,在記憶體中只佔一位,\\ 前面的\為轉義字元,後面的 \ 為轉義出\ 佔一位。

不知你明白了沒有,希望你幫到你!!!

請問這一道c語言的題該怎麼做?謝謝!

12樓:匿名使用者

void mystrcpy(char *dststr,const char *srcstr)}

幫忙解答一下這個題哈,謝謝!

13樓:似夢的念紅

第二題電磁鐵通電會產生磁場

14樓:衍瀛

1(滑輪)(齒輪)

2(電磁鐵)(電流)

3(脊椎動物)(軟體動物)

一道簡單與棧有關的 c語言習題,希望解釋哈原因,我是初學者。**等……

15樓:巫毒娃娃偉

首先你要明白棧的特bai性du:就是先進後出,我們來分析

zhi選項:

a,先進dao1再出1,然後進2,3,4,再出回4,3,2,所以出棧的答順序為1,4,3,2

b,先進1,2,出2,進3出3,進4出4,最後出1,所以出棧順序為2,3,4,1

d,先進1,2,3,出3,進4,出4,再出2,1,所以出棧順序為3,4,2,1

不可能的是c。

如果第一個出來的是3,那麼首先要把3放進去,按進棧順序,則先放1,2,3,然後出3,此時,選項裡給的第二個出棧的元素是1,但是我們知道1比2先入棧的,2沒有出棧之前,1是不可能出棧的

所以選c。

16樓:誰臨天下

c棧有先進後出的

源特點。

a:1 進棧,出棧;2,3,4進棧,出棧;結果:1,4,3,2;

b:1,2進棧,2出棧;3進棧,3出棧;4進棧,4出棧;1出棧;結果:2,3,4,1

d:1,2,3進棧,3出棧;4進棧,4出棧;2出棧,1出棧;結果:3,4,2,1;c錯!

17樓:

答案:c

解析:棧是一種後進先出表,選項c中,先出棧的是3,說明此時棧內必然有1、2,由於1先於2進棧,所以它不可能在2之前出棧,故選項c這種出棧序列是不可能的。

一道C語言程式設計題,一道C語言程式設計題

include include define change 0 int main void 你的串號我已經記下,採納後我會幫你製作 應該算是比較完整的程式了,如果你的問題還有補充的話請告訴我.author banxi1988 date 2010 12 9 include include define...

c語言小白求解一道題,C語言小白求解一道題。

include include int main if num 10 2 while num printf 是偶數reverse d n reverse return 0 include include int odd int num 對num第二位進行判斷奇偶性,是奇數則返回1偶數返回0 int ...

一道題不會做,請教一下大家,我有一道題不會做,請教一下。

1.5 3 2 0.5 1 2 2 2.5 5.5 25 8 5.5 194.5 這8筐白菜的總重量是194.5公斤。解 25 8 1.5 3 2 0.5 1 2 2 2.5 201.5 1 0.5 1 4.5 194.5kg 答 8筐白菜的總重量是194.5kg 我有一道題不會做,請教一下。用方程...