当前位置:文档之家› 实验5函数程序设计

实验5函数程序设计

实验5函数程序设计
实验5函数程序设计

C语言程序设计实验报告

实验5 函数程序设计

一、实验目的

(1)掌握C语言函数定义及调用的规则;

(2)掌握递归函数的编写方法和运行过程;

(3)理解变量的作用域和生存期。

二、实验内容及步骤

1、程序改错

输入已编好的源程序,源程序中包含有错误,先对源程序进行编译和连接,然后根据提示信息,修改程序中的错误,经过多次修改—编译—连接,直到编译、连接成功。最后运行程序,输出正确结果。

(1)下述程序中,函数FUN功能是:计算正整数NUM的各位上的数字之积。例如,若输入252,则输出应该是20;若输入202,则输出应该是0。

#include /*提示:有3处错误*/

#include

long fun(num)

{long k=1;

do

{k*=num%10;

num\=10;

}while (num)

return k;

}

void main()

{long n;

scanf(“%ld”,&n);

printf(“\n%ld\n”,fun(n));

}

修改后程序代码:

#include

long fun(long num)

{long k=1;

do

{k*=num%10;

num/=10;

}while (num);

return k;

}

void main()

{long n;

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

运行结果:

2.已有一个已排好序的数组,要求在主程序中输入一个数,调用函数将其它插入数组中,保持数组依然有序,在主函数中输出插入后的数组。

程序代码:

#include

main()

{ void insert(int y);

int x;

printf("请输入一个数:");

scanf("%d",&x);

insert(x);

printf("\n");

}

void insert(int y)

{

int i,j,a[6]={1,5,10,15,20};

for(i=0;i<5;i++)

{ if(y

{for(j=5;j>i;j--)

a[j]=a[j-1];

a[i]=y;break;

}

}

for(i=0;i<6;i++)

printf("%d\t",a[i]);

}

运行结果:

3、有一篇文章,共有3行文字,每行有80个字符。要求在主程序中输入文章,打印统计结果。写一个函数分别统计出其中英文大写字母、小写字母、数字、空格及其它字符的个数。

程序代码:

#include

int d=0,x=0,k=0,n=0,s=0;

main()

{void tongji(char c[][80]);

char ch[3][80];

int i;

printf("请输入三行字符:\n");

for(i=0;i<3;i++)

gets(ch[i]);

tongji(ch);

printf("大写字母个数为:%d\n",d);

printf("小写字母个数为:%d\n",x);

printf("空格个数为:%d\n",k);

printf("数字个数为:%d\n",n);

printf("其他字符个数为:%d\n",s-d-x-k-n);

//总数减去大小写字母、空格、数字的个数就是其他字符的个数}

void tongji(char c[][80])

{int i,j;

for(i=0;i<3;i++)

{ for(j=0;j<80;j++)

{ if(c[i][j]!='\0')

{s++;//统计输入字符的总数

if(c[i][j]>='A'&&c[i][j]<='Z')d++;

if(c[i][j]>='a'&&c[i][j]<='z')x++;

if(c[i][j]>='0'&&c[i][j]<='9')n++;

if(c[i][j]==' ')k++;

}

else break;

}

}

}

运行结果:

4. 递归程序设计练习——计算最大公约数

利用计算最大公约数的三条性质,用递归方法计算两个整数的最大公约数。

性质1:如果x>y,则x和y的最大公约数与x-y和y的最大公约数相同性质2:如果y>x,则x和y的最大公约数与x和y-x的最大公约数相同性质3:如果,即x=y,则x和y的最大公约数与x值和y值相同

具体要求:

①主函数中随机输入x、y的值

②所有变量定义为整数变量。

③键盘输入数据前要有提示。

④要求用函数求最大公约数。

程序代码:

#include

main()

{ int max(int a,int b);

i nt x,y;

p rintf("请输入两个整数:用空格隔开\n");

s canf("%d %d",&x,&y);

p rintf("最大公约数为:%d\n",max(x,y));

}

int max(int a,int b)

{ int t;

if(a==b) t=b;

if(a>b) t=max(a-b,b);

if(b>a) t=max(b-a,a);

return t;

}

运行结果:

作业5 程序设计_函数

作业五程序设计_ 函数 班级_________ 学号________姓名________ 成绩_________ 一、选择题 1. 下面叙述中不正确的是 D 。 A. 对于用户自己定义的函数,在使用前必须加以说明 B. 说明函数是必须明确其参数类型和返回类型 C. 函数可以通过return语句返回一个值,也可以使用void 什么值也不返回 D. 空函数不完成任何操作,所以在程序设计中没有用处 2. 下面叙述中正确的是 B 。 A. 调用函数的实参,只能是有确定值的变量 B. return()语句的括号中,可以是变量,常量或有确定值 的表达式 C. C语言中,函数调用时,实参变量和形参变量间的参数传递方式都是值传递 D. 实参和形参若类型不匹配,编译时将报错 3. 下面叙述中错误的是 A 。 A. 主函数中定义的变量在整个程序中都是有效的 B. 在其他函数中定义的变量在主函数中也都不能使用 C. 形式参数也是局部变量 D. 复合语句中定义的变量只在该复合语句中有效 4. 下面叙述中正确的是B A. 全局变量在定义它的文件中的任何地方都是有效的 B. 全局变量在程序的全部执行过程中一直占用内存单元 C. 同一文件中的变量不能重名 D. 使用全局变量有利于程序的模块化和可读性的提高 5. 若函数的类型和return语句中表达式的类型不一致,则 B 。 A. 编译时出错 B. 运行时出现不确定结果 C. 不会出错,且返回值的类型以return语句中表达式的 类型为准 D. 不会出错,且返回值的类型以函数的类型为准 6. 在函数的说明和定义时若没有指出函数的类型,则 A 。 A. 系统自动认为函数类型为整型 B. 系统自动认为函数类型为字符型 C. 系统自动认为函数类型为实型 D. 编译时会出错 7. 将一个函数定义为void *类型,则 C 。 A. 此函数不会返回任何值 B. 此函数被定义为空函数 C. 此函数将返回一个空指针 D. 非法的定义形式 8. 任何一个C语言的可执行程序都是从 B 开始执行的 A.程序中的第一个函数

c++程序设计实验、辅导与习题解答-实验五

实验五 任务1:程序调试。函数调用、函数定义及函数说明的情况。(1)下列程序有错误吗?请思考函数定义在后,且调用前没有函数 说明的情况。 答:有错误。“f”找不到标识符。 修改后程序如下: (2)下列程序有问题吗?请思考函数定义在后,且调用前对函数进 行说明的情况。注意函数说明的形式。 答:会显示未定义y。 修改后程序如下: (3)下列程序有问题吗?请思考函数定义在后,且调用前对函数进 行说明的情况。 答:没有问题。

(4)下列程序有问题吗?请思考:函数定义在调用前,是否一定需要函数说明? 答:程序没有问题。不一定需要函数说明。 (5)下列程序调用系统函数进行计算。当程序运行时,如输入a>0,则计算a的b次方;如果输入a<0,则计算(-a)的b次方。程序有多处错误,请改正。 修改后代码如下: 任务2:程序调试与程序设计。字符串系统是strlen、strcat、strcpy、strcmp在程序设计中的应用。 仿照下列程序,调用有关字符串的系统函数对字符串进行长度测试、连接、复制、比较。 (1)调试程序。

程序如下: 运行结果如下: (2)重新定义str,其功能是字符串长度。程序如下:

运行结果如下: (3)程序功能是比较字符串的大小,请定义str。程序如下: 运行结果如下:

(4)程序的功能是连接两个字符串。程序如下: 运行结果如下:

任务3:程序设计。默认参数的构造函数的设计。 程序如下: 任务4:程序设计。重载函数的设计。 设计一个函数。调用add,可以完成整型、双精度及混合数的加法。如果是字符串,则表示字符串的连接。 设计代码如下:

C语言程序设计 第六章 函数 试题及答案

C语言程序设计第六章函数试题及答案 1 选择题 *6.1建立函数的目的之一,以下正确的说法是。 A)提高程序的执行效率B)提高程序的可读性 C)减少程序的篇幅D)减少程序文件所占内存 参考答案:B *6.2 以下正确的说法是。 A)用户若需要调用标准库函数,调用前必须重新定义 B)用户可以重新定义标准库函数,若如此,该函数将失去原有意义 C)用户系统根本不允许用户重新定义标准库函数 D)用户若需要调用库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动寻找该文件。 参考答案:B 6.3 以下正确的函数定义形式是。 A)double fun(int x,int y) B)double fun(int x;int y) C)double fun(int x,int y); D)doubel fun(int x;int y); 参考答案:A *6.4 以下正确的函数形式是。 A)double fun(int x,int y){z=x+y;return z;} B)double fun(int x,y){int z;return z;} C)fun(x,y){int x,y;double z; z=x+y; return z;} D)double fun(int x,int y){double z;z=x+y;return z;} 参考答案:D *6.5以下正确的说法是。 A)实参和与其对应的形参占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用一个存储单元 D)形参是虚拟的,不占用存储单元 参考答案:A 参考分析:本题并不严谨,因为实参可以是表达式,当实参为表达式时,实参并不单独占用独立的存储单元。 6.6 若调用一个函数,且此函数中没有return语句,则正确的说法是该函数。 A)没有返回值B)返回若干个系统默认值 C)返回一个用户所希望的函数值D)返回一个不确定的值 参考答案:D 参考分析:函数有没有返回值是由函数类型所决定的,当没有retrun语句,系统不能返回一个确定的值而已。 6.7 以下不正确的说法是,C语言规定。 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)实参应与其对应的形参类型一致

