C语言程序设计—函数—实验报告.docx
C语言程序设计 实验报告5--函数
C语言程序设计实验报告5--函数福建农林大学金山学院实验报告系(教研室):专业:年级:实验课程:姓名:学号:实验室号: _计算机号:实验时间:指导教师签字:成绩:实验5:函数一、实验目的和要求1.掌握定义函数的方法2.掌握函数实参与形参的对应关系,以及“值传递”的方式3.掌握函数递归调用的方法二、实验内容和原理1. 写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。
2. 编写一个函数,将一个字符串中的元音字母复制到另一个字符串中,然后输出。
3. 用递归调用的方法写一个求n! 的函数,在主函数中输入一个整数,输出该数的阶乘。
4. 函数编写,使其按给出的表达式计算分段函数。
|X|表示X的绝对值(利用 fabs( x )函数求浮点数x的绝对值)。
0.336x+0.015x+3.541 x< 12fun(x)= 567 1 ≤ x ≤ 31.55(|10-x|+ 0.3) x > 30 例如:fun( 0.3 ) = 3.643 fun( 1.5 ) = 567.000 fun( 5.15 )= 7.9825. 编写函数,求1+3+5+7+?+99。
6. 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。
三、实验环境1. 硬件:PC机;2. 软件:Windows操作系统、Visual C++ 6.0 。
四、算法描述及实验步骤1、用scanf函数输入,用for(i=2;i<=sqrt(n)&&flag==1;i++)判断该数是不是素数,当n到能整除i时,输出0结束,最后判断完输出相应的语句。
2、用char来输入一个空字符串,用gets获得另一个字符串,用 for语句,另i=0,j=0且s[i]从1开始,当s[i]==大小写aeiou中的任意一个,若是j++,用c[j]=s[i]复制字母,最后输出字符串。
3、先用scanf函数输入n,调用fac函数来求值,用for语句来选择条件,当n<0时输出错误,当n=0或1时,时递归终结,若fac f=fac(n-1)*n,求值最后返回结束。
C语言实验七 函数 实验报告
C语言实验七函数实验报告一、实验目的1、掌握函数的定义和调用方法。
2、理解函数参数的传递方式。
3、学会使用函数实现程序的模块化设计。
二、实验环境1、操作系统:Windows 102、开发工具:Visual Studio 2019三、实验内容本次实验主要涉及以下几个方面的内容:1、编写简单的函数实现特定功能,如计算两个数的和、差、积、商等。
2、理解函数参数的传递方式,包括值传递和引用传递,并通过实例进行验证。
3、利用函数实现程序的模块化设计,将复杂的问题分解为多个相对简单的函数,提高程序的可读性和可维护性。
四、实验步骤及结果(一)函数的定义和调用1、首先,定义了一个计算两个整数之和的函数`int add(int a, intb)`,函数内部通过返回`a + b`的值来实现求和功能。
```cint add(int a, int b) {return a + b;}```2、在`main`函数中调用该函数,并输出结果。
```cint main(){int num1 = 5, num2 = 3;int sum = add(num1, num2);printf("两数之和为:%d\n", sum);return 0;}```运行结果:两数之和为:8(二)函数参数的传递方式值传递1、定义一个函数`void swap_value(int a, int b)`,尝试在函数内部交换两个参数的值。
```cvoid swap_value(int a, int b) {int temp = a;a = b;b = temp;}```2、在`main`函数中调用该函数,并输出交换前后参数的值。
```cint main(){int num1 = 5, num2 = 3;printf("交换前:num1 =%d, num2 =%d\n", num1, num2);swap_value(num1, num2);printf("交换后:num1 =%d, num2 =%d\n", num1, num2);return 0;}```运行结果:交换前:num1 = 5, num2 = 3交换后:num1 = 5, num2 = 3可以看到,值传递方式下,函数内部对参数的修改不会影响到函数外部的实参。
C语言实验报告函数1
return s;
}_
题目6:#include<stdio.h>
#include <string.h>
void chang(char *);
int main()
{
char a[50];
printf("enter char:");
scanf("%s",a);
printf("no change char:");
printf("%s\n",a);
chang(a);
retura[])
{
char b[50],l=0;
int i;
l=strlen(a);
for(i=0;i<l;i++)
b[i]=a[l-i-1];
b[i]='\0';
printf("chage char:");
六、教师评语
签名:
日期:
成绩
附源程序清单:
题目2:
#include<stdio.h>
#include <math.h>
double funp(double c);
main()
{
double pi;
pi=sqrt(funp(0));
printf("pi=%f\n",pi);
return 0;
}
double funp(double x)
题目5:以下程序的功能是计算s= ,补足所缺语句。
#include “stdio.h”
long fun(int n)
{ int I;
C语言实验报告函数
实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。
2、讨论参数的传递的几种形式。
2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
厦门理工学院 C语言报告实验6_函数
} } 2. #include<stdio.h> #define PI 3.14 void main() { float perimeter(float a); float area(float a); float surface(float b,float h); float volume(float b,float h); float r,hh; printf("请输入半径 r 和高 h:"); scanf("%f%f",&r,&hh); printf(" 圆 周 长 : %-10.2f\n 圆 面 积 : %-10.2f\n 圆 柱 表 面 积 : %-10.2f\n 圆 柱 体 积:%-10.2f\n",perimeter(r),area(r),surface(r,hh),volume(r,hh)); } float perimeter(float a) { float p; p=2*a*PI; return p; } float area(float a) { float ar; ar=a*a*PI; return ar; } float surface(float b,float h) { float area(float a); float perimeter(float a); float s; s=area(b)*2+h*perimeter(b); return s; } float volume(float b,float h) { float area(float a); float v; v=h*area(b); return v; }
m=m*I;
int k,n; scanf("%d",&n); m=0; for(k=0;k<=n;k++) m=m+fun(k); printf("%ld\n",m); } 6. 7.
c语言函数实习报告
c语言函数实习报告c语言函数实习报告程序设计(C语言)实验报告实验目的(1)掌握函数的定义方法,调用方法,参数说明以及返回值;(2)掌握实参与形参的对应关系,一集参数之间的“值传递”的方式;(3)掌握函数嵌套调用及递归调用的设计方法;(4)在编写过程中加深理解函数调用的程序设计思想。
实验内容(1)编辑,编译,运行实验指导中的程序,并分析输出结果(2)编写一个函数primeNum(intx),功能是判别一个数是否是素数。
(3)编写函数mulNum(inta,intb),功能是判定a是否是b的整数倍实验1方法一:源程序:#include#includeintputeNum(intx) {intsum,a,b,c,d,e; sum=0;x=abs(x);a=x/10000;b=(x%10000)/1000; c=(x%1000)/100; d=(x%100)/10;e=(x%10)/1;sum=a+b+c+d+e;returnsum;}main(){inta,b;printf("Pleaseinputaninteger:");scanf("%d",&a);b=puteNum(a);printf("thesumofalldigitsis%d\n",b); }输入一个整数123运行结果如图输入整数98341验证运行结果如图方法二:#include#includeintputeNum(intx) {intsum,i,t;sum=0;x=abs(x);for(i=4;i>=0;i--) {t=pow(10,i);if(x>=t){sum=sum+x/t;x=x-(x/t)*t;}}returnsum;}main(){inta,b;printf("Pleaseinputaninteger:");scanf("%d",&a);b=puteNum(a);printf("Thesumofalldigitsis%d\n:",b);} 输入整数456运行结果如图输入整数98341验证运行结果如图实验2:源程序:#includevoidmove(chargeton,charputon){printf("%c->%c\n",geton,puton);}voidHanoi(intn,charone,chartwo,charthree){ if(n==1)move(one,three);else{Hanoi(n-1,one,three,two);move(one,three);Hanoi(n-1,two,one,three);}}voidmain(){intm;printf("Inputthenumberofdiskes:");scanf("%d",&m);printf("Thestepsofmoving%ddiskes:\n",m);Hanoi(m,'A','B','C' );}输入3运行结果如下:输入4运行结果如下:实验2:源程序:#includeinti,a,x;intprimeNum(intx){for(i=2;i {a=x%i;if(a==0)return0;}return1;}main(){printf("Pleaseinputx!\n");scanf("%d",&x);if(x printf("wronginput!\n"); else{a=primeNum(x);if(a==0)printf("%disnotaprimenumber!\n",x);else printf("%disaprimenumber!\n",x);}}输入数据0运行结果如下:输入数据1运行结果如下:输入数据2运行结果如下:输入数据3运行结果如下:输入数据9运行结果如下:输入数据13运行结果如下:输入数据59运行结果如下:输入数据121运行结果如下:实验3:源程序:#includeintmulNum(inta,intb){inti,c;c=a%b;if(c>0)i=0;elsei=1;returni;}main(){inta,b,s;printf("pleaseinputaandb:\n");scanf("%d%d",&a,&b);s=mulNum( a,b);if(s==1)printf("%disamultipleof%d\n",a,b);elseprintf("%disnotamultipleof%d\n",a,b);}输入数据1和5运行结果如下:输入数据5和5运行结果如下:输入数据6和2运行结果如下:输入数据6和4运行结果如下:输入数据20和4运行结果如下:输入数据37和9运行结果如下:出现的问题及解决方法:编译过程中常出现因错漏而使语句不规范的现象。
【优质文档】C语言实验报告《函数》-实用word文档 (1页)
本文部分内容来自网络,本司不为其真实性负责,如有异议请及时联系,本司将予以删除== 本文为word格式,简单修改即可使用,推荐下载! ==C语言实验报告《函数》学号:__________ 姓名:__________ 班级:__________ 日期:__________指导教师:__________ 成绩:__________实验四函数一、实验目的1、掌握函数定义、调用和声明的方法2、掌握实参和形参之间的传递方式3、函数的嵌套调用二、实验内容1、写一个函数,将两个字符串连接。
(习题8.6)2、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
(习题8.9)3、请将实验三中的实验内容三改正后,再改写成函数形式(排序部分)。
物理实验报告·化学实验报告·生物实验报告·实验报告格式·实验报告模板三、实验步骤与过程四、程序调试记录以下文字仅用于测试排版效果, 请使用时删除!“山不在高,有仙则灵。
”晋江的万石山,因有摩尼光佛而香客、游人接踵而至。
你若来过晋江草庵,或许会知道摩尼光佛就趺坐在这古寺中。
它一眼望去,小小的庵门亮起一个小世界,那两株为陪伴它而等候数百年的圆柏,于沧桑中潜生奇崛、苍劲的虬枝,照焕岁月的光芒。
春冬之时,等风来,等小雨飘洒,一股梅花的香迎了过来,拂过行人的肩,贴着它,泛出温润的笑意和光,让人也心生端庄与慈祥。
还有那古井、亭子、石径、山石、果树等交叉环绕,似乎只有赞叹才能应景了。
设若携一身惶灼而来,在这幽僻之处清凉,沉潜时光,再轻松而去,应是畅然。
而对于一个“身在福中不知福”的人,如我,大抵因可便宜观赏而更多感觉到了寡淡、不稀奇。
诚然,草庵仍是我时常光顾的所在。
清明节的那个周末,为了陪儿子完成一篇登山日记,我们又去了草庵。
依然先是在庵前的空地上停留、四处张望,继而复入寺中瞻仰摩尼光佛的尊座,读读石柱上的对联,做若有引动之状。
函数(C语言实验报告)
仲恺农业工程学院实验报告纸信息学院(院、系)专业班C语言程序设计课实验目的:(1)掌握定义函数的方法。
(2)掌握函数实参与形参的对应关系,以及“值传递”的方式。
(3)掌握函数的嵌套调用和递归调用。
(4)掌握变量作用域和存储方式的概念和方法。
(5)学习对多文件的程序进行编译和运行。
实验内容与总结:编程练习1、写出求第n个Fibonacci数的递归函数,主函数输入n,输出第n个Fibonacci数。
Fibonacci数列为1, 1, 2, 3, 5, 8, 13,…程序如下:#include <stdio.h>void main(){int fibonacci(int n);int n,f;printf("请输入n= ");scanf("%d",&n);f=fibonacci(n);printf("第n个Fibonacci数是:%d\n",f);}int fibonacci(int n){int f;if(n<=0)printf("出错了,请输入大于0的整数!");elseif(n==1||n==2)f=1;elsef=fibonacci(n-1)+fibonacci(n-2);return (f);}(1)程序编制要点:①定义函数的方法;②递归调用。
(2)该题目涉及的知识点和难点:①函数的定义与使用;②函数的嵌套调用和递归调用;③if语句的使用;④return语句的使用。
2、成绩排名次某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。
考试后要求:1.输入学号、姓名、各科成绩;2.计算每个学生的总分和平均分,并输出学号,姓名,各科成绩,总分,平均分;程序如下:#include <stdio.h>#include<string.h>#define N 2#define M 3#define L 13void main(){extern void input(long num[],char name[][L],float score[][M]);extern void getsumaver(float score[][M], float sum[],float aver[]);int i,j;long num[N];char name[N][L];float score[N][M],sum[N],aver[N];input(num,name,score);getsumaver(score,sum,aver);printf("\n 学号姓名数学英语物理总分平均分\n");for(i=0;i<N;i++){printf("%5d",num[i]); /*输出一个学生的学号*/printf(" %5s",name[i]); /*输出一个学生的姓名*/for(j=0;j<M;j++)printf(" %5.2f",score[i][j]); /*输出一个学生的各门课的成绩*/ printf(" %5.2f",sum[i]); /*输出一个学生的总分*/printf(" %5.2f\n",aver[i]); /*输出一个学生的平均成绩*/ }}void input(long num[],char name[][L],float score[][M]) /*输入学生学号、姓名、成绩*/{int i,j;for(i=0;i<N;i++){printf("输入第%d位学生的学号:\n",i+1);scanf("%d",&num[i]);printf("输入姓名:\n");scanf("%s",&name[i]);printf("输入数学、英语和物理成绩:\n");for(j=0;j<M;j++)scanf("%f",&score[i][j]);}}void getsumaver(float score[][M], float sum[],float aver[]) /*计算总分和平均分*/ {int i,j;float s;for(i=0;i<N;i++){s=0;for(j=0;j<M;j++)s+=score[i][j];sum[i]=s;aver[i]=s/M;}}(1)程序编制要点:①函数实参与形参的对应关系,以及“值传递”的方式;;②对多文件的程序进行编译。
函数c语言实验报告doc
函数c语言实验报告篇一:C语言实验报告《函数》学号:__________ 姓名:__________ 班级:__________ 日期:__________ 指导教师:__________ 成绩:__________ 实验四函数一、实验目的 1、掌握函数定义、调用和声明的方法 2、掌握实参和形参之间的传递方式 3、函数的嵌套调用二、实验内容 1、写一个函数,将两个字符串连接。
(习题8.6) 2、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
(习题8.9) 3、请将实验三中的实验内容三改正后,再改写成函数形式(排序部分)。
篇二:C语言实验报告函数1《高级语言程序设计》实验报告实验序号:6 实验项目名称:函数篇三:C语言程序设计实验报告(函数)C语言程序设(本文来自:小草范文网:函数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。
C语言程序设计—函数—实验报告.docx
33
scanf(H :” r &num);
34
temper)roveGo 1 dbach (num);
35
if (temp— )//当输入小于 6 或者不是偶贾 彳
36
37
P丄
38
return ;
39
40
CMXMCCMC
length; KW lino; 40
Ln;29 3;初 Sd;0|0
Oc$\Wtf)dcrw> ANMasUn 8 介 ®
题目三 :编写一个求阶乘的函数,接着调用该函数实现组合的求解
要求: ① 提示用户输入 n 和 m 的数值;
: ② 输出的 C 结果
#include<stdio.h> /*======二阶乘函数=======*/ int fac(int n) {
int f; if(n<0)
printf(nn<O,data error!11); else if(n==0lln==l)
实验报告函数的用法(3篇)
第1篇一、实验目的1. 理解函数的概念及作用。
2. 掌握函数的声明、定义和调用方法。
3. 学习函数的参数传递和返回值。
4. 熟悉函数的嵌套调用和递归调用。
二、实验原理函数是程序设计中的一种基本概念,它将一系列具有特定功能的代码封装在一起,以便重复使用。
函数的主要作用是将复杂的程序分解为多个模块,提高代码的可读性和可维护性。
在C语言中,函数分为两大类:标准函数和自定义函数。
标准函数是C语言库函数,如printf()、scanf()等;自定义函数是由程序员根据实际需求编写的函数。
函数的基本结构如下:```c函数返回类型函数名(参数列表) {// 函数体}```三、实验内容1. 函数的声明函数声明用于告诉编译器函数的存在,包括函数名、返回类型和参数列表。
函数声明格式如下:```c函数返回类型函数名(参数类型参数名);```2. 函数的定义函数定义是函数声明的具体实现,包括函数名、返回类型、参数列表和函数体。
函数体由大括号{}包围,包含一系列执行语句。
```c函数返回类型函数名(参数类型参数名) {// 函数体}```3. 函数的调用函数调用是指程序中调用函数的过程。
调用函数时,需要按照函数的参数列表提供相应的实参。
```c函数名(实参1, 实参2, ..., 实参n);```4. 函数的参数传递函数的参数传递主要有两种方式:值传递和地址传递。
(1)值传递:将实参的值复制给形参,函数内部对形参的修改不会影响实参。
(2)地址传递:将实参的地址传递给形参,函数内部通过修改形参的地址来修改实参的值。
5. 函数的返回值函数的返回值是指函数执行完毕后返回给调用者的值。
函数返回值类型必须与函数声明时指定的返回类型一致。
6. 函数的嵌套调用函数嵌套调用是指在一个函数内部调用另一个函数。
嵌套调用的函数可以递归调用自身。
7. 函数的递归调用递归调用是指函数在执行过程中直接或间接地调用自身。
递归调用分为直接递归和间接递归两种。
函数程序设计-C语言程序实验报告
函数程序设计-C语言程序实验报告安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019\11\21 指导教师实验名称函数程序设计一、实验目的1.掌握定义函数的方法。
2.掌握函数实参与形参的对应关系,体会“值传递”的方式。
3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法。
5.理解数组作为函数参数的传递方式。
6.理解宏的概念,掌握宏的定义。
7.了解文件包含的概念,掌握其用法。
二、实验内容1.完成程序,求解n!具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。
2.计算s=1的k次方+2的k次方+3的k次方+……+N的k次方。
具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。
3.写出下面3个程序的输出结果,说明每个程序中的各个x有何不同。
4.阅读程序,理解程序的功能,写出预期结果并上机验证。
5.编程并上机调试运行。
(1)编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。
(2)输入一个整数,将它逆序输出。
要求定义并调用函数rverse(number),它的功能是返回number的逆序数。
如reverse(12345)的返回值是54321。
(3)用递归法求n阶勒让德多项式的值,递归公式为P(x)=1,n=0;P(x)=x,n=1;P(x)= [(2n-1)*x-Pn-1(x)-(n-1)Pn-2(x)]/n, n>1(4)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出上述结果。
(5)带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。
输出交换后的两个值。
(6)编写函数,实现两个字符串的连接,在主函数中输入两个字符串并输出连接后的结果(不要使用库函数中的strcat函数)。
(7)请编写函数fun,它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数,在主函数中输出这些整数,并给出统计的总数。
C程序设计_函数_实验报告
贵州大学《C程序设计实验》实验报告实验名称:函数专业电子信息科学与技术班级姓名学号教师2010年}else{printf("%d isn't a prime number\n",n);}}bool prime_number(int x){bool flag=true;for(int i=2;i<x/2&&(flag==true);i++){if(x%i==0)flag=0;}return flag;}运行情况:分析:程序开始:bool prime_number(int x);声明一个函数,函数返回值为bool型,函数名为prime_number,函数带一个int型参数。
scanf("%d",&n);从屏幕输入数n。
if(prime_number(n)) 调用函数,传入参数n。
bool prime_number(int x){bool flag=true;for(int i=2;i<x/2&&(flag==true);i++){if(x%i==0)flag= false;}return flag;}把两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。
(3). 用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”。
n的位#include <stdio.h>void main(){int n;void covert( int n);printf("input n\n");scanf("%ld",&n);if(n<0){putchar('-');n=-n;}covert(n);}void covert(int n){inti;if((i=n/10)!=0)covert(i);printf("%c",n%10+'0');}数不确定,可以是任意的整数。
C语言函数实验报告模版
第六次实验函数一、实验要求1.掌握函数定义和调用的方法2.掌握函数嵌套调用和递归调用的方法3.理解实参与形参的对应关系以及“值传递”调用函数的方法理解变量作用域和存在期的概念, 掌握全局变量和局部变量、动态变量和静态变量的定义、说明和使用方法二、实验内容(要求粘贴正确程序及测试结果)1.完善所给的程序, 通过定义一个max3函数实现求三个数中的最大值的功能。
#include <stdio.h>int max3(int a, int b,int c); /*函数声明*/void main (){int a, b, c;int max;printf("Please input three numbers:");scanf("%d%d%d", &a, &b, &c);max = max3(a,b,c); /*调用max3函数, 其中a,b,c作为其参数, max用于保存max3函数的返回值*/printf("the maximum number of %d, %d, %d is %d\n", a, b, c, max);}/*可在此编写max3函数, 实现求三个数中的最大值的功能*/max3(int a ,int b,int c){int m;m=a>b?a:b;m=m>c?m:c;return m;}2.在循环结构程序设计实验的第6题求完数中, 要求编写程序判断1~1000之内的哪些数是完数。
现要求改写该程序, 新的程序中需要定义一个int wanshu(int num)函数, 该函数功能是判断函数参数num是否为完数, 如果是则函数返回值为1, 否则为0。
完成wanshu函数定义后, 在新的程序中调用wanshu函数, 使得新的改写的程序能判断1~1000之内的哪些数是完数。
#include <stdio.h>int wanshu(int num); /*函数声明*/void main (){int i;for(i=1;i<=1000;i++){if(wanshu(i)) /*调用wanshu函数, 其中i作为其参数, 若调用后返回值为1则说明是完数, 否则不是*/printf("%d是完数\n", i);}}/*可在此编写wanshu函数, 实现一个数n是否是完数*/int wanshu(int num){int s = 0,i;for(i=1;i<num;i++){if( num%i == 0) s += i;}if(s == num)return 1;elsereturn 0;}3.找出1~1000之内的所有素数并输出。
C语言实验报告 函数
实验名:函数的定义及调用一、实验目的1、掌握C语言函数定义及调用的规则。
2、理解参数传递的过程。
二、实验内容(一))题目11、题目内容描述1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。
main(){int,y;printf(“%d\n”,sum(x+y));int sum(a,b){int a,b;return(a+b);}}2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
三、分析讨论1、针对以上实验内容写出相应的参数传递过程并分析结果。
2、讨论参数的传递的几种形式。
2、输入和输出信息描述及数据类型确定;、输入数据(1)序号输入数据描述数据类型1 x,y int2 a,b int(2)输出数据序号输出数据描述数据类型1 x+y int3、程序源代码(填写程序调试正确后的代码)#include <stdio.h>int main(){int sum(int a,int b); //对被调用函数sum 的声明int x,y,z;scanf("%d,%d",&x,&y);z=sum(x,y); //调用sum 函数,将其值赋给zprintf("%d\n",z); //输出函数结果zreturn 0;//返回值为0}int sum(int a,int b) //定义sum函数{return(a+b); //将a+b的值作为返回值返回到调用sum的位置}4、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1 In function 'main':|int,y;是改为int x,y;2 error: stray '\241' in program|error: expected expressionbefore '%' token|error: stray '\' in program|printf(“%d\n”,sum(x+y));是将整段改为int sum(int a , int b);int x,y,z;z=sum(x,y);printf("%d\n",z);3 error: 'a' redeclared asdifferent kind of symbol|error: 'b' redeclared asdifferent kind of symbol|int a,b;是去掉整句话4 warning: 'x' is useduninitialized in this function[-Wuninitialized]|是加上scanf("%d,%d",&x,&y);5 error: static declaration of'sum' follows non-staticdeclaration|是将int及后面的语句块都移到main外面5、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1 测试用例4,5 9 是可运算范围内2 测试用例55555,7933 63488 是可运算范围内3 测试用例-89,-79 -168 是可运算范围内(2)、相关问题回答2、编写并调试一个求n!(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。
《C程序设计》之函数实验报告
实验项目:函数实验内容:实验1:把约瑟夫生死者游戏改写为函数,要求:(1)参与游戏的人数可变,由主程序决定,不再固定为30人;(2)从哪个人开始计数可变,由主程序决定,不再固定从第1个人开始计数(3)计数范围可变,不再固定为计到9(4)船上留下多少人可变,由主程序决定,不再固定为一半实验2:把冒泡排序算法改写为函数,要求待排序的数和数的个数由主程序决定。
实验3:习题8.10,编写一个函数,输入一个字符串,将此字符串中最长的单词输出。
程序实现:主要是利用for、if语句和数组的定义、赋值、输入等。
程序:实验1:把约瑟夫生死者游戏改写为函数:#include<stdio.h>void main(){void people(int a[],int p,int b,int r,int l); /*函数的声明*/int B[40],g=40,c,d,e; /*B[40]为主函数控制参与的人数*/printf("参与游戏的人数:%d\n",g); /*显示参与的人数*/printf("控制从第几个人开始计数:");scanf("%d",&c);printf("输入计数范围:");scanf("%d",&d); /*控制计数范围*/printf("要扔下海的人数:");scanf("%d",&e); /*控制扔下海的人数*/printf("被扔下海的位置是:");people(B,g,c,d,e);printf("\n");}void people(int a[],int p,int b,int r,int l) /*调用函数的定义*/{int i,j,sum=0;b=b-2;for(i=0;i<p;i++)a[i]=1;for(j=p;j>p-l;j--){do{b++;b=b%p;sum=a[b]+sum;}while(sum!=r);a[b]=0;sum=0;printf("%5d",b+1);}}实验2:把冒泡排序算法改写为函数,要求待排序的数和数的个数由主程序决定:void paixu(int a[],int n) /*调用的函数的定义*/ {int i,j,t;for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}#include<stdio.h> /*主函数*/void main(){int a[10],g=10,i; /*控制待排序的数的个数a[18]、g=18是对个数的控制*/printf("待排序的数的个数:%d\n",g); /*显示排序的个数*/printf("输入要排序的数:\n");for(i=0;i<g;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}paixu(a,g);printf("此数据从小到大的排序为:");for(i=0;i<g;i++)printf("%5d",a[i]);printf("\n");}实验3:习题8.10,编写一个函数,输入一个字符串,将此字符串中最长的单词输出:#include<stdio.h>#include<string.h>void main(){int al(char);int longest(char[]);int i;char line[100];printf("输入一个字符串:\n");gets(line);printf("最长的单词是:");for(i=longest(line);al(line[i]);i++)printf("%c",line[i]);printf("\n");}int al(char c){if((c>='a'&&c<='z')||(c>='A'&&c<='z'))return(1);elsereturn(0);}int longest(char str[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i<=strlen(str);i++)if(al(str[i]))if(flag){point=i;flag=0;}elselen++;else{flag=1;if(len>=length){length=len;place=point;len=0;}}return(place);}运行结果:实验1:瑟夫生死者游戏改写为函数:情景一:情景二:实验2:情景一:情景二:实验3:实验总结:基本上掌握定义函数法、函数实参和形参的对应关系;对全局变量和局部变量有了一些实践和理解;会了一些简单的程序中函数调用。
C语言程序设计实验报告——函数
一、实验项目名称函数二、实验目的1.掌握C函数的定义方法、函数的调用方法、参数说明以及返回值。
掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法;2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;3.在编程过程中加深理解函数调用的程序设计思想。
三、实验内容1.多模块的程序设计与调试的方法;2.函数的定义和调用的方法;3.用递归方法进行程序设计。
具体内容:1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。
如果num 是素数,返回该数;否则返回0值。
要求:(1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。
输出格式为:num is prime或num is not prime。
(2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。
2.编写函数computNum( int num),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。
要求:num由主函数输入,调用该函数后,在主函数内输出结果。
3.编写函数,mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。
如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。
要求:(1)在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明。
例如:在主函数中输入:10,5 ,则输出:10 is multiple of 5.(2)分别输入下面几组数据进行函数的正确性测试:1与5、5与5、6与2、6与4、20与4、37与9等,并对测试信息加以说明。
4.编写一个计算组合数的函数combinNum(int m,int n)。
计算结果由函数返回。
计算组合数的公式是:c(m,n)=m!/(n!*(m-n)!)要求:(1)从主函数输入m和n的值。
《C语言程序设计》函数测试实验报告
returnj;}
voidmain()
{inti,n;
floats=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s+=1.0/fact(i);}
printf("%.4f",s);
}
2、输入2个正整数a和n,求a+aa+aaa+aa.a(n个a)之和。要求定义并调用函数fun(a,n),它的功能是返回aa….a(n个a)。
/* Note:Your choice is C IDE */
#include"stdio.h"
voiddectiobin(intn)
{inti;
if(n>0)
{dectiobin(n/2);
i=n%2;
printf("%d",i);}
}
voidmain()
{intn;
scanf("%d",&n);
#include"stdio.h"
intcountdigit(intnumber,intdigit)
{inti,j=0;
if(number<0)
number=-number;
while(number!=0)
{if(number%10==digit)
j++;
number=number/10;
}
returnj;}
dectiobin(n);
}
四、测试数据及测试结果
五、实验结果分析
实验中用到了求余的方法,将求余与除法合用能很好的解决实验问题。
实验报告五:函数
7.下列程序的功能为:求整数n的阶乘。纠正程序中存在的错误,以实现其功能。
8.计算s=(1!)+(1!+2!)+…+(1!+…+n!)。n由用户输入,小于10。(设计:函数h1()计算阶乘;函数h2()计算每个数据项的累加运算。用函数的嵌套来做)
9.编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,否返回0。编写main函数,输入一个数num,调用fun(num)函数,并输出函数的返回值。
三、实验内容与步骤
1.完成实验报告28-31面的程序调试,将运行结果记录在下面。
2.以下程序完成由键盘输入两个整数,求其最大值。请改正以下程序的错误。并上机调试。
键盘输入:
45,89<CR>(<CR>表示回车)
输出结果:89
3.阅读并分析下面的程序,并按要求改写程序。
1)ห้องสมุดไป่ตู้
问题:(1)该程序的主要功能是什么?
2)自定义函数fun1( )实现该程序的功能,要求在主函数内实现数据的输入和输出,部分代码已经给出,请补充完整。
4.上机调试如下程序,记录系统给出的出错信息,指出出错原因并改正。
5.分析题
(1)写出程序输出结果;
(2)分析自动变量的作用域及生存期;
(3)分析静态变量的作用域及生存期。
6.分析题
(1)写出程序输出结果;
道客巴巴不保证为向用户提供便利而设置的外部链接的准确性和完整性同时对于该等外部链接指向的不由道客巴巴实际控制的任何网页上的内容道客巴巴也不承担任何责任
《C语言程序设计》实验报告
实验项目五:模块化程序设计(函数)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目三 :编写一个求阶乘的函数,接着调用该函数实现组合的求解
要求: ① 提示用户输入 n 和 m 的数值;
: ② 输出的 C 结果
#include<stdio.h> /*======二阶乘函数=======*/ int fac(int n) {
int f; if(n<0)
printf(nn<O,data error!11); else if(n==0lln==l)
/*--------- 判断威数丄素数、的曲弍 ---------------- * /
l.nt main ()
prmr:(
输入一个检金来丁…
for (mt num® x tcmp;num> ;)
歪敷(繁数〉・ 当绘入鲨
ቤተ መጻሕፍቲ ባይዱ
:( scant(M- i".,num);
nter a numh );
if(nui<=) b“ak;
{ if(n%i==0) return 0; else continue;
OQSXWindom AmiMUTF 8 IN、
*include<stdio.h> •lncludecmath・h>
—寸!|斷质致工素数 L 的函数「 judgePrine(int n) for (irr i= ; K=sqrt (n);i”)〃一个数 ntfljg 基合数■ 3B 么它的 fl?衣的 B9 孑不超过 n 的并"方
if(n%i==0) return 0;
else continue; } return 1; } /*====判断质数(素数)的函数=======*/ int main() { printH/'Xn 提示:输入一个数字来判断是否是质数(素数),当输入数值 v=l 时,停止输入和判断。\n\ii"); for(int num=24emp;num>l;) {
if (nti—) return ; continue;
•include<stdio.h>
} return 1 ;//tr ue-> 1 ,false->0 } /†=======验证哥德巴赫猜想的函数(调用 judgePrime)=======*/ int proveGoldbach(int m) { if(m<6llm%2!=0)
printf「\n 提示:输入一个偶数来验证哥德巴赫猜想,当输入数值<6 时,停止输入和判断。\ii\nM); for(int num=6;num>=6;)
{ int temp; printf'C'Please enter a number:‡); scanf(,,%d,,,&num); temp=proveGoldbach(num); if(temp==())//当输入小于 6 或者不是偶数时结束 return 0; printf(*'================================================================================n); }
†include<math•h> /*——判翫质亦 4 奏数〉的函數=—=•/
r)t judgePrime ( nt n)
( for (int
{
;i<»sqrt (n) ;i++) 〃一个 Itnto 鼻 jfc 合那么它的质有的国子不趟过 n 的开方
if) return ; else continue;
19 void main()
20
21
xnt mfn;
22
int res;
23
严\nlft 云,这事求塑合求 fO 公或的屬 ltt・绘入 BTbONft
24 loopsprintf (NPleaae enter two nund>er:');
25 26 27 28
dcanf(M *iid"94m,€n); if (m>n) 〃判虹上枉丿二小林至型 SiA
4 止愉入 fOjMVi
temp®judgeprime(num); if (temp=) prin:ot AMBDfiX
else prlntf (M --丨 < • r- : •
!\nH.num); -i;!x - '*rnum);
28
29
return ;
30
CwucccMt
③ 当输入数据<6 或者不是偶数时,停止输入和验证。
}
return ;//t •ue 一>1, false—
)
IJ
验证哥德巴赫病想的函数(调用 judgePrime)
:nt proveGoldbach( nt m)
if(m< ||m% !-)
return ;//判斷是否大于等于 6 或者不是偶数
for (int 严;j<(m/ ) ; jx)
(
if (judgeprime (j)= & & judge Prime (m ・j)= )//判断用数足 {
实验报告
专业 软 件工程 班级 X 班 学号 XXXXXXXXXXX— 姓名 _________________________________
实验日期:201X 年 X 月 X 日
报告退发(订正、重做) _______________________
课程 ________ C 程序设计实验 _________ 实验名称 ____________ 函 ___________数 ___________
int tempMax,tempMin; if(arry[0][0]>arry[()][l])// 赋初始值
{ tempMax=arry[()][0]; tempMin=arry[O][l];
}
else {
tempMax=arry[O][l]; tempMin=arry[0][()];
}
for(int i=0;i<ROW;i++)//判断大小,分别赋值
for(int j=0;j<COLUMN;j++)
if(arryliJ|jJ>tempMax) {
tempMax=arry[i][j];
1
if(arry[i][j]<tempMin) {
tempMin=arry[i][j]; }
1
} printf(n\tMax is %d\n\tMin is %d\n,\tempMax5tempMin); } //主函数 int main() { int matlROVVUCOLUMNJ; printf("Please enter a %d X %d matrix:\nn,R()VV,COLUMN); for(int i=0;i<ROVV;i++)//输入矩阵
33
scanf(H :” r &num);
34
temper)roveGo 1 dbach (num);
35
if (temp— )//当输入小于 6 或者不是偶贾 彳
36
37
P丄
38
return ;
39
40
CMXMCCMC
length; KW lino; 40
Ln;29 3;初 Sd;0|0
Oc$\Wtf)dcrw> ANMasUn 8 介 ®
题目四 编写一个求矩阵中最大元素以及最小元素的函数 selectMaxAndMin(),在 main 函数中调用 该函数 要求: 最大值和最小值的输出操作,可以放在 selec(MaxAnd\1in()函数中
# include<stdio.h> #define ROW 4〃矩阵的行 #define COLUMN 4〃矩阵的列 /*=======4 矩阵中选择最大最小数的函数=======*/ void selectMaxAndMin(int arry[ROVV]fCOLUMNl)//ffl 指针更方便 {
—、实验目的
① 熟练掌握 C 程序中函数的定义; ② 掌握函数的调用,函数参数的传递; ③ 熟练掌握函数的嵌套调用和递归调用;
二、 实验环境(描述实验的软件、硬件环境)
① 软件环境:windows xp/win7 等操作系统,Microsoft Visual C++ 6.0 编译器; ② 换件环境:PC 机一台
#include<stdio.h>
# include<math.h> /*=======判断质数(素数)的函数=======*/
length:907 lirmilO
in:6 Col;35 $c<:0|0
int judgePrime(int n)
{ for(int i=2;iv=sqi*t(n);i++)〃一个数 n 如果是合数,那么它的所有的因子不超过 n 的开方
三、 实验内容、步骤和结果分析
题目一 :编写一个用来判断质数(素数)的函数。
要求:
(1) 在 main 函数中调用该函数对输入的数值进行判断,并输出判断结果; (2) 当输入数值<7 时,停止输入和判断。 # include<stdio.h> #include<math.h> /*=======判断质数(素数)的函数=======*/ int judgePrime(int n) { for(int i=2;i<=sqrt(n);i 卄)〃一个数 n 如果是合数,那么它的所有的因子不超过 n 的开方 {
printf (M\t d : > A\t
i
}
int main()