C語言問題

時間 2023-03-06 16:20:04

1樓:網友

int a=p;

p=a;//給p賦值。

printf("%x",p);

printf("%x",*p);

printf("%x",*p+6);

p才是表示指向陣列a的第乙個元素的位址。

*p表示指向位址的內容即a;

printf("%x",p); 列印的是a的首位址;

printf("%x",*p); 列印的是a的值。

printf("%x",*p+6); 列印的是a+6的值 ,*p+6與*(p+6)是不一樣的 *(p+6)即為a

2樓:匿名使用者

p是 位址 即 第乙個元素1的位址。

*p是 位址內容 a即a[0]=1 (用a預設表示a[0])*p+6 如同(*p)+(6) 即 內容+內容 1+6=7(*p+6) 表示 位址+位址 *(指標變數+6)即 a[0+6]

3樓:匿名使用者

int a=p ;

p=a; /執行完這條語句後,p就指向a了。

printf("%x",p); 列印p的值,即a的位址,也就是a[0]的位址。

printf("%x",*p); 列印*p的值,即a[0]的值。

printf("%x",*p+6); 這裡先做*運算,在做+運算,也就是說,這裡列印的是(*p)+6的值,也就是 a[0]+6 了。

4樓:青青吧吧

按照運算子的優先順序來看,++的優先順序大於 * 的優先順序第乙個++x首先被計算,得到:x=6

第二個++x被計算,得到x=7

所以最後x的值為7

那麼y被計算的時候最後統一取出x的值7

所以y=++x*++x相當於y=x*x=7*7=49

5樓:戈壁與清潭

呵呵,++的優先順序大於 * 的優先順序 先算 ++x (x=6) 再算 ++x (x=7) 再算 x*x=49 y=49

c語言問題

6樓:匿名使用者

五. 判斷乙個正數是否為對稱數,如果是返回0,不是返回1,(不允許呼叫c庫字串轉換相關函式),如11,121,1221就是對稱的。

首先把正數(沒有考慮浮點數)存放到字元陣列中a,len記錄正數長度。

while(num>=10)

然後比較判斷就可以了。}

7樓:我不喜歡故事

第一題的資料儲存形式看不懂到底是啥意思。求解……

8樓:海海胡

選擇題:

1、c2、d

3、b4、c

5、a6、a

7、c8、d

9、b10、d

判斷題:1、錯2、對。

3、對4、錯5、對。

9樓:貌似風輕

本金加利息=本金*(1+月利率)^月數。

在c裡有乙個乘方函式pow()

pow(a,b) 等於 a的b次方。

#include

#include

main()

double money,capital;

double rate[4]=;

int n;

printf("請輸入本金和期限(年)")

scanf("%lf%d",&capital,&n);

if(n>3)

money=capital*pow((1+rate[3]),12*n);

elsemoney=capital*pow((1+rate[n-1]),12*n);

printf("%d年後本金和利息合計為:%.2lf",n,money);

c語言問題

10樓:

這個問題很簡單嗎!

問題的關鍵是在於這一句;h[0].p=h[1].p=h;

這是乙個賦值運算,它的運算順序是從右往左。由於h代表的是陣列h的陣列首位址。

那麼h[1].p=h就將h[1]中的結構體指標p指向了陣列首位址,在位址值上等同於h[0];

而h[0].p=h[1].p又將h[0]中的結構體指標p指向了h[1].p,而h[1].p.即是h[0]的位址。

那麼(h[0].p)->x,也就是h[0].x=1,(h[1].p)->y)==h[0].p)->y)=h[0].y=2;

明白了沒。所以就選a了!

11樓:網友

說清楚點,問題是什麼?

c語言問題

12樓:匿名使用者

17%6=5

先求餘,後除法。

printf 還是5

13樓:網友

結果應為5,x%=6等價於x = x%6);即x = 5;y/=x等價於;y = y/x);即y = 5;

14樓:陳學陽

比如,您輸入123,您想輸出是321。先將程式給出來,再做說明。

main()

printf("the reverse number is %d.",onum);

}要輸入乙個整數,使其三各位數字反序輸出,您至少需要兩個變數來儲存這兩個數吧,所以定義inum儲存輸入的數,onum儲存輸出的數。解決問題的思路是,將輸入數的個位分離出來。比如,您輸入的是123,第一輪迴圈,inum % 10 能得到3.

得到3後,下乙個目標是在中間那個位置,怎麼辦呢?當我們將123的3「丟掉」,inum = inum /10 能使inum重新賦值12。

在第二輪迴圈的時候,又能用 inum % 10 將2分離出來。請記住這一輪inum已經是12了。而在這一輪inum = inum / 10 又將inum賦值1。

直到下一輪 inum = inum / 10 將 inum賦值 0。好了,說到這裡,希望你明白怎樣將輸入的數逐個分離出來。那分離出來的數字怎麼適當儲存在onum裡面呢?

定義onum時將初始化為0.第一輪迴圈時,onum = onum * 10) +inum % 10);操作是onum = 0 * 10) +3 ),結果是 onum=3.第二輪迴圈時,onum = onum * 10) +inum % 10);操作是onum = 3 * 10) +2),結果是onum=32。

第三輪onum = onum * 10) +inum % 10); 操作是 onum = 32 * 10) +1),結果是onum = 321。這個程式您不能輸入非正整數的數。如何解決輸入的是負數呢?

留待您思考。這也只是解決這個問題的其中乙個方法,你再能**其它方法。

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

c語言問題

15樓:

int a = 14;

a+=a-=a*=a;

這個結果是 : 0

先計算 a*=a ,即 a=a*a=14*14=196然後計算a-=a ,即 a = a-a = 196-196 =0最後計算a+=a,即a=a+a = 0+0=0int a = 14;

a+a-a*a;

這個就是:14+14-14*14=28-196=-168希望對你有幫助。。。仍有問題可以hi我。。。

16樓:匿名使用者

第一行,從最右邊開始算。

a*=a a=196

a-=a a =-182

a+=a a= -168

第二行計算時的a是-168,可以自己算一下。

c語言問題,C語言問題。

考驕 用指標將兩個字串連結接起來,前一個while迴圈,確定s1字串走完,第二個while開始將s1的逐個字元複製給s1走完,也就是末尾,這樣就可以把字串都匯入到s1中 最後一個空寫的應該寫return s1 長魚修韋 很久沒碰這東西了。我來解釋下 第一個while的迴圈是為了讓指標指向第一個字串的...

C語言問題,c語言問題?

自我程式設計 列印輸出乙個ok。因為前面迴圈for語句有分號結束。所以後面的printf語句不在迴圈內,不受迴圈語句影響。 理佑平鄲胭 結果是22 7 7 8 22 你可以將 i i i i是先 1再計算,還有這裡的運算順序是從左到右,所以應該是7 7 i 14 8 22 前兩個相加時,i先加1,加...

c語言問題,C語言問題?

這個問題說難不難,但理解可能有點玄乎而已,但是打個比方來理解就太容易掌握啦!就是說scanf的認定讀取,比如你單純的scanf c ch 那麼實際上已經認定了第乙個字元出現就把它賦予給ch,如果是你的scanf c 前面多了乙個空格,所以就認定了出現第乙個空格後的字元賦予給ch,如果寫成這樣 sca...