C语言程序设计实验报告(实验大纲+过程)之欧阳家百创编

《C程序设计》实验教学大纲 欧阳家百(2021.03.07) 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 五、实验项目与学时分配

注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。 2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每

实验05 函数程序设计

计算两个复数之积(调试示例error05_1)程序填空,不要改变与输入输出 有关的语句。 分别输入两个复数的实部与虚部,编程调用函数实现计算两个复数之积。 若两个复数分别为:c1=x1+(y1)i, c2=x2+(y2)i,则: c1*c2 = (x1*x2-y1*y2) + (x1*y2+x2*y1)i 输入输出示例:括号内是说明 输入 1 2 (x1=1, y1=2) -2 3 (x2=-2, y2=3) 输出 product of complex is (-5.000000)+(1.000000)i #include /*---------*/ int main(void) { float imag1, imag2, real1, real2; scanf("%f%f", &real1, &imag1); scanf("%f%f", &real2, &imag2); complex_prod(real1, imag1, real2, imag2); printf("product of complex is (%f)+(%f)i\n", result_real, result_imag); return 0; } /*---------*/ 使用函数求1! + 2! + … + m!(改错题error05_2)程序填空,不要改 变与输入输出有关的语句。 求1! + 2! + … + 10!,要求定义并调用函数fact(n)计算 n!,函数形参 n 的类型是int,函数类型是double。 输入输出示例:括号内是说明 输出: 1!+2!+...+10! = 4037913.000000 #include

