首页 > 代码库 > 第七次作业

第七次作业

 一、实验内容        

1. 实验要求

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

代码

 1 #include<stdio.h>
 2 int isprime(int x);
 3 void main()
 4 {
 5     int x,n=0;
 6     for(x=2;x<=1000;x++)
 7     {
 8         if(isprime(x))
 9         {
10             printf("%5d",x);
11             n++;
12             if(n%10==0)
13             printf("\n");
14         }
15     }
16     printf("共%d个\n",n); 
17 }
18 int isprime(int x)
19 {
20     int i;
21     for(i=2;i<x;i++)
22     {
23         if(x%i==0)
24         break;
25     }
26     if(x==i)
27     return x;
28     else
29     return 0;
30 }

运行结果

技术分享

2.实验要求

求两个正整数的最大公约数和最小公倍数。用一个函数gcd(int a,int b)求最大公约数,另一个函数lcm(int a,int b)根据求出的最大公约数求最小公倍数。

代码

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int x,y;
 5     printf("输入两个不相等的正整数,并用空格隔开\n");
 6     scanf("%d%d",&x,&y);
 7     while(x<=0||y<=0||x==y)
 8     {
 9         printf("错误,重新输入\n");
10         scanf("%d%d",&x,&y);
11     }
12     printf("最大公约数是%d,最小公倍数是%d\n",gcd(x,y),lcm(x,y));
13 }
14 /*最大公约数*/
15 int gcd(int x,int y)
16 {
17     int z;
18     while(y!=0)
19     {
20         z=x%y;
21         x=y;
22         y=z;
23     }
24     return x;
25 }
26 /*最小公倍数*/
27 int lcm(int x,int y)
28 {
29     return x/gcd(x,y)*y;
30 }

运行结果

技术分享

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 y3;
 7     int x,y1,y2;
 8     scanf("%d",&x);
 9     y1=fun(2);
10     y2=fun(x+15);
11     y3=fun(sin(x));
12     printf("y1=%d,y2=%d,y3=%lf",y1,y2,y3);
13 }
14 double fun(double x)
15 {
16     double i;
17     i=x*x-x*5+4;
18     return i;
19 } 

运行结果

技术分享

4.实验要求

用函数实现:火柴棍等式问题。

代码

 1 #include<stdio.h>
 2 int gen(int x);
 3 int main()
 4 {
 5     int x,y,z,i;
 6     for(x=0;x<=9;x++)
 7     {
 8         for(y=0;y<=9;y++)
 9         {
10             for(z=0;z<=9;z++)
11             {
12                 if(x+y==z&&gen(x)+gen(y)+gen(z)==12)
13                 {
14                     printf("%d+%d=%d   ",x,y,z);
15                 }
16             }
17         }
18     }
19 }
20 int gen(int (x))
21 {
22     int i;
23     switch(x)
24     {
25         case 1:i=2;break;
26         case 7 :i=3;break;
27         case 4 :i=4;break;
28         case 5 :
29         case 3 :
30         case 2 :i=5;break;
31         case 6 :
32         case 9 :
33         case 0 :i=6;break;
34         case 8 :i=7;break;  
35     }
36     return i;
37 }

运行结果

技术分享

 二、知识点总结

1.自定义函数默认类型为int

2.自定义函数里目前不能输入和输出

3.自定义函数里的变量与主函数里的变量没有关系

4.自定义函数之间可以自由调用

三、实验总结

1.除了%3d后加空格隔开,也可以%4d或%5d隔开

2.王晓琛让我掌握计算机的思想,但是我更愿意宏观对比相同点不同点,为我所用

 

第七次作业