1. 定义一个判断素数的函数isprime(int n),利用该函数输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)
#include<stdio.h> int isprime(int k); int isprime(int k) { int i; for(i=2;i<=k-1;i++) { if(k%i==0) { return 0; } } return 1; } int main() { int i,x,k; x=0; for(i=2;i<=1000;i++) { if(isprime(i)) { x=x+1; printf("%4d",i); if(x%10==0) { printf(" "); } } } printf("一共有%d个质数 ",x); return 0; }
2.求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。
#include<stdio.h> #include<stdlib.h> #include<math.h> int gcd(int a,int b); int lcm(int a,int b); int main() { int a,b,m,n; printf("请输入两个整数 "); scanf("%d,%d",&a,&b); m=gcd(a,b); n=lcm(a,b); printf("%d,%d",m,n); return 0; } int gcd(int a,int b) { int i; do { i=a%b; a=b; b=i; }while(i!=0); return a; } int lcm(int a,int b) { int f; f=a*b/gcd(a,b); return f; }
3.编写一个函数fun(double x)求表达式x2-5x+4的值,x作为参数传给函数。在主函数中调用该函数求下列式子的值:
#include<stdio.h> #include<math.h> double fun(double n); double fun(double n) { double m; m=n*n-5*n+4; return m; } int main() { double i,j,k,n; printf("请输入n "); scanf("%lf",&n); i=fun(2); j=fun(n+15); k=fun(sin(n)); printf("当i=%lf,n=%lf时,j=%lf,k=%lf",i,n,j,k); return 0; }
4.用函数实现:火柴棍等式问题。
#include<stdio.h> int gen(int l); int gen(int l) { switch(l) { case 0:l=6; case 6:l=6; case 9:l=6;break; case 1:l=2;break; case 2:l=5; case 3:l=5; case 5:l=5;break; case 4:l=4;break; case 7:l=3;break; case 8:l=7;break; } return l; } int main() { int i,j,k,l,m,n; for(i=0;i<=9;i++) for(j=0;j<=9;j++) for(k=0;k<=9;k++) { if(k==i+j&&gen(i)+gen(j)+gen(k)==12) { printf("%d+%d=%d ",i,j,k); } } return 0; }
实验总结:
函数,在前面应定要加一个主函数
do while的while后面有一个;
用switch的时候,如果结果是相同的,可以写到一起,只写一个
函数,要看清,到底要返回的是什么
不要忘了,在主函数中要定义变量
知识总结:
函数名
{
声明部分
语句部分
}
合法标示符:字母,数字,下划线
函数的返回类型:缺省int 型,无返回值void型
函数体是由大括号括起来的语句序列,用于完成函数要实现的功能