標籤:char 個數 oat int 包括 bre 定義 http error
1.輸入兩個正整數m和n(要求m<=n), 求m!+(m+1)!+(m+2)!…+n!
#include <stdio.h>int main(){int m,n,i,j,d,sum=0,c;printf("輸入兩個正整數m和n,要求m<=n:");scanf("%d %d",&m,&n);if(m>n){c=m;m=n;n=c;}for(i=m;i<=n;i++){ d=1;for(j=1;j<=i;j++){d=d*j;}sum=sum+d; }printf("%d",sum);return 0;}
2.輸出1000以內的所有完數。所謂完數是指這個數恰好等於除他本身外的所有因子之和。例,6的因子為1,2,3,6=1+2+3,所以6是完數。
#include <stdio.h>int main(){int i,j,a;for(i=1;i<=1000;i++){ a=0; for(j=1;j<i;j++) { if(i%j==0) a=a+j; }if(a==i)printf("%4d",i);} return 0;}
3.奇偶歸一猜想——對於每一個正整數,如果它是奇數,則對它乘3再加1,如果它是偶數,則對它除以2,如此迴圈,最終都能夠得到1。 如n = 11,得序列:11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1。(共有14個步驟) 題目輸入正整數n,求這個n多少步能歸一
#include <stdio.h>int main(){int n,i,j;printf("請輸入正整數n:");scanf("%d",&n);i=0;if(n<=0){printf("error");}while(n!=1){if(n%2==0){n=n/2;printf("%d=%d/2\n",n,2*n); } else { n=3*n+1; printf("%d=3*%d+1\n",n,n/3-1); } i++; } printf("一共需要%d步能歸一",i); return 0;}
附加題:
1.輸入一個正整數n,輸出2/1+3/2+5/3+8/5+…的前n項之和,保留2位小數,該序列從第二項起,每一項的分子是前一項分子與分母的和,分母是前一項的分子。
#include <stdio.h>int main(){int n,i,a=1,b=2,c;float sum=0;printf("輸入一個正整數n:");scanf("%d",&n);i=2;while(i<=n){ c=a; a=b; b=c+b; sum=(float)b/a+sum; i++;}sum=sum+2;printf("%.2f",sum);return 0;}
2.凱撒密碼(caeser)的原理:每一個字母按字母表順序向後移3位,如a加密後變成d,b加密後變成e,……x加密後變成a,y加密後變成b,z加密後變成c。例如:“baidu”用凱撒密碼法加密後字串變為“edlgx”。試寫一個演算法,將鍵盤輸入的文本字串(只包含a~z的字元)進行加密後輸出。
#include <stdio.h>int main(){char a;printf("輸入一串字元,字元包括a-z:");scanf("%c",&a);while(a!=‘\n‘){ if(a>=‘a‘&&a<=‘w‘) { a=a+3; printf("%c",a); } if(a>=‘w‘&&a<=‘z‘) { a=a-23; printf("%c",a); } scanf("%c",&a); } return 0;}
實驗總結:1.注意定義字元時用char型,迴圈變數一般定義為int類型。
2.注意賦初值,不同編譯器所預設的初值不同。
3.注意分析題的規律,列出結構框圖,做題效率才會高。
4.注意迴圈語句的嵌套,大括弧的位置。
5.for語句和while語句後不加分號,do...while後加分號。
6.char型只佔一個位元組,輸出多個字元是要使用迴圈語句。
7.break結束迴圈,continue結束本次迴圈,注意使用。
8.注意格式整齊,清楚。
第五次作業