實驗3 C語言分支語句和迴圈語句程式設計應用
阿新 • • 發佈:2020-11-13
任務1
//一元二次方程求解 //重複執行,直到按ctrl+z結束 // #include<math.h> #include<stdio.h> int main(){ float a,b,c,x1,x2; float delta,real,imag; printf("Enter a, b, c: "); while(scanf("%f%f%f",&a,&b,&c)!=EOF){ if(a==0) printf("not quadratic equation.\n\n"); else{ delta = b*b - 4*a*c; if(delta>=0){ x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("x1=%.2f,x2=%.2f\n\n",x1,x2); } else { real=-b/(2*a); imag=sqrt(-delta)/(2*a); printf("x1=%.2f+%.2fi,x2=%.2f-%.2fi\n\n",real,imag,real,imag); } } printf("Enter a, b ,c: "); } return 0; }
任務2
//生成N個0~9之間的隨機整數,並列印輸出 #include<stdio.h> #include<stdlib.h> #include<time.h> #defineN 5 int main(){ int x,n; srand(time(0)); //以當前系統時間作為隨機種子 n = 0; do { n++; x=rand()%10; //生成一個0~9之間的隨機整數 printf("%3d",x); }while(n<N); printf("\n"); return 0; }
任務3
//輸出101~200之間所有的素數,並輸出這一區間內素數個數 #include <stdio.h> #include <math.h> int main(){ int x,i,res,flag; x=101,res=0; while(x<=199){ flag = 1; i = 2; while(i<=sqrt(x)){ if(x%i == 0){ flag = 0; i = sqrt(x); } i++; } if(flag == 1){ res++; printf("%5d",x); if(res%5 == 0){ printf("\n"); } } x++,x++; } printf("\n"); printf("101~200之間共有%d個素數",res); return 0; }
任務4
演算法思路
利用取餘的方法%10取出數X的最後一位,然後判斷取出的數是否為奇數,放在變數i中
每次取餘後都要通過整除的方法/10,去掉取出的數字後形成新的數X
將取出的變數i乘以相應的位數,再加上之前的結果res,形成新的結果
相應的位置可以通過變數d來控制,d初始值為1,每次當有符合條件的i時,d就乘以10,也就相當於升了一位
#include<stdio.h> int main(){ int x; int i,res,d; printf("Enter a number: "); while(scanf("%d",&x)!=EOF){ res=0; d=1; i = x % 10; while(x>0){ if(i % 2!=0){ res = i*d+res; d=d*10; } x=x/10; i = x % 10; } printf("%d\n",res); printf("Enter a number: ") ; } return 0; }
任務5
#include<stdio.h> int main(){ int fz,fm,n,i; float s; printf("Enter n(1~10): "); while(scanf("%d",&n)!=EOF){ fm=1; fz=1; s=0; i=1; while(i<=n){ fm=fm*i; s=s+fz/(double)fm; fz=-fz; i++; } printf("n = %d, s = %f\n",n,s); printf("Enter n(1~10): "); } return 0; }
任務6
#include<stdio.h> #include<stdlib.h> int main(){ int i,x; int n; printf("猜猜2020年12月哪一天會是你的lucky day\n"); printf("開始嘍,你有三次機會,猜吧(1~31): "); x=rand()%30+1; i=1; while(i<=3){ scanf("%d",&n); if(x==n){ printf("\n"); printf("恭喜你,猜中了!"); i=5; } else{ if(x<n){ printf("\n"); printf("你猜的日期晚了,lucky day悄悄溜到前面啦\n"); } else{ printf("\n"); printf("你猜的日期早了,lucky day還沒到呢\n"); } printf("再猜(1~31):"); i++; } } if(i==4) { printf("次數用完啦。偷偷告訴你:12月,你的lucky day是%d號",x); } return 0; }