C语言程序设计实验报告(实验名称:函数)
1实验目的
(1)掌握函数的定义方法、调用方法、参数说明以及返回值;
(2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式;
(3)掌握函数的嵌套调用及递归调用的用的设计方法;
(4)在编程过程中加深理解函数调用的程序设计思想。
2实验内容
(1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。
要求:
①在主函数中输入一个整数x(直接赋值或从键盘输入);
②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是
否为素数的信息,输出格式为“x is a prime number”或”x is not a
prime number”;
③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查
结果是否正确。
(2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。
如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。
要求:
①在主函数中从键盘输入一对整型数据a和b;
②调用函数后,根据返回值对a和b的关系进行说明。
例如,在主函数中输
入:10,5,则输出“10 is a multiple of 5”;
③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6
与4,20与4,37与9。
3算法描述流程图
(1)primeNum(int x)(判别一个数是否是素数)函数流程图
①主函数流程图:
②判断素数函数流程图:
(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图
①主函数流程图:
②判断倍数流程图:
4源程序
(1)判断某个数是否是素数
#include <stdio.h>
int primNum(int x) /*编写函数判断某个数是否是素数*/ {
int i;
if (x==0||x==1) /*当x等于1或等于0时判断是否为素数*/ return 0;
for (i=2;i<x;i++) /* 当x大于2时判断不为素数的数*/
{
if (x%i==0)
return 0;
}
if (x%i) /* 当x等于2或不满足上述条件时时判断出该数是素数*/ return 1;
}
void main()
{
int n ;
printf("Please input an integer:"); /* 提示从键盘输入一个数x */
scanf("%d",&n);
if (primNum(n)==1) /* 调用定义的函数*/ printf("%d is a prime number\n",n); /* 由函数得出结论判断是否为素数*/ else
printf("%d is not a prime number\n",n);
}
(2)个数是否是整数倍关系
#include <stdio.h>
int mulNum(int a,int b)/* 定义函数确定两个数是否有整数倍关系*/
{
if (a%b==0) /* 判断出a是b的整数*/
return 1;
else /* 判断出a不是b的整数*/
return 0;
}
void main ()
{
int m,n;
printf ("please input tow integers:\n"); /*提示从键盘输入两个数*/
scanf ("%d%d",&m,&n); /*从键盘输入两个数的值*/
if(mulNum(m,n)==1) /*调用定义的函数并判断输出相应的结果*/
printf("%d is a multiple of %d\n",m,n);
else
printf("%d is not a multiple of %d\n",m,n);
}
5测试数据
(1)实验(1)测试数据为0,1,2,5,9,13,59,121
运行结果
当测试数据0时
当测试数据1时
当测试数据2时
当测试数据5时
当测试数据9时
当测试数据59时
当测试数据121时
(2)实验2测试的数据1与5,5与5,6与2,6与4,20与4,37与9。
运行结果
当测试1与5时
当测试5与5时
当测试6与2时
当测试6与4时
当测试37与9时
6出现问题及解决方法
1)在判断某个数是否是素数的本实验中,我在使用循环遍历判断x是否为素数的时候循环体的内容错误地编写为:
for (i=2;i<x;i++)
{
if (x%i==0)
return 0;
else
return 1;
}
导致程序不能正确地按照设想的结果运行,在判断清循环体的执行过程后将程序正确地改为了:
for (i=2;i<x;i++)
{
if (x%i==0)
return 0;
}
2)在判断确定两个数是否是整数倍关系的本实验中,我在定义两个形参时错误地编写成了(int a ,b),经检查后改为正确格式(int a ,int b)。
3)此外,在编写程序的时候,在标点符号上还有一些细节上的疏漏,如:标点没有在英文的状态下使用,还有一条语句结束后遗漏了分号“; ”。
7实验心得
本次实验,我掌握了一些具体函数的定义和调用方法,函数形参以及返回值的使用。
在操作的过程中深刻地体会到函数调用的便捷。
通过对循环和条件选择的使用,我亲自感受并实践了程序设计的思想,同时对C程序设计也有了总体的认识。
此外,编写程序的严谨思想也令我深深地感受一丝不苟地工作的重要性。