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

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

求助,以下程序的輸出結果是( )?

求助,以下程序的輸出結果是( )?

C
慕容3067478 2023-04-20 19:15:51
#include<stdio.h>int f() static int i=0; int s=1; s+=i; i++; return s; main() int i, a=0; for(i=0; i<5; i++) a+=f(); printf("%d\n", a);
查看完整描述

2 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

代碼錯誤已修改,下面的代碼可以正確運行了:


int f() {    static int i=0;     int s=1;     s+=i;     i++;     return s; }void main()  //加上返回值類型, 可以是void , 也可以是int{    int i, a=0;     for(i=0; i < 5; i++)   //這里使用英文的符號 "<"    {        a+=f();     }    printf("%d\n", a);}

運行結果如下:

注意事項以及建議:

1、代碼中存在語法錯誤, 編程時,只支持標點英文標點符號。

2、static 修改的變量在整個程序生命周期內只會被定義一次,并且在程序生命周期結束前,其上次的運行結果會被保存,供下次使用。

3、該算法其實就是在求 sum = 1+2+3+4+5 = 15;


查看完整回答
反對 回復 2023-04-23
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

結果是輸出15。
分析:
1、函數f中有兩個變量,一個是靜態整型變量i,一個是普通整型變量s。需要注意靜態變量i的值在退出函數f后并不消失,下一次再進入f函數后,上一次的喔值仍然存在!也就是說static int i=0;這一句只在第一次調用f函數時被執行,以后再調用f函數時,這一句會被越過去。后面就是兩句計算和賦值,最后返回s的值。
2、再看主函數main,它定義兩個變量i和a,也要注意此i與函數f中的i是兩個不同的變量,只是使用了相同的代號i,但因為它們分別出現在兩個函數中,這是允許的,不會沖突。
3、接下來是一個循環,循環變量i從0到4共執行5次。循環體只有一句a+=f();。也就是共調用5次f函數,每一次把返回值加到變量a中。
4、第一次調用f,聲明i=0、s=1,s=i+s=0+1=1,i++后i=1,返回s值1。主函數a=a+返回的1=0+1=1。
5、第二次調用f,保留上一次的i=1,重新聲明s=1,s=i+s=1+1=2,i++后i=2,返回s值2。主函數a=a+返回的2=1+2=3。
6、第三次調用f,保留上一次的i=2,重新聲明s=1,s=i+s=2+1=3,i++后i=3,返回s值3。主函數a=a+返回的3=3+3=6。
7、第四次調用f,保留上一次的i=3,重新聲明s=1,s=i+s=3+1=4,i++后i=4,返回s值4。主函數a=a+返回的4=6+4=10。
8、第五次調用f,保留上一次的i=4,重新聲明s=1,s=i+s=4+1=5,i++后i=4,返回s值5。主函數a=a+返回的3=10+5=15。
9、循環結束,輸出a的值15。
分析完畢。


查看完整回答
反對 回復 2023-04-23
  • 2 回答
  • 0 關注
  • 208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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