第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

for循環(huán)中如果判斷條件為函數(shù)的返回值,就會出錯,請教下大神該怎么解決?

for循環(huán)中如果判斷條件為函數(shù)的返回值,就會出錯,請教下大神該怎么解決?

C C++
慕粉1600176492 2016-12-13 18:05:21
//物品打折,全部8.5折,且單品滿500的有禮品相送。 //現(xiàn)在要統(tǒng)計打折后的價格,并保存打完折后單品價格仍然大于500的單品的價格。 #include"stdio.h" #define?N?6 ?int??discount(float?*p,float?*g) ?{ ? int?i,j=0; ? for(i=0;i<N;i++) ? { ? *(p+i)*=0.85; ? printf("%.1f?",*(p+i)); ? ????if(*(p+i)>500) ? ????{ ? ???? g[j++]=*(p+i); } } return?j; ?} ?int?main() ?{ ? int?i,j; float?g[6]; ? float?a[N]={238.0,958.0,1050.0,599.0,799.0,198.0}; ? printf("打折前的價格分別是:"); ? ?for(i=0;i<N;i++) ? ?{ ? printf("%.1f???",*(a+i)); ?} ?printf("\n打折后輸出的結(jié)果是:"); ?j=discount(a,g); ?printf("判斷一下g的長度%d",j); ?????putchar('\n'); ?for(i=0;i<N;i++) ?{ ? printf("%.1f???",*(a+i));//再輸出一次 ?} ?printf("\n打折后仍然超過500的:"); ?for(i=0;i<discount(a,g);i++)//這個地方如果把discount(a,g)改為j,結(jié)果就不會出錯,但數(shù)值上不是一樣的嗎? ?{??????????????????????????????????????????????//請問一下這是為什么呢? ? printf("%.1f???",*(g+i)); ?} ?putchar('\n'); ?return?0; ?}
查看完整描述

1 回答

已采納
?
朕日理萬機

TA貢獻27條經(jīng)驗 獲得超28個贊

因為你在調(diào)用函數(shù)的同時,也同時改變了數(shù)組a和g的值。每調(diào)用一次,會做這么幾件事:

1.會把a中的每個元素乘以0.85,2.把g中的前若干個元素改為a對應的元素,3.返回你當前a中有多少個超過多少個超過500的。所以你連續(xù)多次調(diào)用以后,a的值會不斷變小,返回值也會變小,g里的元素不再有什么意義。

函數(shù),甚至基本表達式,不光是返回給你一個值,你也要考慮它在執(zhí)行過程會產(chǎn)生什么后果。

查看完整回答
1 反對 回復 2016-12-14
  • 1 回答
  • 0 關注
  • 1754 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號