1. 程式人生 > 實用技巧 >實驗3 袁祖晴

實驗3 袁祖晴

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;
}

不明白哪裡錯了。。