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