c语言程序设计5-6答案

第5章函数 一、选择题 1-5 :CBADD 6-10:BABDC 11-15:DBBAB 16-20:DBBAC 21-25:BBBBC 二、程序阅读题 1、以下程序的正确结果是2,3,-2 2、有以下程序,当执行后,其结果是14 3、以下程序运行后的输出结果是1 3 6 4、若有以下程序执行后输出结果是9 5、有以下程序序运行后的输出结果是9 。 6、以下程序的输出结果是1,6,3,2,3 7、以下程序的输出结果是15 8、以下程序运行后的输出结果是3,2,2,3 9、以下程序的运行结果是m=4 k=4 i=5 j=5 。 10、有以下程序 若运行时输入:1234<回车>,程序的输出结果是10 11、以下程序的输出结果是15 。 三、程序填空题 1、请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 double max ( double,double); 2、下面程序的功能是:将任意输入的一个偶数n分解为两个素数之和,程序中函数check用来判断一个整数x是否是素数,返回1,否则返回0。main( ){ int n, i; int check( int x ); do { printf( " Input n: " ); scanf( " %d" , &n ); } while( n % 2 != 0 ); for( i=3; i<= n/2 ; i++ ) if( check ( i ) &&check(n-i) ) printf( " %d = %d + %d \n ", n, i, n-i );} int check ( int x ){ int i; for( i=2; i< x ; i++ ) if( x%i==0 ) return ( 0 ); return ( 1 ); }

