C语言程序设计实验报告(函数)

合集下载

C语言实验报告

C语言实验报告

C语言程序设计(B)(2010-2011-2)实验报告教学班级:学号:姓名:课程教师:王华金实验辅导教师:王华金P123--五、1、编写函数,找出5*5数组对角线上元素的最小值,并在主函数中调用它。

要求元素的值通过键盘输入。

实验前的源程序:#include<stdio.h>int func(int p[5][5]){int i,j,min;min=p[0][0];for(i=0;i<5;i++)for(j=0;j<5;j++)if(i==j)if(p[i][j]<min) min=p[i][j];return min;}void main(){int i,j,m,a[5][5];printf("请输入a[5][5]:\n");for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);printf("a[5][5]:\n");for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%4d",a[i][j]);printf("\n");}m=func(a);printf("主对角线上元素的最小值为:%d\n",m);}实验错误报告:[Error] C:\Users\陶鑫\Documents\C-Free\Temp\未命名4.cpp:13: error: `main' must return `int'[Warning] C:\Users\陶鑫\Documents\C-Free\Temp\未命名 4.cpp:27:2: warning: no newline at end of file构建中止未命名4: 1 个错误, 1 个警告实验后的源程序:#include<stdio.h>int func(int p[5][5]){int i,j,min;min=p[0][0];for(i=0;i<5;i++)for(j=0;j<5;j++)if(i==j)if(p[i][j]<min) min=p[i][j];return min;}main(){int i,j,m,a[5][5];printf("请输入a[5][5]:\n");for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);printf("a[5][5]:\n");for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%4d",a[i][j]);printf("\n");}m=func(a);printf("主对角线上元素的最小值为:%d\n",m);}P123--五、3、编写从整形数组中检索给定数值的函数,若找到则输出该数值在数组中的位置。

c语言用函数实现模块化程序设计实验报告

c语言用函数实现模块化程序设计实验报告

c语言用函数实现模块化程序设计实验报告
1设计思想
1)、设定一个一维数组,可先按员工序号设定每位员工的工资
2)、利用While语句和Print语句完成用户菜单的设计
功能为:第1项设为员工编号和工资数据
第2项设为修改员工工资数据
第3项设为查询员工工资数据
第4项设为结束系统
3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employ number”
4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中
5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍
6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资
以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。

像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(4)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问
题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。

一般不采取这样的做法,力求“简单、明了、清晰”。

《C语言与程序设计》实验06---函数

《C语言与程序设计》实验06---函数

实验六函数一、实验目的1. 熟练掌握函数的定义、函数的类型和返回值。

2. 熟练掌握形式参数与实际参数、参数值的传递。

3. 掌握函数的嵌套调用与递归调用。

4.学会使用指向函数的指针变量。

5.了解指向指针的指针的概念及带参数的main函数。

6. 掌握局部变量和全局变量。

7. 掌握变量的存储类型。

8. 了解内部函数和外部函数。

二、实验学时:8课时三、预习知识1.标准库函数标准库函数是C系统提供的,这些库函数定义了一些基本的、常用的功能,用户可以使用这些库函数,但是在使用库函数之前需要用预编译命令# include将该库函数所在的头文件包含进来。

2.自定义函数定义函数一般有两种形式形式1:存储类型类型符函数名(类型符形参1,类型符形参2 ,… ) { 说明语句执行语句}形式2:存储类型类型符函数名(形参1,形参2 ,……)形参类型说明{ 说明语句执行语句}说明:①形参表中即使没有参数,函数名后的一对圆括号也不能省略。

②函数名前的类型符是用来说明函数返回值的数据类型(也作为函数的数据类型) 。

当函数值为整型时,类型符可以省略。

③当函数只完成某一特定操作不需要返回值时,可用类型标识符 void 说明,将函数定义成空类型。

④C 规定:不允许在一个函数内部再定义另外一个函数,即函数不允许嵌套定义。

⑤函数的存储类型:函数的存储类型有 extern 和 static 两种。

extern 型的函数除了可以被本程序中其它函数调用外,还可以被其它文件中的函数调用,这种函数称为外部函数,如果定义函数时省略 extern ,则隐含为外部函数。

