C语言程序设计—函数—实验报告_c语言函数实验报告
C语言程序设计—函数—实验报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言函数实验报告”。
实 验 报 告
专业
软 件 工 程
班级
X
班
学号_ XXXXXXXXXXX_
姓名
实验日期:201X年X月X日
报告退发(订正、重做)
课程
C程序设计实验
实验名称
函
数
一、实验目的① 熟练掌握C程序中函数的定义; ② 掌握函数的调用,函数参数的传递; ③ 熟练掌握函数的嵌套调用和递归调用;
二、实验环境(描述实验的软件、硬件环境)
① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器; ② 硬件环境:PC机一台
三、实验内容、步骤和结果分析
题目一:编写一个用来判断质数(素数)的函数。
要求:
(1)在main函数中调用该函数对输入的数值进行判断,并输出判断结果;(2)当输入数值
#include #include /*=======判断质数(素数)的函数=======*/ int judgePrime(int n){
} /*=======判断质数(素数)的函数=======*/ int main(){
printf(“n提示:输入一个数字来判断是否是质数(素数),当输入数值1;){ printf(”Please enter a number:“);for(int i=2;i
} return 1;if(n%i==0)return 0;else continue;
}
} scanf(”%d“,&num);if(num
题目二:使用习题1中所编写的判断质数的函数验证哥德巴赫(Goldbach)的1+1猜想-----任何一个>=6的偶数都可以表示成两个素数之和
要求:
① 屏幕提示用户一个>=6的偶数;
② 输出这个偶数等于2个素数之和的表达式; ③ 当输入数据
#include #include /*=======判断质数(素数)的函数=======*/ int judgePrime(int n){
for(int i=2;i
if(n%i==0)return 0;else continue;
} } return 1;//true-->1,false-->0 /*=======验证哥德巴赫猜想的函数(调用judgePrime)=======*/ int proveGoldbach(int m){
} int main(){
}
printf(”n提示:输入一个偶数来验证哥德巴赫猜想,当输入数值=6;){
} int temp;printf(“Please enter a number:”);scanf(“%d”,&num);temp=proveGoldbach(num);if(temp==0)//当输入小于6或者不是偶数时结束 return 0;printf(“==================================”);if(m
} if(judgePrime(j)==1&&judgePrime(m-j)==1)//判断两数是否都等于质数 { } printf(“t%d = %d + %dn”,m,j,m-j);return 0;//判断是否大于等于6或者不是偶数 for(int j=2;j
题目三:编写一个求阶乘的函数,接着调用该函数实现组合的求解要求:
① 提示用户输入n和m的数值; ② 输出的 结果
#include /*=======阶乘函数=======*/ int fac(int n){
} /*=======组合函数=======*/ int combine(int m,int n){ } /*=======main函数=======*/ void main(){
int m,n;int res;printf(“n提示:这是求组合求和公式的函数,输入两个整数(分别为上标和下标)nn”);scanf(“%d%d”,&m,&n);if(m>n)//判断上标大于小标重新输入 goto loop;return fac(n)/(fac(n-m)*fac(m));int f;if(n
}res=combine(m,n);printf(“tResult is %dn”,res);
题目四:编写一个求矩阵中最大元素以及最小元素的函数selectMaxAndMin(),在main函数中调用该函数
要求:
最大值和最小值的输出操作,可以放在selectMaxAndMin()函数中
#include #define ROW 4//矩阵的行 #define COLUMN 4//矩阵的列
/*=======在矩阵中选择最大最小数的函数=======*/ void selectMaxAndMin(int arry[ROW][COLUMN])//用指针更方便 {
int tempMax,tempMin;if(arry[0][0]>arry[0][1])//赋初始值 {
} else {
} for(int i=0;i
}
} for(int j=0;j
} if(arry[i][j]>tempMax){ } if(arry[i][j]
} int mat[ROW][COLUMN];printf(“Please enter a %d X %d matrix:n”,ROW,COLUMN);for(int i=0;i
} selectMaxAndMin(mat);return 0;for(int j=0;j
题目五:编写一个编码原文的函数,对于给定的内容,按照敌方的规律对其进行编码
要求:
某日,我军某部截获了一份敌方电报,经过仔细分析后发现:该电文中所有的字母字符都是经过某种运算后得到的,然那些非字母字符则没有经过任何处理。例如,原文中的字符A对应电文中的字符E,原文中的字符b对应电文中的字符f,原文中的字符W对应电文中的字符A,原文中的字符!在电文中仍为!
#include #define SIZE 20
//定义大小 /*=======密码翻译的函数=======*/ char trans(char a){
} //主函数 int main(void){
printf(“请输入原文:nnn”);char str[SIZE];gets(str);printf(“nnn”);if((a>='a'&&a='A'&&a
} if(a>='w'||a>='W'){ } else { return a;} return a-22;return a+4;
}printf(“正在破解……nnn”);printf(“破译的原文是:”);for(int i=0;i
} printf(“n”);str[i]=trans(str[i]);if(str[i]==' ')//判断是否结束 break;printf(“%c”,str[i]);
题目六:编写一个函数,求解输入矩阵的转置矩阵并输出
#include #define ROW 3//矩阵的行 #define COLUMN 4//矩阵的列 /*=======矩阵的输入函数=======*/ void matInput(int mat[][COLUMN]){
} /*=======原始矩阵的打印函数=======*/ for(int i=0;i
for(int j=0;j
} printf(“请输入矩阵元素 [%d][%d]=:”,i,j);scanf(“%d”,&mat[i][j]);
void matPrint(int mat[][COLUMN]){
} /*=======转置矩阵的打印函数=======*/ void matTrasPrint(int mat[][COLUMN]){
} /*=======main函数=======*/ int main(void){
} printf(“==================================”);printf(“请输入一个 %d X %d 的矩阵:n”,ROW,COLUMN);int mat[ROW][COLUMN];matInput(mat);printf(“==================================”);printf(“原始矩阵为:n”);matPrint(mat);printf(“==================================”);printf(“原始矩阵的转置矩阵为n”);matTrasPrint(mat);return 0;int arr[COLUMN][ROW];for(int i=0;i
} for(int j=0;j
} printf(“n”);arr[i][j]=mat[j][i];printf(“%3d”,arr[i][j]);for(int i=0;i
} for(int j=0;j
题目七:用户输入的字符串,以相反的顺序打印出来。
要求:利用递归函数调用形式
#include #define SIZE 20 /*=======相反输出字符串的函数=======*/ void reverse(char a[]){
int i=0;if(a[i]!=' '){
} int main(void){
}printf(“t提示:输入一串字符以相反的顺序打印n”);char str[SIZE];gets(str);reverse(str);printf(“n”);return 0;
} else return;reverse(&a[i+1]);//递归调用 printf(“%c”,a[i]);
四、讨论