標籤:內容 images turn log sum 迴圈 amp 數字 main
一·實驗內容
5-1輸入兩個正整數m,n要求m<=n,求m!+(m+1)!+(m+2)!+...+n!
#include<stdio.h>int main(){int m,n,i;float sum,p;printf("請輸入兩個正整數m,n:\n");scanf("%d",&m);scanf("%d",&n);sum=0;if(m<=n){for(i=m;i<=n;i++){p=1;for(i=m;i<=n;i++){p=p*i; sum=sum+p;}}}else{printf("error\n");}printf("sum=%.0f\n",sum);return 0;}
5-2輸出1000以內的所有完數。完數是指這個數恰好等於出它本身外的所有因子的和,例:6的因子為1,2,3,6,所以6=1+2+3,所以6為完數。
int main(){int i,j,s;for(i=1;i<=1000;i++){s=0;for(j=1;j<=i-1;j++){if(i%j==0){s+=j;}}if(s==i){printf("%d\n",i);}}return 0;}
5-3奇偶歸一猜想,對於每一個正整數如果它是奇數,則對它乘3再加1,如果它是偶數,則對它除以2,如此迴圈最終都能夠得到1。
#include<stdio.h>int main(){int x,a=0,b=0,sum=0;printf("請輸入一位正整數x:\n");scanf("%d",&x);do{if(x>0&&x!=1){ if(x%2==0){x=x/2;a++;}else if(x%2!=0){x=x*3+1;b++;}}}while(x!=1);sum=a+b;printf("數字x一共經過了%d次運算",sum);return 0;}
二·實驗總結
1.第一個程式編程時遇到的問題是迴圈嵌套大括弧加的不對,導致執行出來假如輸入1和3,輸出的是6,而正確答案是9.這是一個應該注意的問題,之外這道題的思路大致歸結為:先聲明變數,輸入的和和累加累乘的變數為浮點型;賦予sum為0初始值,然後判斷,分別考慮符合和不符合的情況;套用兩個迴圈結構,外迴圈判斷累加,內迴圈判斷累乘,注意大括弧的位置,考慮程式到底執行到哪;最後輸出保留兩位小數,格式為%.2f。
2.第二個程式編程時畫了一個程式架構,有點理不清,輸入的變數沒弄清各自代表的含義,程式編的也有問題,大括弧又用錯,導致語句執行的不對。之外這道題的思路大致歸結為:先聲明變數,輸入的i表示輸入的完數,j表示輸入的因子,s表示輸入的因子的和;使用for迴圈,要確定範圍,給因子的和賦予一個初始值,然後for迴圈嵌套,判斷因子,依次累加,前提明白因子比完數小;再判斷j是不是i的因子,大括弧語句的執行強調;最後若完數與因子的和相等,證明這個數的確是完數。輸出
3.第三個程式編程的時候遇到的問題是,畫程式框圖時沒錯,編的時候do...while,for...else if語句中的步驟子句存在問題。之外這道題的思路大致歸結為輸入一個數,賦予a,b,sum,初始值,a代表偶數的次數,b代表奇數的次數,用do...while先迴圈,再做判斷,強調不能等於1的原因是最終都能夠得到1,如果輸入1就直接輸出了沒意義。注意執行的步驟
第五次作業