亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求問,以下程序的輸出結果是_______________。

求問,以下程序的輸出結果是_______________。

C PHP
函數式編程 2022-03-24 19:15:08
以下程序的輸出結果是_______________。#include <stdio.h>main(){int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}func(a,b)int a,b;{static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}A、8,17B、8,20C、8,16D、8,8參考答案:A不懂,求解釋
查看完整描述

2 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

第一次調用函數 i+=m+1 得到 i=3 m=i+a+b 得到m=8 所以返回8
由于m和i是靜態的 所以第二次調用時,i=3,m=8,然后i+=m+1 得到i=12 m=i+a+b m=17
返回17
因此答案為A

查看完整回答
反對 回復 2022-03-28
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

第一次func(a,b)函數時,傳遞過來的兩個值是4,1 即在func(a,b)函數中a=4,b=1 static int m=0,i=2,定義了兩個靜態變量,即一直戰用內存,函數調用結束不釋放,結果依然是上一次改變后的結果。
執行 i+=m+1 →即 i=2+0+1=3;
執行 m=i+a+b; → m=3+4+1=8;
執行 return(m) →返回 m=8;
printf("%d,",p); 輸出 8

第二次執行func函數 依然傳遞 4,1
在func函數中,因為m 和i是靜態變量,所以這時m=1,i=3
執行 i+=m+1; → i=3+8+1=12;
執行 m=i+a+b; → m=12+4+1=17;
執行 return(m) →返回 m=17;
printf("%d,",p); 輸出 17
最后結果為 8 ,17



查看完整回答
反對 回復 2022-03-28
  • 2 回答
  • 0 關注
  • 175 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號