第七次作业
1. 定义一个判断素数的函数isprime(int n),利用该函数输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include<stdio.h> int isprime(int n); int main() { int i,a=0,b; for (i=2;i<=1000;i++) if (isprime(i)) { a++; printf("%4d",i); if (a%10==0) { printf("\n"); } } printf("一共有%d个素数",a); return 0; } int isprime(int b) { int i; for(i=2;i<b;i++) { if(b%i==0) return 0; } return 1; }
2.求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。
#include<stdio.h> #include<math.h> #include<stdlib.h> int gcd(int a,int b); int lcm(int a,int b); int main() { int a,b,i,j; printf("请输入两个正整数"); scanf("%d,%d",&a,&b); i=gcd(a,b); j=lcm(a,b); printf("最大公约数是%d,最小公倍数是%d",i,j); return 0; } int gcd(int a,int b) { int c; do { c=a%b; a=b; b=c; }while(c!=0); return a; } int lcm(int a,int b) { int d; d=a*b/gcd(a,b); return d; }
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的值。
#include<stdio.h> #include<math.h> double fun(double x); int main() { double y1,y2,y3,x; printf("请输入x的值"); scanf("%lf",&x); y1=fun(2); y2=fun(x+15); y3=fun(sin(x)); printf("y1=%lf,x=%lf时,y2=%lf,y3=%lf",y1,x,y2,y3); return 0; } double fun(double x) { double y; y=x*x-5*x+4; return y; }
4.用函数实现:火柴棍等式问题。
#include<stdio.h> int gun(int i); int main() { int x,y,z; for(x=0;x<=9;x++) for(y=0;y<=9;y++) { z=x+y; if(z>9) break; if(gun(x)+gun(y)+gun(z)==12) { printf("%d+%d=%d\n",x,y,z); } } return 0; } int gun(int i) { int a; switch(i) { case 0:a=6; case 6:a=6; case 9:a=6;break; case 2:a=5; case 3:a=5; case 5:a=5;break; case 1:a=2;break; case 4:a=4;break; case 7:a=3;break; case 8:a=7;break; } return a; }
知识点总结:一个函数最多只能返回一个值。
一般情况下,函数不应该有输入输出语句。
C语言不允许函数嵌套。
实参与形参的个数应该相等,类型应一致。
实验总结:声明函数后面不要丢掉分号
定义变量时,要注意变量的类型(整型,float类型,double类型)