C語言兩道題,求執行結果。請寫出詳細分析過程!!謝謝!滿意答案與解釋者給分

2021-05-04 18:24:48 字數 3803 閱讀 9388

1樓:匿名使用者

main()

由 str="helloeverybody"來看,j->第一個y時(j=9),不再有比它更大的字元。

str[j]=str[i];//此時j=9, i = 14 str[14]='\0' ,即str[9] = '\0',結束符

puts(str); // = "helloever"}2、#include

int order(int a,int i)void main()

;for(n=0;n<7;n++)

if(order(a,n))

printf("%d,%d\n",a[n],a[n+1]);

}n=0 29<5為假,返回值為0,不輸出n=1 5<18為真,返回值為1, 輸出5,18n=2 18<8為假,返回值為0, 不輸出n=4 8<5為假,返回值為0,不輸出

n=5 5<3為假,返回值為0,不輸出

n=6 3<8為真,返回值1,輸出3,8

2樓:匿名使用者

3,8函式1;結果為helloever;

因為str[i]!='\0』,所以退出迴圈時,str[i]='\0『;

由於句子中y最大根據ascii表;所以句子第一個y被換成'\0'(因為y不大於y);所以printf函式遇到『、0』結束輸出,都答案如此!!!!

函式2:結果為5,18

3,8由於比較的返回值為徒true或者false;

所以當a[i]

兩道c語言題求解,知道的謝謝解答。(請寫出詳細分析過程!!謝謝!滿意答案與解釋者給分。)

3樓:睡不著想你了

你好,第一題選 d, 因為*ps是指這個指標指向的初始位置,也就是p,這個字母的位置,所以取不到o。

第二題無答案,剛開始j=10,i=9 然後 if(!(j%i)) break;也就是if(!(10餘9)) break;即if(!(1)) break;

也就是if(0) break; 因為它不成立,所以我們執行下一步,if(9>10-1) 不成立,我們再回到第一個迴圈。

接下來 j=11,i=9 if(!(11%9))break; if(9>11-1) 因為它不成立,我們又不能輸出了,而在i=10的情況也和這個一樣,所以最後無結果,我覺得你可能if(i>j-1) printf("%d",j);打漏了,應該是if(i>=j-1) printf("%d",j);

4樓:科博熊

第一題d項怎麼有兩項啊?

反正我確定*ps是絕對不能引用字母o的,因為*ps代表字母p的首地址。

第二題沒答案

因為首先j=10,然後到下一步i=9,

!(j%i)=0,是假的,所以又進行下一步, 判斷(i>j-1) ,實際上是9>9,又是假的。此次迴圈結束

所以又進行上一步j=11,然後又到下一步i=9,!(j%i)=0是假的,又進行下一步,9>10,假的。

於是返回上一步i=10,!(j%i)=0還是假的,10>10還是假的。沒有任何步驟被執行。

不知你有沒有打錯什麼字?

5樓:匿名使用者

問題一 你把s =2;去掉就可以了,不知道你想用s =2;表達什麼,就是這句錯了。 問題二 我也不懂,是不是因為a組預設字串後面有個\\0的,然後b

c語言一道求程式執行結果題,一直看不懂,求大蝦詳細解釋下!謝謝了!

6樓:匿名使用者

tt(int *a,int *b)

while(r); //迴圈執行的過程:

// x=y=36; y=r=28; r=x%y=36%28=8(36除以28的餘數); r不等於0,繼續迴圈

// x=y=28; y=r=8; r=x%y=28%8=4; r不等於0,繼續迴圈

// x=y=8; y=r=4; r=x%y=8%4=0; r等於0,結束迴圈

*a/=y; // 即u/=y; u=28/4=7*b/=y; // v/=y; v=36/4=9}main()

7樓:匿名使用者

dowhile(r);

輾轉相除法 得到x和y的最大公約數 y (此處y= 4)tt(int *a,int *b) 形參為指標tt(&u,&v); 將存放ū和v的記憶體地址作為實參傳出

8樓:狼族遺孤

沒有標頭檔案也可以執行?

一道c語言選擇題,希望高手給出詳細解答!