实验7 函数——函数的定义和调用

淮海工学院计算机科学系实验报告书 课程名:《C语言程序设计A 》 题目:实验7 函数 ——函数的定义和调用 班级:软嵌151 学号:2015123349 姓名:陈正宁

1、实验内容或题目 (1)编写函数求一元二次方程的根,并在main主函数中调用该函数。 (2)编写函数fac(int n)求n!,并在main主函数中进行调用,输出6!的值。 (3)写一个判别素数的函数,在主函数中输入一个整数,输出是否为素数的信息。 2、实验目的与要求 (1)要求熟练掌握函数的定义和调用,熟悉函数返回值的使用。 (2)熟悉函数调用的方式和过程。 3、实验步骤与源程序 ⑴实验步骤 (1)、

N

⑵源代码 (1)、 #include #include void root(float a,float b,float c) { float delt; delt=b*b-4*a*c; if(a==0) printf("该方程不是一元二次"); else if(delt>0) printf("x1=%f,x2=%f\n",(-b+sqrt(delt))/(2*a),(-b-sqrt(delt))/(2*a)); else if(delt==0) printf("x1=x2=%f\n",-b/(2*a)); else printf("此方程无实数根\n"); } void main() { float a,b,c; printf("请输入方程的实系数[a b c enter]\n"); scanf("%f %f %f",&a,&b,&c); root(a,b,c); } (2)、 #include long fac (int n) { int i; long f=1; for(i=1;i<=n;i++) f=f*i; return f; } void main() { int n;

实验七 用函数实现模块化程序设计

河南工业大学C语言实验报告 专业班级:生物11级1班学号:201112910118姓名:l刘路路指导老师:朱红莉评分: 实验题目:用函数实现模块化程序设计 实验目的:熟练掌握函数的定义、调用、声明 实验内容:P218-219 习题1、2、4 实验步骤:(具体程序及运行结果) 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 #include int main() {int hcf(int,int); int lcd(int,int,int); int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%d\n",h); l=lcd(u,v,h); printf("L.C.D=%d\n",l); return 0; } int hcf(int u,int v) {int t,r; if (v>u) {t=u;u=v;v=t;} while ((r=u%v)!=0) {u=v; v=r;} return(v); } int lcd(int u,int v,int h) { return(u*v/h); } 7.3写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。 #include int main() {int prime(int); int n; printf("input an integer:"); scanf("%d",&n);

