易妖游戏网
您的当前位置:首页C语言设计实验报告之欧阳道创编

C语言设计实验报告之欧阳道创编

来源:易妖游戏网
欧阳道创编 2021.03.06

C语言程序设计实验报告

1

时间:2021.03.06 创作:欧阳道 2 实验目的

(1)掌握函数的定义方法、调用方法、参数说明以及返回值;

(2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式;

(3)掌握函数的嵌套调用及递归调用的设计方法;

(4)在编程过程中加深理解函数调用的程序设计思想。

2 实验内容

(1)编写一个函数primeNum(int x),功能是判断一个数是否为素数。

(2)输入三个整数,求最大值和最小值。

(3)编写函数mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数的返回值为0。

(4)编写两个函数,一个函数( )的功能是求两

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

个整数的最大公约数,另一个函数mul( )的功能是求两个整数的最小公倍数。

3 算法描述流程图

(1)编写一个函数primeNum(int x),功能是判断一个数是否为素数。

(2)输入三个整数,求最大值和最小值。

(3)编写函数mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数的返回值为0。

(4)编写两个函数,一个函数( )的功能是求两个整数的最大公约数,另一个函数mul( )的功能是求两个整数的最小公倍数。

4 源程序

(1)编写一个函数primeNum(int x),功能是判断一个数是否为素数。

#include

void primeNum(int x) {

int i,k;

if(x==0||x==1)

printf(\"%d is not a prime number\\n\ else {

for(i=2;i<=x/2;i++) if(x%i==0)

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

k=0;

if(k==0)

printf(\"%d is not a prime number\\n\ else

printf(\"%d is a prime number\\n\ } }

void main() {

int m;

printf(\"请输入一个数:\");

scanf(\"%d\ primeNum(m); }

(2)输入三个整数,求最大值和最小值。 #include

int getMax(int a,int b,int c) {

int max=a; if(b>max) max=b; if(c>max) max=c;

return max; }

int getMin(int a,int b,int c) {

int min=a;

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

if(breturn min; }

main() {

int x,y,z,m,n;

printf(\"请输入三个数:\"); scanf(\"%d%d%d\ m=getMax(x,y,z); n=getMin(x,y,z);

printf(\"最大值是%d\\n\ printf(\"最小值是%d\\n\

}

(3)编写函数mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数的返回值为0。

#include

int mulNum(int a,int b) {

if(a%b==0) return 1; else

return 0; }

main()

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

{

int x,y,m;

printf(\"请输入两个整数:\");

scanf(\"%d%d\ m=mulNum(x,y); if(m==1)

printf(\"%d is a multiple of %d\\n\ if(m==0)

printf(\"%d is not a multiple of %d\\n\ }

(4)编写两个函数,一个函数( )的功能是求两个整数的最大公约数,另一个函数mul( )的功能是求两个整数的最小公倍数。

#include int (int x,int y) {

int t,i;

t=xfor(i=t;i>=1;i--) {

if(x%i==0&&y%i==0) break; }

return i; }

int mul(int x,int y, int z) {

int t,k;

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

t=x>y?x:y;

for(k=t;k<=x*y;k++) {

if(k%x==0&&k%y==0) break; }

return k; }

main() {

int a,b,m,n;

printf(\"请输入两个正整数:\");

scanf(\"%d%d\ m=(a,b); n=mul(a,b,m);

printf(\"最大公约数是: %d\\n最小公倍数是: %d\\n\

}

5 测试数据

素数判断:0,1,2,5,9,13,59,121;

求三个数中的最大最小值:4 ,8 ,9;8,4,9;8,9,4;

判断两个数是否是倍数关系:1与5,5与5,6与2,6与4,20与4,37与9 。

求两个数的最大公约数和最小公倍数:10和15;24和18;12和24;

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

6 运行结果

素数判断

求三个数中的最大最小值 判断两个数是否是倍数关系

求两个数的最大公约数和最小公倍数

7 出现问题及解决方法

实验(1)要求函数类型为空值(void),不能有返回值,且要求在函数中输出是否为素数;解决方法:

if(x%i==0)

k=0;

if(k==0)

printf(\"%d is not a prime number\\n\ else

printf(\"%d is a prime number\\n\

实验(5)要求将最大公约数与两个整数一起作为实参传递给函数mul(),以此求出最小公倍数;解决方法:

int mul(int x,int y, int z) {

int t,k; t=x>y?x:y;

for(k=t;k<=x*y;k++) {

if(k%x==0&&k%y==0) break; }

return k; }

没有用到变量z。

或者:

int mul(int x,int y,int z) {

k=x*y/z; return k; }

实验中我采取了第一种方法,但第二种方法较为简单,因为最初不知道 最小公倍数=两个整数乘积再除以最大公约数

欧阳道创编 2021.03.06

欧阳道创编 2021.03.06

8 实验心得

通过本次实验,更加熟练地掌握了函数的定义与调用,函数参数和返回值的使用方法;并练习了循环结构和条件控制语句的用法;对函数调用的程序设计思想加深了理解。 时间:2021.03.06 创作:欧阳道 欧阳道创编 2021.03.06

因篇幅问题不能全部显示,请点此查看更多更全内容