一.实验目的与要求
1. 掌握函数定义,函数声明,函数调用的方法
2. 领会函数调用时实参与形参的对应关系,以及主,被调函数之间的数据传递方式. 3. 掌握函数的嵌套调用与递归调用的方法.
4. 理解变量的作用域,生存期的概念,掌握不同存储类别的变量特点及使用规则
二.实验范例,熟悉下列程序,并掌握算法。
(1) 设计一个递归函数,计算e的n次方(递归调用)
#include #define e 2.143 double power(int n) /*power()函数的定义*/ { double f; if(n==0) f=1; else f=e*power(n-1); return(f); } main() { int n; printf(\" Please Input n:\"); scanf(\"%d\ printf(\"the result is %lf\\n\ /*power()函数的调用*/ } (2)设计一个prim( )函数,输出整数n的所有素数因子.(嵌套调用) #include for(i=2;i void factor(int n) ( int i; for(i=2;i main() { int n; printf(\"Please input n:\"); scanf(\"%d\ printf(\"prim factor is :\\n\"); factor(n); /*factor()函数的调用*/ } (3)编写一程序,用一个sort函数实现对10个数的奇数位上的数据进行从大到小排.数组的输入在主函数中输入,排完序的结果在主函数中输出,在主函数中实现对sort函数进行调用. 如输入:1 2 3 4 5 6 7 8 9 10 则排完序的结果为:9 2 7 4 5 6 3 8 1 10 #include #include void sort(int a[], int n ) { int i,j,t; for(i=0;i } main() { int a[10],i; printf(\"Input array a:\"); for(i=0;i<10;i++) scanf(\"%d\ sort(a,10); printf(\"the sorted array:\"); for(i=0;i<10;i++) printf(\"%4d\ printf(\"\\n\"); } (4)编写一程序,将字符串str中的指定字符删除 #include for(i=0;str[i]!='\\0';i++) if(str[i]!=c) str[j++]=str[i]; str[j]='\\0'; } void main() { char str[100],c; printf(\"Please inpute a string:\"); gets(str); printf(\"Please inpute a character:\"); c=getchar(); delet(str,c); /*选择排序算法排序*/ /*sort()函数的调用*/ printf(\"\\nAfter delete c:\\n\"); puts(str); } 三、实验内容( 按要求设计以下程序,并调试分析运行结果 ,此部分完成在实验报告上) 1.(sy6-1.c)请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5 或9 整除的所有自然数的倒数之和。 例如,若主函数从键盘给n 输入20后,则输出为s=0.853333。 注意:n 的值要求不大于100。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include { } main() { int n; double s; printf(\"\\nInput n: \"); scanf(\"%d\ s=fun(n); printf(\"\\n\\ns=%f\\n\} 2.(sy6-2.c)请编写函数int fun(int x,int pp[]),它的功能是:求出能整除x 且不是偶数的各整数,并按从小到大的顺序放在 pp所指的数组中,这些除数的个数通过函数返回值返回. 例如,若x中的值为 30,则有 4个数符合要求,它们是 1,3,5,15. 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include main() { int x, aa[1000], n, i; printf(\"\\nPlease enter an integer number:\\n\"); scanf(\"%d\n=fun(x,aa); for(i=0;i 3.(sy6-3.c)请编写函数fun,起功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。合并的方式是:将a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 4.(sy6-4.c)请编写函数fun,该函数的功能是;将M 行N 列的二维数组中的数据,按列的顺序依次放到一维数组中。一维数组中的个数由函数返回值返回。 例如,若二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55 5.规定输入的字符串中只包含字母和*号。请编写函数 fun,它的功能是:使字符串最前面连续的*号不得多于 n 个;若多于 n 个,则删除多余的*号;若少于或等于 n 个,则什么也不做,字符串中间和尾部的*号不删除。例如,字符串中的内容为:*******A*BC*DEF*G****,若 n 的值为 4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若 n 的值为 8,则字符串中的内容仍为: *******A*BC*DEF*G****。n 的值在主函数中输入。在编写函数时,不得使用C 语言提供的字符串函数。 #include < stdio.h > #include < conio.h > void fun(char a[], int n) { } int main() { char s[81]; int n; printf(\"Enter a string:\\n\"); gets(s); printf(\"Enter n:\"); scanf(\"%d\ fun(s,n); printf(\"The string after deleted:\\n\"); puts(s); return 0; } 四、实验要求: “实验内容”中的任务要求在实验课上完成,若未完成请在下次上课前利用课外时间完成。 五、实验报告填写要求: 1、第一页用《攀枝花学院实验报告》纸,其后用《实验报告附页》纸。 2、第一页填写项目: 实验课程:计算机基础2-C语言 实验项目:[本次实验名称] 实验日期:[本次实验日期] 系: 班级: 姓名: 学号: 指导教师: 3、实验报告正文要求: 实验目的:(抄写本次实验目的) 实验仪器设备:PC机一套 实验步骤(内容): (要求完成以上第三部分内容,编程题要求抄写题目并写出程序源代码,并记录程序的运行结果) 实验结论:(分析通过本次实验掌握的知识或是还有什么遗留问题) 4、实验报告写好后将完成的实验报告纸订(或粘)在一起,于下一次上课前交给指导老师。 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务