if (prime(n)) printf("%d is a prime.\n",n); else printf("%d is not a prime.\n",n); return 0; } int prime(int n) {int flag=1,i; for (i=2;i #define N 3 int array[N][N]; int main() { void convert(int array[][3]); int i,j; printf("input array:\n"); for (i=0;i

matlab实验四函数编写与程序设计

实验四:函数编写与程序设计 一、实验目的1 . 掌握M文件的创建。 2.掌握函数的编写规则。 3.掌握函数的调用。 4 . 掌握基本的输入输出函数以及显示函数的用法。 5.会用Matlab程序设计实现一些工程算法问题。 二、实验内容 1 . 设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。a=input('请输入一个数: ')

b=input('请输入一个数:'); fuhao=input('请输入一个运算符号(+-*/):','s'); switch fuhao case {'+'} he=a+b; disp(['和=',num2str(a),'+',num2str(b),'=',num2str(he)]); case {'-'} he=a-b; disp(['减=',num2str(a),'-',num2str(b),'=',num2str(he)]) case {'*'} he=a*b; disp(['乘=',num2str(a),'*',num2str(b),'=',num2str(he)]) case {'/'} he=a/b; disp(['除=',num2str(a),'/',num2str(b),'=',num2str(he)]) otherwise disp('请输入正确的符号'); end 2 . 求下列分段函数的值 2 2 2 6,0 56, 1, y χχχχ χχχχχ χχ ?+-<≠ ? =-+≤≠≠? ?-- ? 且-3 0<10,2且3 其他

大学生C语言程序设计(第四版 谭洪强)实验7 答案

实验七 参考答案(参考答案) (1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。 注意:n 的值要求不大于100。 算法分析: 使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。注意:i 的倒数要表示成:1.0/i; 参考子函数如下: double fun(int n) { double sum=0; int i; for(i=5;i<=n;i++) if(i%5==0||i%9==0) sum=sum+1.0/i; return sum; } (2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。 n s ?++++?++++++=321132112111 例如:若n 的值为11时,函数的值为1.83333 算法分析: 等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。 参考子函数如下: float fun(int n) { float sum=1; //sum 中已经累加了第一项的值 int i,m=1; //m 表示每项的分母; for(i=2;i<=n;i++) { m=m+i; sum=sum+1.0/m; } return sum; }

(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 算法分析: 对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。 参考子函数如下: long fun(int a, int b) { long c=0; c=a%10*1000+a/10*10+b/10+b%10*100; return c; } (4) (sy7-4.c)请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567, 则函数返回1234.570000;实型数为1234.564, 则函数返回1234.560000。 算法分析: 先把这个数乘以100,然后再加0.5(实现四舍五入),再把这个数存放到一个长整型变量中,目的是把小数点后的小数去除,最后把这个数转换成浮点型数除以100,即可得出所的结果。 参考自定义函数如下: float fun ( float h ) { long w ; w = h * 100 + 0.5 ; return (float) w / 100 ; } (5) (sy7-5.c)请编写一个函数unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若w 是n (n ≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。 例如:w 值为5923,则函数返回923;w 值为923 则函数返回23。 算法分析: 首先应求出w的位数,有一位,i就乘以10(如果有4位,i就等于10000);然后通过求模运算舍弃最高位; 参考子函数如下: unsigned fun ( unsigned w ) { int i=1;//i用来存放整数的位数

函数程序设计 -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返回这些数的个数,在主函数中输出这些整数,并给出统计的总数。 (8)设有未完成的函数: char GetChar(char c) { char s[]="9038571426"; …… } 字符串s中无序地存储了10个数字字符,没有重复。函数的功能是: 如果字符c不是数字字符,函数原样返回该字符;否则,在s中查找字符C,并返回其在s 中的前一个字符。如果该字符位于s的最前面(字符'9') ,则返回最后一个字符6'。 如GetChar(4)得到字符'I', GetChar(T)得到字符T。请完成该函数并在主函数中调用。*思考题 1.请分析不返回值的函数定义与有返回值的函数定义有什么不同,思考这两类函数在实际编程中的作用。 2.请观察本次实验中使用的函数都有几个返回值,当个函数需要有多个返回值时,应该如何处理? 3.数组作为函数参数有哪几种方式?这些方式中有没有能解决之前“函数多值返回问题”的方法? 4.请分析下面程序的作用。 /*format.h*/ #define DIGIT(d) printf("整数输出:%d\n",d) #define FLOAT(f) printf("实数输出:%10.2f\n",f) #define STRING(s) printf("字符串输出:?号s\n",s) /*user's program*/

C++程序设计实验5-8

实验五构造函数与析构函数的编程 一、实验目的 1.进一步加深对类和对象的理解。 2.掌握类的构造函数和析构函数的概念、意义和使用方法。 3.掌握重载构造函数的含义和使用。 4.编写一个较为复杂的类和对象的应用程序。 二、实验内容 1.设计一个程序,定义一个矩形类,包括数据成员和函数成员。要求有构造函数、析构函数,还有一个成员函数area( )用来计算并显示矩形的面积,并编写main函数进行测试。 Class Rect {public: int Area_int(); Rect(int l, int w); ~Rect(); private: int nLength; int nWidth; }; 2.重载构造函数。修改上题,一种构造函数用整型变量记录矩形的长和宽,另一种构造函数用double 型记录矩形的长和宽,然后完成成员函数及主函数。 Class Rect {public: int Area_int(); double Area_double(); Rect(double l, double w); Rect(int l, int w); ~Rect(); private: int nLength; int nWidth; double mLength; double mWidth; }; 3.构造一个类countstr,要求用构造函数设置计数器count的初始值为0,成员函数countchar()不返回任何值,它要求用户输入一段文字,按Enter键后结束计算,用count记录输入的字符数,成员函数getchar()返回count的整数值。 三、实验步骤 1. 运用学过的知识,实验前在纸上写出程序。 2. 根据程序要求,先设计类,设计此类的数据成员及成员函数。 3. 注意数据成员的类型,成员函数完成的功能,构造函数与析构函数完成的功能。 4. 在主函数中创建对象,通过对象调用哪些成员函数。注意:创建对象时,构造函数是怎样执行的 程序结束时,释放对象时,析构函数是怎样执行的。 5. 上机编辑、编译、调试和运行,并修改错误。

高级语言程序设计(下)实验编程题

函数编程题 (1)编写一个程序实现如下功能:编写两个函数,其功能分别为: ①求N个整数的最大值和次大值。 ②求两个整数的最大公约数和最小公倍数。主函数调用这两个函数(程序以文件名sy6_7.c存盘)。 #include #define N 10 void max(int b[],int n) //求最大数和次大数 {int i,max,max2; max=max2=b[0]; for(i=1;i

实验7 编写函数过程实现数制转换

实验7 编写函数过程实现数制转换 实验目的: 1、掌握通用子过程的定义和调用方法; 2、掌握函数过程的定义和调用方法; 3、了解传值和传地址的区别。 实验内容: 1、实验要求 编写并调用函数或子过程,能实现不同进制数据之间的相互转换。 2、分析设计 从键盘输入待转换的数据,将转换结果显示在文本框中。 5、源代码 Dim x%, y% Private Sub Command1_Click() x = Val(Text1) If Text1 = "" Then MsgBox "请先输入一个十进制数!" Text1.SetFocus

Exit Sub End If If Option1 = False And Option2 = False And Option3 = False Then MsgBox "请选择进制" Exit Sub End If If Option1.Value = True Then y = 2 ElseIf Option2.Value = True Then y = 8 ElseIf Option3.Value = True Then y = 16 End If Text2 = convert(x, y) End Sub Private Sub Form_Load() Text1.Text = "" Text2 = "" Option1.Value = False Option2.Value = False Option3.Value = False End Sub Public Function convert(ByVal a%, ByVal b%) As String Dim str$, temp% str = "" Do While a <> 0 temp = a Mod b a = a \ b If temp >= 10 Then str = Chr(temp - 10 + 65) & str Else str = temp & str End If Loop convert = str End Function 实验思考: 在本实验基础上,实现各种进制之间的相互转换。

c语言程序设计第五版习题答案

c语言程序设计第五版习 题答案 Prepared on 24 November 2020

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、dowhile语句、switch语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么它由哪几部分组成 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { inta1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main()

{ inta1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* IloveCprograms! ************************* 【分析与提示】 ①要有文件包含语句#include<>。C语言中没有数据的输入、输出等功 能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf 等来实现的。这些函数的说明都包括在文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干 条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include<> main() { printf("************************\n"); printf("IloveCprograms!\n"); printf("************************\n"); } 第2章数据类型及其运算一.简答题 1.C语言中的数据类型主要有哪几类 【解答】短整型(shortint) 整型整型(int) 长整型(longint) 基本类型字符型(char)(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型

实验三 函数程序设计

实验三函数程序设计 实验目的 (1)理解函数的概念,区分系统函数和用户自定义函数的使用方法,包括:1)函数定义 2)函数声明 3)函数调用 (2)掌握整型数据在函数间传递的方法。 实验内容 任务一:改错 1.打开程序文件error1-6.cpp。 void main() { printstar; sayHello(void); printstar; } printStar(void) {printf(“*******”); } void sayHello(void) {printf(“hello world!”); } 2.程序的功能是输出三行文本,请根据VC++6的compile和link错误信息改正错误,并给出运行结果。输出格式如下所示: ******* hello world! ******* 任务二:改错 1.打开程序文件error05-1.cpp。 #include int main(void)

{ int n; double f; printf(“Input n:”); scanf(“%d”,&n); f=fact(m); //设置调试断点 printf(“%d!=%f\n”,n,f); return 0; //设置调试断点 } double fact(m) {int i; double product; for(i=1;i<=m;i++) product= product*i; return 0; //设置调试断点 } 2. 程序的功能是调用fact(n) 函数,计算n!。 1)请根据VC++6的compile和link错误信息改正语法错误 (提示:截一个错误信息,对应一个正确语句) 2)请按注释要求设置3个调试断点,纠正程序逻辑错误,使其能正确输出n!。 3)设计2个测试用例测试程序,并给出运行结果。 任务三画简图ex01_04.cpp 打开sample01_03.cpp,增加画小房子和小男孩的函数定义,并在main函数中调用输出。/*画小女孩sample01_03.cpp*/ #include /* Function prototypes */ void draw_circle(void); /* Draws a circle */ void draw_intersect(void); /* Draws intersecting lines */ void draw_base(void); /* Draws a base line */ void draw_triangle(void); /* Draws a triangle */ void draw_parallel(void); /* Draw a parallel*/ void draw_girl(void); /* Draw a girl*/ int main(void)

实验五、函数程序设计

实验五函数程序设计 一、实验目的 1.掌握函数的定义、函数的说明和调用。 2.掌握函数的参数及其传递方式,函数值的正确返回。 二、实验设备及分组 1.Windows XP操作系统; 2.Visual C++6.0语言环境; 3.每人一台PC机。 三、实验内容 1.[目的]掌握标准库函数的说明和调用方法。 [题目内容]编写一个程序,首先显示一个菜单,然后根据用户的选择,输入数据后,执行相应的操作。 [输入]用户选择和函数自变量值 [输出]如下菜单: =======MENU====== 1.。。。。。。。。。。。sin 2.。。。。。。。。。。。cos 3.。。。。。。。。。。。pow 4.。。。。。。。。。。。sqrt 0.。。。。。。。。。。。exit ================== [提示]使用标准库函数、多分支选择结构。 2.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。 [题目内容]编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1 。编写一个程序,从键盘输入任意10个整数,分别调用用户自定义函数来判断这10个整数的奇偶性。 [输入]任意10个整数 [输出]这10个整数的奇偶性 [提示]在主函数中使用循环结构输入10个整数。根据子函数的返回值输出相应的判断结果信息。 3.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。 [题目内容]编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。 [输入]任意5个整数 [输出]这5个整数的最大值 [提示]先用前三个整数调用函数,求出的最大值作为参数之一,再与另两个整数一起求出最大值即为所求。 4.[目的]掌握用户自定义函数的定义、函数的说明和调用方法。

《C语言程序设计》实验.设计.习题.答案 函数

实验5 函数 姓名:学号:实验日期: 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: 1.在“菜单栏”中单击“组建”,然后在弹出的下划栏中选择“开始调试”,然后选择“Step Into”;或者按“F11”。 2.然后开始单步调试,按F10 提问 修改前运行结果画面: (1),请在下面粘贴运行结果画面: #include int a=3,b=5; max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a=8; printf("%d\n",max(a,b)); }

实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:#include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { extern int a,b; printf("%d\n",max(a,b)); } int a=3,b=5; 提问(3),观察结果有何变化? #include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a,b; printf("%d\n",max(a,b)); }

int a=3,b=5; 通过本题,可以得出什么结论?若没给未知量赋予初值,那未知量将被随意赋值,赋值一主函数的赋值为先。 2.2 实验内容部分第2题源程序代码,请贴图: 程序运行结果画面,请贴图: 2.3 实验内容部分第3题源程序代码,请贴图:

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。 要求: ①在主函数中从键盘输入一对整型数据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是否是整数倍的关系)函数流程图 ①主函数流程图:

相关主题
文本预览
相关文档 最新文档