實驗3 袁祖晴
阿新 • • 發佈:2020-11-20
1.實驗任務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.實驗任務2
//生成N個0~9之間的隨機整數,並列印輸出 #include<stdio.h> #include<stdlib.h> #include<time.h> #define N 5 int main(){ int x,n; srand(time(0)); n=0; do{ n++; x=rand()%10; printf("%3d",x); }while(n<N); printf("\n"); return 0; }
上面程式的執行截圖如下:(分別記為結果1、2)
刪去srand函式後,執行兩次(時間間隔足夠長)結果如下:(分別記為結果三四)
3、實驗任務3
//輸出101~200之間所有素數,並輸出這一區間內素數個數。 #include<stdio.h> int main(){ int x,n=0,i; for(x=101;x<=200;x++) { for(i=2;i<x;i++) { if(x%i==0) { break; } else if(i==x-1) { printf("%6d",x); n++; if(n%5==0) { printf("\n"); } } } } printf("\n"); printf("101~200之間共有%d個素數.",n); return 0; }
4、實驗任務4
//取s每一數位上的奇數來構成一個新數,高位仍在高位,低位仍在低位。 #include<stdio.h> #include<math.h> int main(){ int a,b; long s; double y; printf("Enter a number:"); while(scanf("%ld",&s)!=EOF) { printf("new number is:"); int n=1,i=0; do { a=s%10; b=s/10; if(a%2==1) { n=n+1; y=pow(10.0,(n-2)); i=a*(int)y+i; } s=b; }while(b>0); printf("%d",i); printf("\n"); printf("\n"); printf("Enter a number:"); } return 0; }
思路:先將輸入的數對十取餘得a,除以十得b,a對2取餘,得1則最低位上為奇數,然後用pow函式實現將a*10的0次方賦值給i,然後令s取b的值,重複上述演算法過程,便可輸出由奇陣列成的高位在高位,低位在低位的數值。
5、實驗任務5
//輸出計算結果s #include<stdio.h> unsigned int getfactorial(unsigned int i); int main() { unsigned int x,fac; int n; float a,s; printf("Enter n(1~10):"); while(scanf("%d",&n)!=EOF) { for(x=1;x<=n;x++) { fac=getfactorial(x); a=1.0/fac; if(x%2==0) { s=(-1)*a+s; } else { s=a+s; } } printf("n=%d,s=%.6lf",n,s); s=0; printf("\n"); printf("\n"); printf("Enter n(1~10):"); } return 0; } unsigned int getfactorial(unsigned int i) { unsigned int result; if(i==1) result=1; else result=i*getfactorial(i-1); return result; }
6.實驗任務6
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int x,a; srand(time(0)); x=rand()%31+1; printf("猜猜2020年12月哪一天會是你的luck day\n\n"); printf("開始嘍,你有三次機會,猜吧(1~31):"); scanf("%d",a); printf("\n"); int n=0; for(n;n<3;n++) { if(a==x) { printf("恭喜你,猜對了!\n"); break; } if(a<x) printf("你猜的日期晚了,luck day悄悄溜到前面啦\n"); if(a>x) printf("你猜的日期早了,luck day還沒到呢\n"); printf("再猜(1~31):"); scanf("%d",a); } if(n==3) { printf("\n"); printf("次數用完啦,偷偷告訴你:12月,你的luck day是%d號",x); } return 0; }
不明白哪裡錯了。。