9樓:匿名使用者

我覺得輸出的是「89」這個字串。

10樓:匿名使用者

這根本就個錯的程式,char*s="aa89gggh",得到的s指向只讀資料;應該是char s="aa89gggh";

執行結果見樓上。

11樓:

s是字串常量,存放在字串常量區,是不可修改的!

c語言題目,因為是初學者,寫出解題過程及原因,謝謝了!

12樓:匿名使用者

1。要了解printf的表示式執行過程:是從右到左執行的2。要了解運算子的優先順序,邏輯==優先於=3。1)

因此j==k為0,i==0?所以此表示式為0;

2)j=k,所以j=3,i==3?因為i=1,所以=0;

3)先計算j==k,因為在2)j=k使得j=3,所以3==3為真,值為1

4)從右到左計算,j=3,然後i=j使得i=3,所以整個表示式值為3因此結果為3,1,0,0

一道c語言試題求講解,十分感謝!!

13樓:

p=(char *)&a;將a的地址轉換為字元指標,也就是原來放的整數0x4145現在當成字串來解釋,在記憶體裡面0x4145是這樣存放的,先在一個低位元組裡放0x45再在接下來的一個高位元組裡放0x41,intel的cpu是小端位元組處理器,也就是說如果一個物件需要超過一個位元組的記憶體來存放,那麼它的地址就是最低的那個位元組的地址,0x4146的地址就是存放0x45那個單元的地址,p指向0x4145於是p實際就是0x45那一個單元的地址,*p就取出了0x45這個值。。。。明白了吧。

14樓:匿名使用者

int a=0x4145;

a 在記憶體佔 4 個位元組,ox45存放在低位元組,ox41存放在高位元組char *p;

p 是一個指向單個字元的指標,這就決定了它的運算規則,指標運算子 * 也只取1個位元組的值。

p=(char *)&a;

p 指向 a 的那塊記憶體首地址,即指向ox45*p+=1;

p 指向的那個位元組的值自增,即ox45+1 = ox46printf(「%x」 , *p);

以十六進位制輸出 p 指向的記憶體的值

15樓:

int a=0x4145;在記憶體中, 低位位元組在前,高位位元組在後,即0x45,0x41.

&在這做取址符.即獲得a的地址.因為a 是整形是,而p是指向字元型,即從所指地址讀一個位元組,通過(char *)強制把整形的地址轉化為字元型,

即p指向0x45,加1後成0x46

16樓:

我覺得答案應該是a吧,c的語法我忘的差不多了,不過*p是char型的,在記憶體中指向兩個位元組的資料,而a是int型的,是4個位元組,第三句話應該是與a相與,1和0相與就是0,1和1相與不變,a是16進位制,那麼就保留最後的兩位,即45,指標p再加1的話就是46,用排除法也可以做出來。

兩道c語言程式設計題,求解,兩道C語言程式設計題,求解

1 include stdio.h int main printf nt f n r return 0 2 include stdio.h int main printf nmain diagonal is n for l1 0 l1 4 l1 取主對角線上的數for l1 0 l1 3 l1 排序...

c語言的題幫忙解釋一下謝謝,兩道C語言題,請幫忙看看,詳細解釋一下,謝謝

應該選b吧,整形資料int與字元陣列char儲存方式不一樣,將字串c表示的就是地址,輸入資料時,不用取地址符號 整數則需要 看書要仔細啊 因為c 是陣列,所以scanf 賦值的時候不需要 正確的是b c是陣列,陣列名本身就是一個地址,所以不必再寫取地址版符號 了。而b是一個整型變數,儲存在一個地址中...

C語言題求執行結果給出解釋 下列程式段執行後的輸出結果

這段 最抄後輸出的是 4,ps n應該是 n a?b c語句的意思是 1.假如a 邏輯表示式或0 1 的邏輯值為0,則語句的值為b b為表示式則取最後的值 2.假如a的邏輯值為1,則取c的值。在你的語句中a對應的為 k 不懂可追問 k 判斷 k 答案d應該是 4 而不是4 選a 條件運算子,右結合性...