首页 > 代码库 > 第七次作业
第七次作业
一、实验内容
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; } } } int main() { int m=0,i; for(i=2;i<=1000;i++) { if(isprime(i)) { printf("%5d",i); m++; if(m%10==0) { printf("\n"); } } } 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("输入两个正整数的值\n"); scanf("%d %d",&a,&b); if(a<0||b<0) { printf("数据错误"); } else { n=gcd(a,b); m=lcm(a,b); printf("最大公约数%d,最小公倍数%d\n",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的值\n"); 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\n",a,b,c); } } } } return 0; }
运行结果截图:
二、知识点总结
1. 函数定义的基本格式,函数定义和函数原型(声明)的区别何在?
一般格式:
函数首部(函数类型:函数返回值类型,缺省int型,无返回值void。函数名:合法标识符)
函数类型 函数名(形参类型说明表)
{
说明部分
语句部分
}
不允许嵌套。
一般不允许有输入输出语句。
函数的返回语句
形式: return(表达式);或 return 表达式;
功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数
说明:函数中可有多个return语句
若无return语句,遇}时,自动返回调用函数
若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换
void型函数
函数定义(函数功能的确立;由函数体;是完整的单位;编译器做实事,分配内存把函数装入内存。)
函数分类
从用户角度
标准函数(库函数):由系统提供
用户自定义函数
从函数形式
无参函数
有参函数
使用库函数应注意:
1、函数功能
2、函数参数的数目和顺序,及各参数意义和类型
3、函数返回值意义和类型
4、需要使用的包含文件
函数原型(声明)(对函数名、返回值类型、形参类型进行声明;不包括函数体;是一条语句,以分号结束,只起声明作用;不分配内存,只保留一个引用;)
函数的定义出现在函数调用之前时可以不用给出函数原型,但良好的编程习惯是在程序开头给出所有的函数原型。
例 printstar();
printf(“Hello,World!\n”);
例 m=max(a,b)*2;
例 printf(“%d”,max(a,b));
m=max(a,max(b,c));
3. 什么是形参,什么是实参,函数调用时的参数传递机制是什么?
函数调用:
函数名(实参表);
实际参数:调用函数时函数名后面括号中的表达式
三、实验总结
1.最重要的是搞清楚为什么定义函数,函数在主函数中的作用。
函数的声明要加分号,函数的定义不加分号。
第七次作业