static 型的函数只能被本源程序文件中的函数调用,称为内部函数(静态函数)。

3.函数的参数(1)在定义函数时函数名后面括号中的变量称为形参(形式参数),如果有两个以上形参,形参之间以逗号分隔。

形参是函数的内部变量,只在函数内部才有意义。

在未出现函数调用时,形参不占内存。

对每个形参必须指明其名字和数据类型。

C语言实验报告函数

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语言程序设计实习报告

C语言程序设计实习报告

C语言程序设计实习报告一、实习目的1. 巩固和加深对C语言程序设计的理解。

2. 掌握C语言编程的基本技巧和方法。

3. 提高分析问题、解决问题的能力。

4. 学会将理论知识应用于实际编程中。

二、实习内容XXX语言基础语法练习变量、数据类型、运算符、表达式等基础语法练习。

控制结构(顺序、分支、循环)的实现。

函数的定义和调用方式练习。

2. 模块化程序设计将一个大的程序分解成多个模块,每个模块完成特定的功能。

通过模块间的调用和传递数据来实现整个程序的功能。

3. 文件操作与文件读写文件的打开、关闭、读写操作练习。

文件格式的转换和数据统计处理。

4. 预处理指令与宏定义使用预处理指令进行条件编译和宏定义替换。

练习使用常见的预处理指令如include、define、ifdef等。

5. 结构体、链表与指针结构体的定义和使用。

链表的创建、插入、删除、遍历等操作。

指针的概念和指针运算。

深入理解指针与数组、结构体等数据结构的关系。

6. 位运算与嵌入式系统编程学习位运算符的使用和位段操作的实现。

嵌入式系统的基本概念和编程方法。

7. 综合项目实践参与或独立完成一个综合性C语言程序设计项目。

项目可以包括基于命令行参数的程序设计、基于文件操作的程序设计、基于网络编程的程序设计等。

三、实习过程1. 理论学习:通过教材、网络资源等途径学习C语言的基础知识和编程技巧。

2. 上机实践:在计算机上编写和调试C语言程序,不断巩固所学知识。

3. 问题解决:遇到问题时,通过查阅资料、请教老师或同学等方式解决问题。

4. 团队合作:在小组项目中与他人协作,共同完成任务。

四、实习收获1. 知识技能方面:深入理解了C语言的基本概念和编程技巧,掌握了模块化程序设计和文件操作等常用算法。

2. 解决问题能力方面:学会了如何分析问题、寻找解决方案并通过实践验证解决方案的正确性。

3. 团队协作能力方面:学会了与他人合作,共同完成任务,提高了团队协作能力。

4. 职业素养方面:培养了耐心、细致的工作态度和勇于尝试、敢于创新的探索精神。

C语言程序设计实验报告3_学习总结_总结汇报_实用文档

C语言程序设计实验报告3_学习总结_总结汇报_实用文档

实验3 函数与程序结构实验3.1 实验目的(1)熟悉和掌握函数的定义、声明;函数调用与参数传递方法;以及函数返回值类型的定义和返回值使用。

(2)熟悉和掌握不同存储类型变量的使用。

(3)熟悉多文件编译技术。

3.2 实验内容及要求3.2.1源程序改错下面是计算s=1!+2!+3!+…+n!的源程序,在这个源程序中存在若干语法和逻辑错误。

要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。

1 #include<stdio.h>2 int main(void)3 {4 int k;5 for(k=1;k<6;k++)6 printf("k=%d\tthe sum is %ld\n",k,sum_fac(k));7 }8 return 0;9 long sum_fac(int n)10 {11 long s=0;12 inti;13 long fac;14 for(i=1;i<=n;i++)15 fac*=i;16 s+=fac;17 return s;18}解答:(1)错误修改1)未声明函数sum_fac(int n)的情况下,就调用函数。

2)第8行中,return 0;语句应放在主函数中。

3)第15,16行,应该被括号括起来,否则程序意义不是计算阶乘的和。

