第一篇:C语言程序设计实验五:函数
C语言程序设计实验五:函数
1、定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。
说明:
(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如12通1班12张山实验五.doc。
第二篇:C语言程序设计实验七:函数、数组、指针
C语言程序设计实验七:函数、数组、指针
1、程序运行后,用户任意输入一个字符串,求出字符串长度,然后输出字符串内容及个 数。不能使用strlen函数。
求字符串长度函数的函数原型必须如下:
int MyStrLenPt(char *str)
若输入:nihao123!
则输出:nihao123!:9 chars2、编写一个对一维数组进行排序的程序。
要求:
写两个函数,一个主函数,一个sort函数。在主函数中完成数组的输入和输出,通过调 用sort函数对数组进行排序。
sort函数的原型为:voidsort(int*p, intn);
说明:
(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
(4)文档名称:班级+学号后2位+姓名+实验编号,例如11电1班12张山实验七.doc。
第三篇:C语言程序设计—函数—实验报告
实 验 报 告
专业
软 件 工 程
班级
X
班
学号_ XXXXXXXXXXX_
姓名
实验日期:201X年X月X日
报告退发(订正、重做)
课程
C程序设计实验
实验名称
函
数
一、实验目的
① 熟练掌握C程序中函数的定义; ② 掌握函数的调用,函数参数的传递; ③ 熟练掌握函数的嵌套调用和递归调用;
二、实验环境(描述实验的软件、硬件环境)
① 软件环境:windows xp/win7等操作系统,Microsoft Visual C++ 6.0编译器; ② 硬件环境:PC机一台
三、实验内容、步骤和结果分析
题目一:编写一个用来判断质数(素数)的函数。
要求:
(1)在main函数中调用该函数对输入的数值进行判断,并输出判断结果;(2)当输入数值<=1时,停止输入和判断。
#include
} /*=======判断质数(素数)的函数=======*/ int main(){
printf(“n提示:输入一个数字来判断是否是质数(素数),当输入数值<=1时,停止输入和判断。nn”);for(int num=2,temp;num>1;){ printf(“Please enter a number:”);for(int i=2;i<=sqrt(n);i++)//一个数n如果是合数,那么它的所有的因子不超过n的开方 {
} return 1;if(n%i==0)return 0;else continue;
}
} scanf(“%d”,&num);if(num<=1)break;//当输入数值<=1时,停止输入和判断 temp=judgePrime(num);if(temp==0)printf(“%d is not a prime numner!nn”,num);else printf(“%d is a prime numner!nn”,num);return 0;
题目二:使用习题1中所编写的判断质数的函数验证哥德巴赫(Goldbach)的1+1猜想-----任何一个>=6的偶数都可以表示成两个素数之和
要求:
① 屏幕提示用户一个>=6的偶数;
② 输出这个偶数等于2个素数之和的表达式; ③ 当输入数据<6或者不是偶数时,停止输入和验证。
#include
for(int i=2;i<=sqrt(n);i++)//一个数n如果是合数,那么它的所有的因子不超过n的开方 {
if(n%i==0)return 0;else continue;
} } return 1;//true-->1,false-->0 /*=======验证哥德巴赫猜想的函数(调用judgePrime)=======*/ int proveGoldbach(int m){
} int main(){
}
printf(“n提示:输入一个偶数来验证哥德巴赫猜想,当输入数值<6时,停止输入和判断。nn”);for(int num=6;num>=6;){
} int temp;printf(“Please enter a number:”);scanf(“%d”,&num);temp=proveGoldbach(num);if(temp==0)//当输入小于6或者不是偶数时结束 return 0;printf(“==================================”);if(m<6||m%2!=0){
} 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<(m/2);j++)
题目三:编写一个求阶乘的函数,接着调用该函数实现组合的求解要求:
① 提示用户输入n和m的数值; ② 输出的 结果
#include
} /*=======组合函数=======*/ 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<0)printf(“n<0,data error!”);f=1;else if(n==0||n==1)else f=fac(n-1)*n;return f;loop:printf(“Please enter two numbers:”);
}res=combine(m,n);printf(“tResult is %dn”,res);
题目四:编写一个求矩阵中最大元素以及最小元素的函数selectMaxAndMin(),在main函数中调用该函数
要求:
最大值和最小值的输出操作,可以放在selectMaxAndMin()函数中
#include
/*=======在矩阵中选择最大最小数的函数=======*/ 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 //定义大小 /*=======密码翻译的函数=======*/ char trans(char a){ } //主函数 int main(void){ printf(“请输入原文:nnn”);char str[SIZE];gets(str);printf(“nnn”);if((a>='a'&&a<='v')||(a>='A'&&a<='V')){ } else { } if(a>='w'||a>='W'){ } else { return a;} return a-22;return a+4; }printf(“正在破解……nnn”);printf(“破译的原文是:”);for(int i=0;i<20;i++){ } printf(“n”);str[i]=trans(str[i]);if(str[i]==' ')//判断是否结束 break;printf(“%c”,str[i]); 题目六:编写一个函数,求解输入矩阵的转置矩阵并输出 #include } /*=======原始矩阵的打印函数=======*/ 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 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]); 四、讨论 C语言程序设计实验 (四)[实验1] scanf()、printf()函数的使用。 1.实验题目 输入1个学生学号和4门课程成绩,输出这个学生的学号、4门课程成绩和平均成绩。 2.实验要求 (1)按表格的形式输出,以行内输出一个学生的信息。 (2)学号用长整型,各科成绩用单精度型。 3.实验目标 (1)掌握实现人机对话形式的方法,scanf()输入。 (2)体会根据需要控制输出格式的方法,printf()输出。 4.实验指导 利用格式的数据宽度控制数据的对位输出。输出如下格式: The number and score of a student is: |---| |number | score1 | score2 | score3 | sco re4 | average | |---| |10011| 67.5|88.0 |93.5 |78.0|81.75 | |---| [实验2] getchar()、putchar()函数的使用 1.实验题目 用getchar()函数读入a~v之间的一个字母,用putchar()函数输出一个5行5列的矩阵,该矩阵第一行为读入的字母,下一行为紧跟该字母后的字母,依此类推。如输入a,则输出的矩阵为: aaaaa bbbbb ccccc ddddd eeeee 2.实验要求 (1)运用getchar()进行字符输入。 (2)运用putchar()进行字符输出。 3.实验目标 (1)体会根据需要控制输出格式的方法。 [实验3] 3.6 下面程序运行时在键盘上如何输入?如果a=3,b=4,x=8.5,y=71.82,c1=’A’,c2=’a’,请写出对应每个scanf函数的输入情况。 main() { int a,b;float x,y;char c1,c2; scanf(“a=%d□b=%d”,&a,&b); scanf(“□%f %e”,&x,&y); scanf(“□%c %c”,&c1,&c2); } 3.7编一程序,从键盘输入一个圆半径值,求圆周长、圆面积、圆球表面积、圆球体积。输出结果时,要求有文字说明,保留2位小数。 提示:设圆半径为r,则圆周长=2πr,圆面积=πr2,圆球表面积=4πr2,圆球体积= 4πr3/3。 C语言实验指导 实验一 顺序结构程序设计(2学时) 一、实验目的熟悉在VC运行环境下,编辑调试C语言程序的一般步骤。掌握顺序结构程序设计的基本思想和基本方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴ 程序功能描述。 ⑵ 程序版本号、创作日期。 ⑶ 作者信息描述:班级、学号、姓名。 ⑷ 问题分析描述。 ⑸ 算法设计描述。 ⑹ 关键语句注释说明。 ⑺ 调试运行过程中出现的错误及改正方法。 ⑻ 输入数据样例。 ⑼ 输出数据样例。 三、实验内容 以下两题,任选其一解答。 你知道淄博到北京的地面距离是多少千米吗,淄博到纽约的地面距离又是多少千米呢?说不上来了吧。还是让我们编一个程序来计算一下吧。 1.已知地球的平均半径为6371千米,假设在地球的同一纬度上,有两个处于不同经度的城市A、B,编程序求出这两个城市之间的地面距离。 输入数据样例:例如,欲求北纬30度上东经10度到东经50度的距离,输入格式应为:30 10 50 参考测试数据: 输入:0 0 180 输出:20015.08 输入:30 0 90 输出:8397.7 2输入:60 0 45 输出:2453.20 2.地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。 提示:球面上两点之间的最短距离,等于过这两点以球心为圆心的圆上,这两点之间劣弧的长度。(即这两点与球心之间的连线构成的夹角所对球面劣弧的长度)。 建议你自己一步步推导出公式,而不要照搬网上的现成公式。 四、常见问题 疑问1:这分明是两道数学题啊,能否将数学公式提供给我们呢,我们的主要任务不是编写程序吗? 答:建立数学模型也是编程序的一部分。学会分析解决现实中遇到的问题,是我们学习的重要目标。 疑问2:这个问题好像属于球面几何的范畴,用平面几何可以求解吗? 答:这个问题的确涉及到球面几何,但是也的确可以利用投影以及平面几何方法来求解。 实验二 选择结构程序设计(2学时) 一、实验目的 掌握选择结构程序设计的一般方法及选择结构程序的调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说:可以查万年历啊。那么,不查万年历你能计算出来吗? 以下两题,任选其一解答。 1.编程序实现:输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几。 2.编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。 四、常见问题 疑问1:闰年的规律是不是四年一闰? 答:四年一闰是儒略历(儒略也就是凯撒大帝)的置闰规则。我们现在使用的是格里高利历,置闰规则是每400年97闰。 疑问2:公元1年1月1日是星期几呢? 答:星期一。 疑问3:据说从儒略历改为格里高利历时,将1582年10月4日的下一天定为格里高利历的10月15日,中间销去了10天,这会不会影响星期几的计算? 答:这个调整是对儒略历误差的纠正,并不会影响总天数和星期几的计算。 疑问4:这里计算总天数,好像要用到循环程序吧? 答:其实根据闰年的置闰规则,不使用循环也可以计算出来总天数。当然,你想使用循环编写该程序也是可以的。 实验三 循环结构程序设计(2学时) 一、实验目的掌握循环结构程序设计的一般方法及循环结构程序的调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。 2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。 四、常见问题 疑问1:等额本息还款法每个月的还款额怎么计算,应该有个公式吧,要不然怎么计算出来每个月应还的利息与本金? 答:的确有一个计算公式。当然你可以自己推导出来(这样你会很有成就感!),要不然就从网上搜索出来。 实验四 循环程序综合应用(4学时) 一、实验目的: 掌握循环结构程序设计的一般方法及循环结构程序的调试方法,能够综合运用顺序、选择和循环结构解决一般难度的实际应用问题。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1.编程序实现如下功能:输入任意一个年份和月份,按以下格式输出该月份的公历日历。 要求由程序计算出来该月份的1日是星期几,并用循环控制打印。打印样例如下: 2012年日历 ========== 9月 ---------日 一 二 三 四 五 六2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30------------------------- 2.编程序实现如下功能:输入任意一个年份,按以下格式输出该年份全年的公历日历。要求由程序计算出来每个月份的1日是星期几,并用循环控制打印。 四、常见问题 疑问1:如何控制某个月1日的打印位置? 答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。 疑问2:如何控制每周和每月的打印换行? 答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的天数控制每月的打印换行。 实验五 字符串处理综合应用(4学时) 一、实验目的 掌握字符串处理的一般方法及字符串处理应用程序的调试方法,能够综合运用选择、循环结构和数组、指针解决一般难度的实际应用问题。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1.编程实现,输入一个整数的小写金额值(即不考虑角和分),转化为大写金额值并输出。先实现基本功能,如输入1002300,可以输出“壹佰零拾零万贰仟叁佰零拾零元整”。 2.编程实现,输入一个小写金额值,转化为大写金额值输出。要求实现相对完善的功能,如输入1002300.90,应该输出“壹佰万贰仟叁佰元零玖角整”。 四、常见问题 疑问1:如何才能分离出整数中的每一位数字? 答:可以利用整数的求余数和除法运算实现数字的分离,同时将分离出的数字存入到一个事先定义好的数组中,每个数组元素只存储一位数字。 疑问2:若不能确定整数的实际位数,如何控制分离过程? 答:可以通过循环控制数字的分离过程,每循环一次分离出来当前的最末一位,然后去掉最末一位,直至分离出所有的位。 疑问3:如何控制给某位数字添加合适的数量单位,如万、仟、佰、拾、元? 答:可以根据该数字在原小写数值中的位置进行控制,如第0位单位为“元”,第1位单位为“拾”,依此类推。 实验六 文件应用程序设计(2学时) 一、实验目的掌握文件应用程序设计的一般方法及其调试方法。 二、实验要求 1. 仔细阅读下列实验内容,并编写出相应的C语言源程序。2. 在VC运行环境下,编辑录入源程序。 3. 调试运行源程序,注意观察调试运行过程中发现的错误及改正方法。4. 掌握如何根据出错信息查找语法错误。 5.最后提交带有充分注释的源程序文件(扩展名为.c)。要求该文件必须能够正确地编译及运行,并不得与他人作品雷同。 6.源程序注释信息可以包括以下几方面内容: ⑴程序功能描述。 ⑵程序版本号、创作日期。 ⑶作者信息描述:班级、学号、姓名。 ⑷问题分析描述。 ⑸算法设计描述。 ⑹关键语句注释说明。 ⑺调试运行过程中出现的错误及改正方法。 ⑻输入数据样例。 ⑼输出数据样例。 三、实验内容 以下两题,任选其一解答。 1. 海萍夫妇为了彻底告别“蜗居”生活,痛下决心贷款60万元购买了一套三居室。若贷款月利率为0.5%,还款期限为120个月,还款方式为等额本金还款法(即贷款期限内每期以相等的额度偿还贷款本金,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。 2. 若还款方式采用等额本息还款法(即贷款期限内每期以相等的额度偿还贷款本息,贷款利息随本金逐期递减)。试求出每个月还款的本金、每个月的利息以及总利息分别是多少元。要求将输出结果写入到数据文件中。第四篇:C语言程序设计实验四(本站推荐)
第五篇:C语言程序设计实验安排