zoukankan      html  css  js  c++  java
  • 第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("
    ");
    15             }
    16         }
    17     }
    18     printf("
    一共%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
    最小公倍数是%d
    ",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
    ",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更像是定义函数所在的一句话                                                             

  • 相关阅读:
    【题解】SDOI2015序列统计
    【合集】有标号的DAG图计数(合集)
    【题解】有标号的DAG计数4
    【题解】有标号的DAG计数3
    【题解】有标号的DAG计数2
    【题解】有标号的DAG计数1
    【题解】歌唱王国(概率生成函数+KMP)+伦讲的求方差
    【题解】CTS2019珍珠(二项式反演+卷积)
    【题解】餐巾计划问题
    【题解】数字梯形问题
  • 原文地址:https://www.cnblogs.com/yeqingsong/p/6067115.html
Copyright © 2011-2022 走看看