第7次作业

 1. 定义一个判断素数的函数isprime(int n),利用该函数输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

 1 #include<stdio.h>
 2 int isprime(int m);
 3 int main()
 4 {
 5     int a=0,i;
 6     for(i=2;i<=1000;i++)
 7     {
 8         if(isprime(i))
 9         {
10             printf(" %3d",i);
11             a++;
12             if(a%10==0)
13             {
14                 printf("\n");
15             }
16         }
17     }
18     printf("\n一共%d个质数",a);
19     return 0;    
20 } 
21 int isprime(int m)
22 {
23     int i,glad=1;
24     for(i=2;i<m;i++)
25     {
26         if(m%i==0)
27             {
28                 glad=0;    
29                 break;
30             }
31     }
32     if(glad==1)
33     return 1;
34     else
35     return 0;
36 }

 

    2.求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。

 1 #include<stdio.h>
 2 int gcd(int a,int b);
 3 int lcm(int a,int b);
 4 int main()
 5 {
 6     int a,b;
 7     printf("请输入两位整数");
 8     scanf("%d,%d",&a,&b); 
 9     if(gcd<=0||lcm<=0)
10     {
11         printf("error");
12     }
13     else
14     {
15         printf("最大公约数是%d\n最小公倍数是%d\n",gcd(a,b),lcm(a,b));
16     }
17     return 0;
18 }
19 int gcd(int a,int b)
20 {
21     int max,s1; 
22     if(b>a)
23     {
24         max=a;
25         a=b;
26         b=max;    
27     }
28     while(1)
29     {
30     s1=a%b;
31     if(s1==0)
32     {
33         break;
34     }
35     a=b;
36     b=s1;    
37     }
38     return b;
39 }
40 int lcm(int a,int b)
41 {
42     int sum;
43     sum=a*b/gcd(a,b);
44 }

 

   3.编写一个函数fun(double x)求表达式x2-5x+4的值,x作为参数传给函数。在主函数中调用该函数求下列式子的值:

       y1= 22-5*2+4

       y2= (x+15)2-5*(x+15)+4

       y3= sin2x-5*sinx+4    

   求y3用数学函数 sin(x)  头文件math.h

   求解y2和y3时需要输入x的值。

   样例:

   y1=-2, x=0.5时,y2=166.75,y3=1.832721

 1 #include<stdio.h>
 2 #include<math.h>
 3 double fun(double x);
 4 int main()
 5 {
 6     double x,y1,y2,y3;
 7     printf("请输入x的值");
 8     scanf("%lf",&x);
 9     y1=2*2-5*2+4;
10         y2=fun(x+15);
11         y3=fun(sin(x));
12     printf("分别得出%.3lf,%.3lf,%.3lf",y1,y2,y3);
13     return 0;
14 }
15 double fun(double x)
16 {
17     double sum,y1,y2,y3;
18     sum=x*x-5*x+4;
19         return sum;
20 }

 

4.用函数实现:火柴棍等式问题。

 1 #include<stdio.h>
 2 int sum(int a); 
 3 int sum(int b); 
 4 int sum(int z); 
 5 int main()
 6 {
 7     int a,b,x,y,z,g,e;
 8     for(a=0;a<=9;a++)
 9     for(b=0;b<=9;b++)
10     {
11     g=a+b;
12              if(g>9)
13             {
14                 break;
15             }
16             
17     x=sum(a);
18     y=sum(b);
19     z=sum(g);
20     e=x+y+z;
21     if(e==12)
22         {
23             printf("%d+%d=%d\n",a,b,g);
24         }
25         } 
26     return 0;
27 }
28 int sum(int e)
29 {
30 int s1;    
31         switch(e)
32         {
33             case 0:s1=6; 
34             case 9:s1=6;
35             case 6:s1=6; break;
36             case 1:s1=2; break;
37             case 2:s1=5; 
38             case 3:s1=5; 
39             case 5:s1=5; break;
40             case 4:s1=4; break;
41             case 7:s1=3; break;
42             case 8:s1=7; break;
43         }
44     return s1;
45 }

 

附加题

    函数实现万年历,其中需定义以下函数

    int isValidate(int year,int month)             // 输入数据的合法性验证
    int isLeap(int year)                                    // 判断闰年
    int days(int year,int month)                     //  计算某年某月的天数
    int totalDays(int year,int month)             //  计算某年某月到1900年1月1日的总天数
    void printCanlender(int year,int month)  //  输出万年历

二。知识点总结

1:实参和行参不同,都代指一个函数。

2:主函数可以代指输出,自定义函数可以任意形式,但int isprime中与主函数对应。

三、实验总结(实验中遇到的问题及解决方法)

1 :如果使用int,那么从使至终都用int,否则错误。

2:个人以为int isprime更像是定义函数所在的一句话                                                             

 

posted @ 2016-11-15 20:10  入梦落樱满熏香  阅读(180)  评论(1编辑  收藏  举报