(2)修改错误后的程序为#include<stdio.h>long sum_fac(int n);int main(void){int k;long sum_fac(int n);for(k=1;k<6;k++)printf("k=%d\tthe sum is %ld\n",k,sum_fac(k));return 0;}long sum_fac(int n){long s=0;inti;long fac=1;for(i=1;i<=n;i++){fac*=i;s+=fac;}return s;}(3)运行结果图1 3.2.1程序运行截图3.2.2源程序修改替换(1)修改第1题中sum_fac函数,使其计算量最小。

C语言程序设计实验报告

C语言程序设计实验报告

实验二数据类型、运算符和表达式实验时间:2机时一、实验目的1. 掌握C语言数据类型,熟悉各种类型变量的定义和含义。

2. 掌握C语言标准输入、输出函数的使用方法3. 进一步熟悉C程序的上机过程,积累调试经验。

二、实验意义通过上机实验,巩固本章所学基本知识-C语言的数据类型、变量的定义和使用、结合数据类型更深入地理解标准输入函数scanf()和标准输出函数printf ()的格式控制符的意义和使用。

通过简单程序设计的练习加深对运算符优先级和结合方向的理解,并正确求解表达式的值,这些必要的基础知识是后面深入学习C语言所必须的知识储备。

三、实验重点1. 数据类型、变量的定义和使用;2. 运算符、表达式的求解3. 简单顺序结构的C程序设计四、实验难点数据类型的转换、自增自减运算五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。

六、实验内容(一).完善程序题1.用scanf函数输入数据,使得x=1.23,y=67.1234。

#include <math.h>#include <stdio.h>int main(){double x,y,z;scanf ("%lf%lf",&x,&y);z=2*x+y/sin(3.1415/4);printf("z=%6.2f",z);return 0;}输入1.23 67.1234输出z= 97.392. #include <stdio.h>int main(){int str;str=getchar();putchar(str);return 0;}输入a输出a3.根据下面的输出结果,完善程序s1=C,ASCII is 67x=655.35,y=765.43#include <stdio.h>int main(){double x=655.3524,y=765.4271;char s1='C';printf("s1=%c,ASCII is %d\nx=%6.2f,y=%6.2f",s1,s1,x,y);return 0;}输出s1=C,ASCII is 67x=655.35,y=765.434.用scanf函数输入数据,使得程序运行结果为a=2,b=’x’,c=’z’。

实验报告

实验报告

C语言程序设计实验报告1实验目的(1)熟练掌握scanf()/print()库函数的调用格式,正确使用各种格式转换控制副,掌握各种数据的输出输入方法;2(2)掌握getchar()/putchar()库函数的调用格式,以及使用它们进行字符类型数据输出输入的方法。

实验内容(2)输入并运行下面程序:#include<stdio.h>main(){int a,b,c;scanf("%d%d",&a,&b);c=a/b;printf("%d\n",c);}要求:调试通过后,运行该程序。

○1输入值:50 4<回车>,查看并运行结果;○2输入值:50.4 10.8<回车>,查看运行结果;○3输入值:50000 100<回车>,查看运行结果;○4输入值:10 0<回车>,查看运行结果;○5输入值:50,4<回车>,查看运行结果。

分析得到的结果,并说明原因。

(3)从键盘上输入三个小写字母,输出其对应的大写字母(例如:输入:a,b,c,则输出分别为A,B,C)。

要求:○1通过一条scanf库函数语句输入三个小写字母,通过printf函数以空格键分隔字符输出;○2通过getchar函数输入三个小写字母,通过printf函数以域宽为3的规定格式输出;○3通过getchar函数输入三个小写字母,通过putchar函数输出。

3算法描述流程图4.源程序:○1#include<stdio.h>main(){char c1,c2,c3;scanf("%c%c%c",&c1,&c2,&c3);printf("%c %c %c\n",c1-32,c2-32,c3-32);}○2#include<stdio.h>main(){char c1,c2,c3;c1=getchar();getchar();c2=getchar();getchar();c3=getchar();printf("%3c,%3c,%3c\n",c1-32,c2-32,c3-32);}○3#include<stdio.h>main(){char c1,c2,c3;c1=getchar();c2=getchar();c3=getchar();putchar(c1-32);putchar(c2-32);putchar(c3-32);}5测试数据:4 56789116运行结果(1)50 4 12Press any key to continue (2)50 .4 10.8Press any key to continue (3)50000 100500Press any key to continue (4)10 0Press any key to continue (5)50,4Press any key to continue (1)a bcA B CPress any key to continue6(2)a,b,c7A,B,CPress any key to continue8(3)abc9ABCPress any key to continue7出现问题及解决方法1.在编写第一个程序,运行的时候发现出现了一个错误,最后才找到是因为c的大小写问题,幸好及时改正。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

