第七次做業

 

 

  1. 定義一個判斷素數的函數isprime(int n),利用該函數輸出1000之內的全部素數,每行10個,最後輸出一共有多少個素數。(每列對齊)編程

# include <stdio.h>
int isprime (int x);
int main ()
{
    int i,x,d;
    d=0;
    for (i=2;i<=1000;i++)
    {
      if(isprime(i))
      {
        printf("% 3d",i);
        d++;
      }
    }
    
    if(d%10==0)
    {
       printf("\n");
    }
    printf ("總數爲%d個。\n",d);
    return 0;
} 
int isprime (int x)
{
    int i;
    for(i=2;i<=x-1;i++)
    {
        if(x%i==0)
        return 0;
    }
    return 1;
}

 

 

    2.求兩個正整數的最大公約數和最小公倍數。用一個函數gcd(int a,int b)求最大公約數,另外一個函數lcm(int a,int b)根據求出的最大公約數求最小公倍數。數組

 

# include <stdio.h>
int gcd (int a,int b);
int lcm (int a,int b);
int main ()
{
    int a,b,c1,c2;
    printf ("請輸入兩個正整數\n");
    scanf("%d %d",&a,&b);
    if (a<=0||b<=0)
    {
       printf ("error!\n");
    }
    else 
    {
        c1=gcd(a,b);
        c2=lcm(a,b);
        printf ("最大公約數是%d,最小公倍數是%d",c1,c2);
    }
    return 0;
}
    int gcd (int a,int b)
    {
      int c1,d;
      if (a==b)
      {
         c1=a;
      }
      else if (a>b)
      {
        while(d!=0)
        {
             d=a%b;
             a=b;
             b=d;
             c1=a;
        }
      }
      else if (a<b)
      {
        while(d!=0)
        {
             d=b%a;
             b=a;
             a=d;
             c1=b;
        }
     }
        return c1;
    }

    int lcm (int a,int b)
    {
      int c2;
      c2=a*b/gcd(a,b);
      return c2;
    }

 

   3.編寫一個函數fun(double x)求表達式x2-5x+4的值,x做爲參數傳給函數。在主函數中調用該函數求下列式子的值:函數

       y1= 22-5*2+4spa

       y2= (x+15)2-5*(x+15)+43d

       y3= sin2x-5*sinx+4    code

   求y3用數學函數 sin(x)  頭文件math.hblog

   求解y2和y3時須要輸入x的值。原型

   樣例:數學

   y1=-2, x=0.5時,y2=166.75,y3=1.832721it

# include <stdio.h>
# include <math.h>
float fun (double n);
int main()
{
   float n,y1,y2,y3;
   printf ("請輸入x的值");
   scanf ("%f",&n);
   y1=fun(n);
   y2=fun(n+15);
   y3=fun(sin(n));
   printf ("%.3f %.3f %.3f",y1,y2,y3);
}
float fun (double n)
{
  float y;
  y=n*n-5*n+4;
  return y;
 }

 

 

4.用函數實現:火柴棍等式問題。

# include <stdio.h>
int number (int x);
int main ()
{
 int x,z,w;
 for (x=0;x<=9;x++)
 for (z=0;z<=9;z++)
 {
    w=z+x;
    if(w>9)
    {
       break;
    }
     if(number(x)+number(z)+number(w)==12)
    {
       printf("%d+%d=%d\n",x,z,w);
    }
 }
 return 0;
}
int number (int x)
{
  int Y;
  switch(x)
  {
  case 1:Y=2;break;
  case 0:
  case 6:
  case 9:Y=6;break;
  case 2:
  case 3:
  case 5:Y=5;break;
  case 4:Y=4;break;
  case 7:Y=3;break;
  case 8:Y=7;break;
  }
  return Y;
}

 

二 知識點總結:

1.函數的定義:函數是一段程序,接收零個或多個參數,實現一個功能,並返回零個或一個值。

2.一個源程序文件由一個或多個函數組成

3.函數定義通常格式:

函數類型 函數名(形參類型說明表) { 說明部分 語句部分 }

4.C語言不容許在函數體內嵌套定義函數

5.void  max (void)

第一個 void 表示無返回值省略默認爲int,第二個void表示無參數可省略

6.通常狀況下,函數中不該有輸入輸出的語句

7.函數的返回語句

(1)形式: return(表達式); 或 return 表達式;(2) 功能:使程序控制從被調用函數返回到調用函數中,同時把返值帶給調用函數(3) 說明: 1.>函數中可有多個return語句 2>若無return語句,遇}時,自動返回調用函數 3>若函數類型與return語句中表達式值的類型不一致,按前者爲準,自動轉換------函數調用轉換4> void型函數

8.調用形式 函數名(實參表),()起到了表示函數調用的重要做用, 即便沒有參數也須要()

9.調用方式:

函數無返回值時,單獨做爲一個函數調用語句函數有返回值時,可放到一個 賦值表達式語句中, 還可放到一個 函數調用語句 中,做爲另外一個函數的參數

10.函數原型採用複製粘貼函數首部而後加分號的方法

11.函數的定義出如今函數調用以前時能夠不用給出函數原型,但良好的編程習慣是在程序開頭給出全部的函數原型。

12.形式參數:定義函數時函數名後面括號中的變量名

實際參數:調用函數時函數名後面括號中的表達式

三.實驗總結:

1.自定義函數和主函數不在同一個大括號內

2.第2題在寫是要思路清晰,不然可能造成死循環

相關文章
相關標籤/搜索