第七次作业

一、实验内容

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

代码:

#include<stdio.h>
int isprime(int n);
int isprime(int n)
{
    int m;
    for(m=2;m<=n-1;m++)
    {
        if(n%m==0)
        {
            return 0;
        }
   }
   return n; }
int main() { int m=0,i; for(i=2;i<=1000;i++) { if(isprime(i)) { printf("%5d",i); m++; if(m%10==0) { printf(" "); } } } printf(" %d个素数",m); return 0; }

运行结果截图:

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 gcd(int a,int b)
{
    int i,n,max;
    if(a>=b)
    {
        max=a;
    }
    else if(a<b)
    {
        max=b;
    }
    for(i=1;i<=max;i++)
    {
        if(a%i==0&&b%i==0)
        {
            n=i;
            continue;
        }
     }
   return n; }
int lcm(int a,int b) { int m; m=a*b/gcd(a,b); return m; } int main() { int a,b,n,m; printf("输入两个正整数的值 "); scanf("%d %d",&a,&b); if(a<0||b<0) { printf("数据错误"); } else { n=gcd(a,b); m=lcm(a,b); printf("最大公约数%d,最小公倍数%d ",n,m); } return 0; }

运行结果截图:

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

代码:

#include<stdio.h>
#include<math.h>
double fun(double x);
double fun(double x)
{
    double y;
    y=x*x-5*x+4;
    return y;
}
int main()
{
    double x,y1,y2,y3;
    printf("请输入x的值
");
    scanf("%lf",&x);
    y1=fun(2);
    y2=fun(x+15);
    y3=fun(sin(x));
    printf("y1=%.2lf,y2=%.2lf,y3=%.2lf",y1,y2,y3);
    return 0;
}

运行结果截图:

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

代码:

#include<stdio.h>
int fun(int x);
int fun(int x)
{
    int s;
    switch(x)
    {
        case 0:
        case 6:
        case 9:
            s=6;
            return s;
        case 1:
            s=2;
            return s;
        case 2:
        case 3:
        case 5:
            s=5;
            return s;
        case 4:
            s=4;
            return s;
        case 7:
            s=3;
            return s;
        case 8:
            s=7;
            return s;
    }
}
int main()
{
    int sum,s1,s2,s3,a,b,c;
    for(a=0;a<=9;a++)
    {
        for(b=0;b<=9;b++)
        {
            s1=fun(a);
            s2=fun(b);
            c=a+b;
            if(c>9)
            {
                break;
            }
            else
            {
                s3=fun(c);
                sum=s1+s2+s3;
                if(sum!=12)
                {
                    continue;
                }
                else
                {
                    printf("%d+%d=%d
",a,b,c);
                }
            }
            
        }
    }
    return 0;
}

运行结果截图:

二、知识点总结

1. 函数定义的基本格式,函数定义和函数原型(声明)的区别何在?

一般格式:

函数首部(函数类型:函数返回值类型,缺省int型,无返回值void。函数名:合法标识符)

函数类型     函数名(形参类型说明表)

{

  说明部分

  语句部分

}

不允许嵌套。

一般不允许有输入输出语句。

函数的返回语句

  形式:  return(表达式);或 return   表达式;

  功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数

  说明:函数中可有多个return语句

  若无return语句,遇}时,自动返回调用函数

  若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换

  void型函数

函数定义(函数功能的确立;由函数体;是完整的单位;编译器做实事,分配内存把函数装入内存。)

 函数分类

 从用户角度

 标准函数(库函数):由系统提供

 用户自定义函数

 从函数形式

 无参函数

 有参函数

使用库函数应注意:

1、函数功能

2、函数参数的数目和顺序,及各参数意义和类型

3、函数返回值意义和类型

4、需要使用的包含文件

函数原型(声明)(对函数名、返回值类型、形参类型进行声明;不包括函数体;是一条语句,以分号结束,只起声明作用;不分配内存,只保留一个引用;)

函数首部,以分号“;”结尾,构成了函数的原型
函数原型的目的是告诉编译器这个函数长什么样
 名称
参数(数量及类型)
 返回类型
旧标准习惯把函数原型写在调用它的函数里面
现在一般写在调用它的函数前面
原型里可以不写参数的名字,但是一般仍然写上

 函数的定义出现在函数调用之前时可以不用给出函数原型,但良好的编程习惯是在程序开头给出所有的函数原型。

2. 函数的调用方式有哪几种
调用方式
 函数无返回值时,单独作为一个函数调用语句:

   例   printstar();

          printf(“Hello,World! ”);

 函数有返回值时,可放到一个 赋值表达式语句中:

  例    m=max(a,b)*2;

 还可放到一个 函数调用语句 中,作为另一个函数的参数:

  例     printf(“%d”,max(a,b));

           m=max(a,max(b,c));

3. 什么是形参,什么是实参,函数调用时的参数传递机制是什么?

函数调用:

 调用形式

   函数名(实参表);

()起到了表示函数调用的重要作用
即使没有参数也需要()
如果有参数,则需要给出正确的数量和顺序
这些值会被按照顺序依次用来初始化函数中的参数
形式参数:定义函数时函数名后面括号中的变量名。(函数的入口。void:表示无参数,可省略。)

实际参数:调用函数时函数名后面括号中的表达式

三、实验总结

1.最重要的是搞清楚为什么定义函数,函数在主函数中的作用。

函数的声明要加分号,函数的定义不加分号。

原文地址:https://www.cnblogs.com/xxs812/p/6079584.html