要求:
①在主函数中从键盘输入一对整型数据a和b;
②调用函数后,根据返回值对a和b的关系进行说明。

例如,在主函数中输
入:10,5,则输出“10 is a multiple of 5”;
③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6
与4,20与4,37与9。

3算法描述流程图
(1)primeNum(int x)(判别一个数是否是素数)函数流程图
①主函数流程图:
②判断素数函数流程图:
(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图
①主函数流程图:
②判断倍数流程图:
4源程序
(1)判断某个数是否是素数
#include <stdio.h>
int primNum(int x) /*编写函数判断某个数是否是素数*/ {
int i;
if (x==0||x==1) /*当x等于1或等于0时判断是否为素数*/ return 0;
for (i=2;i<x;i++) /* 当x大于2时判断不为素数的数*/
{
if (x%i==0)
return 0;
}
if (x%i) /* 当x等于2或不满足上述条件时时判断出该数是素数*/ return 1;
}
void main()
{
int n ;
printf("Please input an integer:"); /* 提示从键盘输入一个数x */
scanf("%d",&n);
if (primNum(n)==1) /* 调用定义的函数*/ printf("%d is a prime number\n",n); /* 由函数得出结论判断是否为素数*/ else
printf("%d is not a prime number\n",n);
}
(2)个数是否是整数倍关系
#include <stdio.h>
int mulNum(int a,int b)/* 定义函数确定两个数是否有整数倍关系*/
{
if (a%b==0) /* 判断出a是b的整数*/
return 1;
else /* 判断出a不是b的整数*/
return 0;
}
void main ()
{
int m,n;
printf ("please input tow integers:\n"); /*提示从键盘输入两个数*/
scanf ("%d%d",&m,&n); /*从键盘输入两个数的值*/
if(mulNum(m,n)==1) /*调用定义的函数并判断输出相应的结果*/
printf("%d is a multiple of %d\n",m,n);
else
printf("%d is not a multiple of %d\n",m,n);
}
5测试数据
(1)实验(1)测试数据为0,1,2,5,9,13,59,121
运行结果
当测试数据0时
当测试数据1时
当测试数据2时
当测试数据5时
当测试数据9时
当测试数据59时
当测试数据121时
(2)实验2测试的数据1与5,5与5,6与2,6与4,20与4,37与9。

运行结果
当测试1与5时
当测试5与5时
当测试6与2时
当测试6与4时
当测试37与9时
6出现问题及解决方法
1)在判断某个数是否是素数的本实验中,我在使用循环遍历判断x是否为素数的时候循环体的内容错误地编写为:
for (i=2;i<x;i++)
{
if (x%i==0)
return 0;
else
return 1;
}
导致程序不能正确地按照设想的结果运行,在判断清循环体的执行过程后将程序正确地改为了:
for (i=2;i<x;i++)
{
if (x%i==0)
return 0;
}
2)在判断确定两个数是否是整数倍关系的本实验中,我在定义两个形参时错误地编写成了(int a ,b),经检查后改为正确格式(int a ,int b)。

3)此外,在编写程序的时候,在标点符号上还有一些细节上的疏漏,如:标点没有在英文的状态下使用,还有一条语句结束后遗漏了分号“; ”。

7实验心得
本次实验,我掌握了一些具体函数的定义和调用方法,函数形参以及返回值的使用。

在操作的过程中深刻地体会到函数调用的便捷。

通过对循环和条件选择的使用,我亲自感受并实践了程序设计的思想,同时对C程序设计也有了总体的认识。

此外,编写程序的严谨思想也令我深深地感受一丝不苟地工作的重要性。

相关文档
最新文档