求下面C語言程式執行過程?具體的原理

2021-05-04 18:26:52 字數 2965 閱讀 5734

1樓:

執行結果:8,8

+=是乙個操作,之後arr[0]=129,ptr加一,指向arr[1]

printf函式中ptr進入函式時指向a[2],列印*prt,*(++ptr)實際上都是列印ptr進入函式後的值

2樓:匿名使用者

int arr=; // 定義有5個元素的一維陣列,陣列名指向第乙個元素

int *ptr=arr; // 定義指標ptr 指向陣列第乙個元素

*(ptr++)+=123; // 先運算 *ptr 值為6,再算(*ptr)自加123,得*ptr=129,即陣列第乙個數變為129,然後計算ptr++,ptr指向陣列第二個元素;

printf("%d,%d",*ptr,*(++ptr)); // ++ptr,ptr指向陣列第二個元素;然後兩次輸出 *ptr,結果為 8,8

int arr=;

int *ptr=arr;

*(ptr++)+=123;

printf("%p %d\n", ptr, *ptr);

printf("%p, %d,%d, %p\n",ptr, *ptr,*(++ptr), ptr);

printf("%d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);

3樓:長春**蟈蟈

指標就指向陣列第乙個位置0,++就是移動乙個,這回明白了吧

4樓:匿名使用者

/*c語言程式執行過程.

*/#include "stdio.h"

void main()

; /* 定義5個元素的一維陣列 */int *ptr=arr; /* 定義指標ptr指向陣列第乙個元素 */

*(ptr++)+=123; /* 先計算(ptr++)的結果,然後ptr指向陣列第二個元素;再運算*ptr值為7,再加123. */

printf("%d,%d",*ptr,*(++ptr)); /* 最後執行結果為: 8,8 */}

5樓:匿名使用者

問:printf函式中ptr進入函式時指向a[2],為什麼ptr進入printf函式中就指向啊a[2]了啊?

答: ptr指向了a[2];原因就在於++ptr在printf()中。最後一句若改為:

printf("%d\n",*ptr);

printf("%d\n",*(ptr++));

這樣,其結果則為7,8;

至於為什麼這樣,就是因為printf()函式在程式中屬於乙個命令,而 ++i 運算在執行時是在命令之前就已經執行的。。。故ptr指向了a[2];所以最後一行命令也就可以理解為:

++ptr;

printf("printf("%d,%d",*ptr,*ptr);");

c語言程式,x=5,y=x++*x++,y=--y*--y,求最後y的結果以及過程原理。

6樓:匿名使用者

y= 529

執行 y = x++* x++後

y = 25,

++在後表示執行後再遞增,所以不影響

--在前,表示先減了再運算

所以 y = 23*23 = 529

7樓:匿名使用者

y = x++* x++ 中x要乘完再自增的,所以是5*5

8樓:聽海的聲音

529 這種問題少問的好

c語言遞迴函式,實現字串逆序輸出,**如下,想不通執行過程和原理,求解釋

9樓:風影美

就是乙個棧的效果,先進後出

如輸入abc\n

首先進入第一層reverse:c='a', c!='\n'

----進入第二層reverse:c='b', c!='\n'

--------進入第三層reverse:c='c', c!='\n'

------------進入第四層reverse:c='\n',------------結束第四層reverse,回到第三層--------c!='\n',輸出c,結束第三層reverse,回到第二層

----c!='\n',輸出b,結束第二層reverse,回到第一層c!='\n',輸出a,結束第一層reverse,程式結束

51微控制器數碼管,下面是數碼管原理圖,求簡單的c語言程式點亮數碼管

10樓:幸虧偶不是

你試著將所有的都置1,或者為0,加上控制端 共四種情況 就會出來了 左邊的8個口就是數碼管8字 中的7個橫豎管 加上乙個 點 共八個 右邊為哪個數碼管的控制端

畢竟不知道是共陰極還共陽極的數碼管

11樓:匿名使用者

^假設此為共陽極數碼管

#include

sbit    wx1=p1^0;

sbit    wx2=p1^1;

sbit    wx3=p1^2;

sbit    wx4=p1^3;

void main(void)}

12樓:匿名使用者

乙個埠有 8位,0-7

這裡 用的是 p0口,所以設定 sbit p0=p^0;p0=0xffh;應該可以亮

13樓:匿名使用者

你是不是使用的微控制器開發板呀,你看看你的這個數碼管對應的排線有沒有接,貌似直接了二極體的排線沒有接數碼管的排線,能不能把完整的線路圖發來看看

14樓:匿名使用者

11 7 4 2 1 10 5 3一半設為1

同時12 9 8 6 設為1 0 1 0

看效果就行

15樓:

首先要知道是共陰還是共陽?不要搞反了

C語言,求過程,C語言程式,求過程?

程式輸出結果是 a for語句裡迴圈判斷是f s i 即函式返回非0,則迴圈繼續,而f函式是判斷奇偶數,所以陣列裡從0下標開始,是奇數就迴圈,偶數就退出,所以程式輸出是前面3個奇數相加的結果,相加得9,所以選擇a i 0 i 0 等待f s i 返回值 f s 0 a 1 返回a 2,返回值 1 f...

C語言下面程式的執行結果是

x的值是每次來在執行迴圈體源第乙個語句進行賦值的。bai每個if語句都是du先加加,然zhi後再模2,模3,模7。全部條件滿足dao後,才會輸出x。計算的並非是x的原始值,而是計算的三次加加後的x的值。比如輸出28的時候,i的值是25,那麼此時x的值也是25。首先進行第乙個判斷,因為是前加加,所以對...

c語言下面程式段的執行結果是個人算是

答案是4.實際上是求出6 10的所有合數數量。一旦能夠整除,就跳出當層j的迴圈,進入i的下一次迴圈。題目意思是巢狀迴圈,當滿足m除以n沒有餘數時候,執行s 跳出第二層迴圈,回到第一層迴圈繼續遍歷,直至兩層迴圈遍歷結束,輸出結果。過程如下 第一次 6 2 0,執行s s 1,跳出第二層迴圈 第二次 8...