C++语言程序设计实验答案_函数的应用.docx
实验一 函数-指针及其应用参考答案doc
![实验一 函数-指针及其应用参考答案doc](https://img.taocdn.com/s3/m/c3c54cb9960590c69ec376e8.png)
实验一函数、指针及其应用(一)函数的基本应用1.验证性实验⑴思考回答:可以将函数的形参看作一局部变量,函数在执行时,形参才被分配内存,执行函数时实参并没有参加运算,它只是将值传递给形参,由形参参加运算.而在函数结束后,形参的内存被释放,但实参的内存并没有被释放(要等到main函数结束时才被释放),因而执行完函数后,实参不变,而形参就不复存在了.2.程序填空⑴①sele(k)②k③n%3==0&&n%7==0⑵①1②flag③num%n④flag⑶①return n②n%10③x④sum(x)3.程序改错⑴将unsigned k=0;改为unsigned k=1;将k*=num/10;改为k*=num%10;将while(k);改为while(num);将scanf(“%d”,x)改为scanf(“%d”,&x);⑵将j=(n/10/10);改为j=(n/10)%10;将scanf(“%f”,&n);改为scanf(“%d”,&n);将if(flower(n))改为if(flower(n)==0)4.设计性实验⑴#include<stdio.h>int Isleap(int year){if((year%4==0&&year%100!=0)||year%400==0)return 1;return 0;}void main(){int year;printf(“Please input the year:”);scanf(“%d”,&year);if(Isleap(year))printf(“%d is a leap year!”,year);elseprintf(“%d is not a leap year!”,year);}⑵①/*方法1:递归版*/#include<stdio.h>int gy(int a,int b)/*求最大公约数函数*/{if(a%b==0)return b;else gy(b,a%b);}int gb(int a,int b)/*求最小公倍数函数*/{return a*b/gy(a,b);}void main(){int a,b;printf(“请输入两个数字:(例如\”4,5\”)\n”); scanf(“%d,%d”,&a,&b);p rintf(“\n最大公约数为: %d”,gy(a,b));printf(“\n最小公倍数为: %d”,gb(a,b));}②/*方法2:辗转相除法*/#include<stdio.h>int gy(int a,int b)/*求最大公约数函数*/{int r;while((r=a%b)!=0){a=b;b=r;}return b;}int gb(int a,int b)/*求最小公倍数函数*/{return a*b/gy(a,b);}void main(){int a,b;printf(“请输入两个数字:(例如\”4,5\”)\n”); scanf(“%d,%d”,&a,&b);printf(“\n最大公约数为: %d”,gy(a,b));printf(“\n最小公倍数为: %d”,gb(a,b));}③/*方法3:位运算版,奇妙的算法*/#include<stdio.h>int gy(int a,int b)/*求最大公约数函数*/{while(b^=a^=b^=a%=b);return a;}int gb(int a,int b)/*求最小公倍数函数*/{return a*b/gy(a,b);}void main(){int a,b;printf(“请输入两个数字:(例如\”4,5\”)\n”); scanf(“%d,%d”,&a,&b);printf(“\n最大公约数为: %d”,gy(a,b));printf(“\n最小公倍数为: %d”,gb(a,b));}⑶#include<stdio.h>int sum(int i){if(i==1)return i;elsereturn i+sum(i-1);}void main(){printf("sum=%d",sum(100));}⑷①/*方法1:递归版*/#include<stdio.h>int Fib(int n){if(n==0) return 0;else if(n==1) return 1;else return Fib(n-1)+Fib(n-2); }void main(){int n;printf("please input n:");scanf("%d",&n);printf("Fib(%d)=%d",n,Fib(n)); }②/*方法2:非递归版*/#include<stdio.h>int Fib(int n){int x,a=0,b=1,i;if(n==0) return a;else if(n==1) return b;else{for(i=1;i<=n-1;i++){x=a+b;a=b;b=x;}return x;}}void main(){int a=0,b=1,x,n,i;printf("Please input n:");scanf("%d",&n);printf("Fib(%d)=%d",n,Fib(n));}(二)指针与数组2.程序填空⑴①p②*p③%d⑵①x②i--③i<=10&&i>=13.程序改错⑴将double fun[3],r;改为double fun[3],*r;将scanf(“%f%f%f”,&fun[0],&fun[1],&fun[2]);scanf(“%lf%lf%lf”,&fun[0],&fun[1],&fun[2]);将r=quadratic(fun[3])改为r=quadratic(fun);⑵将scanf(“%d”,*p);改为scanf(“%d”,p);在for(;p>=a;p--)前添加语句p--;将if(p%2==0)改为if(*p%2==0)4.设计性实验⑴#include<stdio.h>#define N 10void main(){int a[N],*max,*min,*p,q;printf("Please input the array:\n");for(p=a;p<a+N;p++)scanf("%d",p);max=min=a;for(p=a;p<a+N;p++){if(*max<*p) max=p;if(*min>*p) min=p;}printf("Max=%d\n",*max);printf("Min=%d\n",*min);q=*max;*max=*min;*min=q;for(p=a;p<a+N;p++)printf("%d",*p);}⑵#include<stdio.h>#define M 3#define N 10void main(){char a[M][N],(*p)[N] ,(*q)[N],*temp="temp";/*注意:(*p)[N]不是指针数组,而是指向数组的行指针*/printf("Please input thr string:\n");for(p=a;p<a+M;p++)gets(p);for(p=a;p<a+M-1;p++)for(q=p+1;q<a+M;q++)if(strlen(p)-strlen(q)<0){strcpy(temp,p);strcpy(p,q);strcpy(q,temp);}for(p=a;p<a+M;p++)puts(p);}⑶#include<stdio.h>#define N 10void main(){char a[N],*p;printf("Please input the string:\n");gets(a);p=a;while(*p)p++;/*移动指针到最末尾处*/for(p--;p>=a;p--)/*p--的作用是让p由'\0'指向字符串最后一个字母*/printf("%c",*p);}⑷#include<stdio.h>#define N 10void input(int a[],int n){int i;for(i=0;i<n;i++)scanf("%d",&a[i]);}void process(int a[],int n){int i;int *p,*max,*min,t;max=min=a;for(p=a+1;p<a+n;p++){if(*max<*p) max=p;if(*min>*p) min=p;}{t=*min;*min=*a;*a=t;}/*交换最小数与第一个数*/{t=*max;*max=*(a+n-1);*(a+n-1)=t;}/*交换最大数与最后一个数*/ }void output(int a[],int n){int i;for(i=0;i<n;i++)printf("%d",a[i]);}void main(){int a[N];input(a,N);process(a,N);output(a,N);}⑸#include<stdio.h>char *find(char a[],char b[],char c[]){char *p,*q,*k;k=c;for(p=a,q=b;(*p)!='\0'&&(*q)!='\0';p++,q++)if(*p-*q==0){*k=*p;k++;}*k='\0';return c;}void main(){char a[N],b[N],c[N],*i;printf("Please input two strings:\n");scanf("%s%s",a,b);i=find(a,b,c);while(*i)i++;for(i--;i>=find(a,b,c);i--)putchar(*i);}(三)指针与函数二、实验内容2.程序填空⑴①min=*p1②min=*p2③min=*p3⑵①switch②add③(*funp)3.程序改错⑴将void swap(int,int);改为void swap(int *p,int *q)或void swap(int *,int *)将scanf(“%d%d%d”,i1,i2,i3)改为scanf(“%d%d%d”,&i1,&i2,&i3);将p1=i1;p2=i2;p3=i3;改为p1=&i1;p2=&i2;p3=&i3;⑵将p=s改为p=&s将unsigned x,p;改为unsigned x,*p;将printf(“%d”,p)改为printf(“%d”,*p);4.设计性实验⑴#include<stdio.h>int add_num(long num){int s=0,a;a=num;while(a>0){s+=a%10;a=a/10;}return &s;/*这类题告诉我们,函数执行完后,其内部形参并不是马上被释放内存,我们暂时可以通过指针继续访问它的值*/}void main(){long num;int *p;printf("Please input a number:");scanf("%ld",&num);p=add_num(num);printf("The sum of every digit is %d",*p);}⑵#include<stdio.h>int *gy(int a,int b){static int gys;/*把形式参数设定为静态变量,在函数结束时其内存就不会被释放,这样我们就可以用指针随时访问它了*/int r;while(r=a%b){a=b;b=r;}gys=b;return &gys;}int *gb(int a, int b){static int gbs;int *p;p=gy(a,b);gbs=a*b/(*p);return &gbs;}void main(){int a,b,*c,*d;printf("Please input two integer:\n");scanf("%d,%d",&a,&b);c=gy(a,b);d=gb(a,b);printf("The greatest common divisor is %d\nThe lease common multiple is %d",*c,*d);}。
实验5-1函数参考答案.doc
![实验5-1函数参考答案.doc](https://img.taocdn.com/s3/m/302d17bd2b160b4e777fcf66.png)
日期实验报告实验5 C++函数、重载与函数模板应用 姓名学号•实验目的(1) 学习函数定义、调用、参数对应关系及传递方法。
(2) 学习重载的定义与应用。
C3)学习函数模板的定义与应用。
• 实验项目1 (项目1:学号lab3_l )⑴编写求2整数m 、n 最大公约数gcd ()和最小公倍数Lcm ()函数;⑵主程 序键盘输入2整数a 、b 作为分数的分子和分母,以a/b 形式输出显示,调 用gcd ()函数做化简运算,再输出显示2整数a 、b 的最大公约数、最小公 倍数和化简后的分式a'/b'。
主程序可重复计算运行。
•实验方法最大公约数(辗转算法):设m>n,⑴k=m%n,若k=0,则n 为最大公约 数;⑵否则,用n 做被除数,k 做除数,回⑴处循环继续。
最小公倍数 1cm : lcmXgcd=mXn, lcm=mXn/gcd•程序代码 ttinclude <iostream> using namespace std; int gcd (int m, int n){ int t;if(m<n) {t=m ;m=n;n=t;} do {t=m%n;m=n;n=t;}while(t!=0);return m; }C++程序设计语言int lcm(int m, int n){ int t;t二m1n/gcd (m, n);return t;}int main (){return 0;•实验结果•结果分析与收获T middl(T a, T b, T c){ T temp;if (b>a) {temp=a;a=b;b=temp;}if(c>a) {temp=a;a=c;c=temp;} if (b>c) return b;else return c;}1 实验项目2(项目2名:学号lab3_2)编写函数模板mid(),用于从3个数据同类型(整/单/双精度数/字符)数据中返回中间数。
桂林电子科技大学C语言程序设计习题答案(周信东)实验5函数
![桂林电子科技大学C语言程序设计习题答案(周信东)实验5函数](https://img.taocdn.com/s3/m/f1a033d209a1284ac850ad02de80d4d8d15a01dc.png)
实验5 函数
姓名:学号:实验日期:2013-12-1
1.实验目的和要求:参见实验指导书实验八
2.实验内容和步骤:
实验内容:实验指导书中的实验八
实验步骤:
2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作:
答:点击组建——开始调试——Step into或按F11可以进入到函数内部进行单步调试,在右下角的窗口中输入要观察的变量,单步运行观察变量的变化。
提问(1),请在下面粘贴运行结果画面:
实参a是否为同一变量?
答:修改前后实参a不是同一变量,修改前的实参a为全局变量,修改后的实参a为局部变量。
提问(2),请请在下面粘贴运行结果画面:
提问(3),观察结果有何变化?
答:运行结果变成了一个随机数。
通过本题,可以得出什么结论?
答:函数的返回值是由mai n函数内部的局部变量决定的。
2.2 实验内容部分第2题源程序代码,请贴图:
程序运行结果画面,请贴图:
2.3 实验内容部分第3题源程序代码,请贴图:
程序运行结果画面,请贴图:
2.4 选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图
2.5选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图
3.实验小结:
通过本次实验,我对函数的调用更加深入理解。
之前对函数的返回值是哪个一直分不清,而且对形参和实参的定义理解不透。
但是做完实验报告之后,自己的编程水平进一步提高。
C++语言程序设计实验答案-函数的应用
![C++语言程序设计实验答案-函数的应用](https://img.taocdn.com/s3/m/e33f3243ff00bed5b8f31d38.png)
C++语言程序设计实验答案-函数的应用实验03函数的应用(2学时)(第3章函数)一、实验目的(1) 掌握函数的定义和调用方法。
(2) 练习重载函数的使用。
(3) 练习使用系统函数。
(4) 学习使用Visual Studio 2010的调试功能,使用“逐语句”追踪到函数内部。
二、实验任务3_1(习题3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。
3_2 编写重载函数Max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。
3_3 使用系统函数pow(x, y)计算x y的值,注意包含头文件cmath。
3_4(习题3-13)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
三、实验步骤1.(编程,习题3-8)把华氏温度转换为摄氏温度。
编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法C=(F-32)*5/9,在main()函数中实现输入、输出。
程序名:lab3_1.cpp。
★程序及运行结果:(注意:定义的函数头是float Convert(float TempFer))//lab3_1(习题3-8)#include<iostream>using namespace std;float Convert(float TempFer);void main(){float f;cout<<"输入一个华氏温度值:";cin>>f;cout<<"华氏温度"<<f<<"转换为摄氏温度的值是"<<Convert(f)<<endl;}float Convert(float TempFer){return (TempFer-32)*5/9;}2.(编程)编写重载函数,求2或3个数中的最大数。
济南大学c语言实验答案(DOC)
![济南大学c语言实验答案(DOC)](https://img.taocdn.com/s3/m/4fda380814791711cc7917e3.png)
实验2 顺序结构程序设计1. 编写程序,从键盘输入一个大写字母,将它转换为对应的小写字母后输出。
参考程序:#include "stdio.h"void main(){char ch;printf(“\nPlease input a capital character:”);scanf(“%c”,&ch);ch=ch+32;printf(“\nThe small letter is %c”,ch);}2.编写程序,输入圆半径r ,求圆周长、圆面积、圆球体积。
参考程序:#include <stdio.h>#include <math.h>#define PI 3.14void main(){float r,c,area,v;printf(“\nPlease input the r:”);scanf(“%f”,&r);c=2*PI*r;area=PI*r*r;v=4.0/3*PI*pow(r,3);printf(“\nThe circle’s perimeter is %.2f”,c);printf(“\nT he circle’s area is %.2f”,area;printf(“\nThe circle’s volume is %.2f”,v);}3. 输入一个华氏温度,要求输出摄氏温度。
公式为:()3295-=F c 输出要有文字说明,取2位小数。
参考程序:#include <stdio.h>void main(){float f,c;printf(“\nPlease input a F temperature:”);scanf(“%f ”,&f);c=5.0/9*(f-32);printf(“\nThe temperature is %.2f ”,c);}4. 有3个电阻r1、r2、r3并联,编写程序计算并输出并联后的电阻r 。
高等教育出版社c语言程序设计实践教程习题参考答案
![高等教育出版社c语言程序设计实践教程习题参考答案](https://img.taocdn.com/s3/m/ed0ceca9b9f67c1cfad6195f312b3169a551ea78.png)
高等教育出版社c语言程序设计实践教程习题参考答案C语言是一门功能强大的编程语言,广泛应用于计算机科学和软件开发领域。
高等教育出版社出版的C语言程序设计实践教程是一本备受学生和程序员欢迎的教材。
本文将为读者提供C语言程序设计实践教程中的习题参考答案,以帮助读者更好地掌握C语言的编程技巧和实践能力。
第一章 C语言基础知识1.1 变量和数据类型C语言中的变量用于存储和操作数据。
变量的类型决定了变量可以存储的数据的种类和范围。
C语言中常见的数据类型包括整型、浮点型、字符型等。
以下是一些习题的参考答案:习题 1:```c#include <stdio.h>int main() {int num = 10;float factor = 1.5;char letter = 'A';printf("num = %d\n", num);printf("factor = %f\n", factor); printf("letter = %c\n", letter); return 0;}```习题 2:```c#include <stdio.h>int main() {int a = 10;int b = 20;int temp;temp = a;a = b;b = temp;printf("交换后:\n");printf("a = %d\n", a);printf("b = %d\n", b);return 0;```1.2 运算符和表达式C语言提供了多种常见的运算符,如算术运算符、赋值运算符、比较运算符等。
通过使用运算符,我们可以对数据进行各种操作和计算。
以下是一些习题的参考答案:习题 1:```c#include <stdio.h>int main() {int a = 10;int b = 3;int result;result = a % b;printf("result = %d\n", result);return 0;}```习题 2:#include <stdio.h>int main() {int a = 10;int b = 5;printf("结果为:%d\n", a > b ? a : b);return 0;}```第二章 C程序控制结构2.1 顺序结构C语言中的顺序结构就是按照程序代码的顺序执行。
C语言程序设计实验六函数答案《西北民大电气学院》
![C语言程序设计实验六函数答案《西北民大电气学院》](https://img.taocdn.com/s3/m/623487cd0912a21615792941.png)
实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
C语言程序设计实验五 参考答案
![C语言程序设计实验五 参考答案](https://img.taocdn.com/s3/m/480be647f7ec4afe04a1dfde.png)
答案:
#include<stdio.h>
void main()
{
int i,j,num=0;
for(i=3;i<=1000;i++)
{
for(j=2;j<=1000;j++)
if(i%2==0)
break;
5-4从键盘输入一个整数n,计算2n+1与++n之和。要求计算两数之和用函数实现。
答案:
#include<stdio.h>
void main()
{
int a;
int sum(int n);
printf("input n:\n");
scanf("%d",&a);
sum(a);
}
int sum(int n)
if(i%2!=0)
{
printf("%5d",i);
num++;
if(num%10==0)
printf("\n");
}
}
printf("\n");
}
*************************************************************************************************************实验三*******************************************
c语言程序设计实验五参考答案实验解答实验五参考答案编程语言c语言吧c语言答案
C语言程序设计实验五:函数(5篇范例)
![C语言程序设计实验五:函数(5篇范例)](https://img.taocdn.com/s3/m/defc489b970590c69ec3d5bbfd0a79563c1ed4a9.png)
C语言程序设计实验五:函数(5篇范例)第一篇: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机一台三、实验内容、步骤和结果分析题目一:编写一个用来判断质数(素数)的函数。
c语言 实验5 函数答案
![c语言 实验5 函数答案](https://img.taocdn.com/s3/m/796b296b25c52cc58bd6be1c.png)
一、实验目的(1) 掌握C语言中定义函数的方法(2) 掌握通过“普通值传递”和“地址值传递”调用函数的方法。
(3) 掌握函数嵌套调用和递归调用的方法。
(4) 理解变量作用域和生存期的概念,掌握全局变量和局部变量,动态变量和静态变量的定义、说明和使用方法。
二、实验内容步骤(按要求设计以下程序,并调试分析运行结果,此部分完成在实验报告上)1.编写函数fun,函数首部为void fun(int a[],int n),其功能是将数组a进行倒序,即a[0]和a[n-1]交换,a[1]和a[n-2]交换。
Main函数中定义数组a[10]={1,2,3,4,5,6,7,8,9,10},调用fun函数,然后将倒序后的数组a输出。
(文件名存为sy5-1.c)#include<stdio.h>#include<conio.h>main(){void fun(int a[],int n);int i,array[10]={1,2,3,4,5,6,7,8,9,10};clrscr();printf("before swap:\n");for(i=0;i<10;i++)printf("%d ",array[i]);printf("\n");fun(array,10);printf("after swap:\n");for(i=0;i<10;i++)printf("%d ",array[i]);}void fun(int a[],int n){int i,j,m,t;m=n/2;for(i=0,j=n-i-1;i<m;i++,j--){t=a[i];a[i]=a[j];a[j]=t;}2,编写函数fun,函数首部定义为void fun(int a[][4]),其功能是实现二维数组的转置。
实验十函数应用答案
![实验十函数应用答案](https://img.taocdn.com/s3/m/b0d8ecfc59eef8c75ebfb399.png)
实验十函数应用一、实验目的1.掌握函数的定义和调用;2.理解形参和实参的使用和传值调用;3.理解函数声明的使用;4.掌握函数的嵌套调用;5.了解函数的嵌套与递归调用,掌握递归函数的编写规律;6.了解数组元素、数组名作函数参数。
二、实验学时数2学时三、实验步骤(一)阅读程序1.#include <stdio.h>int fun (int x, int y, int z){ z=x * x + y * y;}main(){ int a=38;fun(7,3,a);printf("%d",a);2.#include <stdio.h>void fun (int x,int y );main(){int x=5,y=3;fun(x,y);printf("%d,%d\n",x,y);}void fun (int x,int y ){ x=x+y;y=x-y;x=x-y;printf("%d,%d\n",x,y);3.#include <stdio.h>int f (int a);main(){ int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0;for (i=0; f( s[i] ) ; i++)d+=s[i];printf("%d\n",d);}int f(int a){ return a%2;}4.#include<stdio.h>long f( int g){ switch(g){ case 0:return 0;case 1:case 2: return 1;}return ( f(g-1)+ f(g-2));}main ( ){ long int k;k = f(7);printf("\nk= %d\n",k);}5. #include<stdio.h>int f(int b[ ][4]){ int i,j,s=0;for(j=0;j<4;j++){ i=j;if(i>2) i=3-j;s+=b[i][j];}return s;}main( ){int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};printf("%d\n",f(a) );}(二)要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。1. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。#include <stdio.h>double max(double a,double b);//或者double max(double,double);main(){double x,y;scanf("%lf%lf",&x,&y);printf("%.8lf\n",max(x,y));}double max(double a,double b){return (a>b ? a:b) ;}2.以下函数的功能是:求x的y次方,请填空,并配写出主调函数。
C++语言程序设计试验答案_函数的应用
![C++语言程序设计试验答案_函数的应用](https://img.taocdn.com/s3/m/51086f4f5ef7ba0d4b733b3e.png)
实验03函数的应用(2学时)(第3章函数)一、实验目的二、实验任务3_1(习题3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。
3_2 编写重载函数Max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。
的值,注意包含头文件cmath。
y x计算3_3 使用系统函数pow(x, y)3_4(习题3-13)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。
三、实验步骤1.(编程,习题3-8)把华氏温度转换为摄氏温度。
编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法。
lab3_1.cpp函数中实现输入、输出。
程序名:main(),在C=(F-32)*5/9.★程序及运行结果:(注意:定义的函数头是)float Convert(float TempFer)//lab3_1(习题3-8)#include<iostream>using namespace std;float Convert(float TempFer);void main(){floa f;cout输入一个华氏温度;cin>>f;cout华氏<<f转换为摄氏温度的<<Convert(f)<<endl;}floa Convert floa TempFer){retur (TempFer-32)*5/9;2.(编程)编写重载函数,求2或3个数中的最大数。
编写4个同名函数Max1,分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值,实现函数重载,在main()函数中测试函数功能。
程序名:lab3_2.cpp。
★程序及运行结果:(注意:分别测试4个函数)//lab3_2.cpp#include<iostream>using namespace std;int Max1(int a,i n t b){cout<<调用函数?湩?慍?椨瑮愠椬瑮戠尩<<endl;return a>b?a:b;}int Max1(int a,int b,int c){cout<<调用函数?湩?慍?椨瑮愠椬瑮戠椬瑮挠尩<<endl;a>b ? (a>c?a:c) : (b>c?b:c);return}方法2:int Max1(int a,i n t b){if(a>b) return a;else return b;}int Max1(int a,int b,int c){ if(a>b)if(a>c) return a;else return c;elseif(b>c) return b;else return c;}方法3:int Max1(int a,i n t b){if(b>a) a=b;return a;}int Max1(int a,int b,int c){if(b>a) a=b;if(c>a) a=c;return a;}3.(编程)调用系统函数pow(x, y)计算x的y次幂。
实验报告函数的用法(3篇)
![实验报告函数的用法(3篇)](https://img.taocdn.com/s3/m/bc68399c951ea76e58fafab069dc5022aaea46a4.png)
第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. 函数的递归调用递归调用是指函数在执行过程中直接或间接地调用自身。
递归调用分为直接递归和间接递归两种。
实验7 函数及其应用实验报告答案
![实验7 函数及其应用实验报告答案](https://img.taocdn.com/s3/m/2b77d22d5901020207409cc1.png)
实验七函数及其应用【实验类型】设计性【实验学时】2学时【实验目的】1.掌握定义函数的方法。
2.掌握函数实参及形参的对应关系以及“值传递”方式。
3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。
5.学会对多文件程序的编译和运行。
【实验内容】1.写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。
本程序应准备以下测试数据:17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。
#include<stdio.h>void main(){int prime(int);int n;printf("请输入一个整数:\n");scanf("%d",&n);if(prime(n))printf("%d是一个素数。
\n",n);elseprintf("%d不是一个素数。
\n",n);}int prime(int n){int flag=1,i;if(n<2) flag=0;for(i=2;i<=n/2&&flag==1;i++)if(n%i==0) flag=0;return(flag);}2.用一个函数来实现将一行字符串中最长的单词输出。
此行字符从主函数传递给该函数。
(1)把两个函数放在同一个程序文件中。
(2)将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。
解:#include<stdio.h>#include<string.h>void main(){int alphabetic(char);int longest(char []);int i;char line[100];printf("请输入一个句子:\n");gets(line);printf("最长的单词是:");for(i=longest(line);alphabetic(line[i]);i++)printf("%c",line[i]);printf("\n");}int alphabetic(char c){if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return(1);elsereturn(0);}int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i<=strlen(string);i++)if(alphabetic(string[i]))if(flag){point=i;flag=0;}elselen++;else{flag=1;if(len>=length){length=len;place=point;len=0;}}return(place);}3.用递归法将一个整数n转换成字符串。
C程序设计实验指导书实验4函数1的详细答案
![C程序设计实验指导书实验4函数1的详细答案](https://img.taocdn.com/s3/m/cccbef666bec0975f565e278.png)
【实验题目】函数1【实验目的】1、掌握函数的定义。
2、了解函数原型(函数声明)与函数定义的区别与了解。
3、掌握函数调用的基本方法和返回值的用法。
【实验内容】1、设计一个函数,这个函数有两个形参,一个表示年份,一个表示月份,这个函数返回这个月的天数。
2.求三个数中最大数和最小数的差值。
【程序代码】1#include <iostream>using namespace std;int main(){int x,y,d,m=31,n=30,l=28;cin>>x>>y;//x表示月y表示年switch(x){case 1:case 3:case 5:case 7:case 8:case 10:case 12:cout<<"d="<<m<<endl;break;case 4:case 6:case 9:case 11:cout<<"d="<<n<<endl;break;default :cout<<"d="<<l<<endl;}if(y%4==0&&y%100!=0||y%400==0&&x==2) {d=29;cout<<"d="<<d<<endl;}return (d);}2#include<iostream>using namespace std;int max(int x,int y,int z){int t;t=x>y?x:y;return(t>z?t:z);}int min(int x,int y,int z){int t;t=x<y?x:y;return(t<z?t:z);}int dif(int x,int y,int z){return max(x,y,z)-min(x,y,z);}void main(){int a,b,c;cin>>a>>b>>c;cout<<"Max-Min="<<dif(a,b,c)<<endl; }【体会】通过学习这部分,可以知道函数的声明就像一个目录,可以明显的知道都有什么函数,是程序看起来很有规律。
实验(8) 函数 参考答案
![实验(8) 函数 参考答案](https://img.taocdn.com/s3/m/52895f1a91c69ec3d5bbfd0a79563c1ec5dad705.png)
实验(8) 函数参考答案实验(8)-函数-参考答案c语言程序设计实验教学(8)【实验目的】函数就是c程序的基本组成部分,自学函数的设计和调用就是很关键的。
实验目的就是掌控函数的定义、变量的作用域和函数的调用。
【实验建议】实际应用程序通常就是由多个函数形成的,建议将常用的功能模块用函数形式同时实现,并学会在主函数或其他函数中调用定义的函数。
必须学会函数声明。
【实验课时】6.0【实验内容】1.编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,否回到0。
撰写main函数,输出一个数num,调用fun(num)函数,并输入推论结果。
#include#includeintfun(intn){inta,b,c;a=n;b=n/10;c=n/100;if(a*a*a+b*b*b+c*c*c==n)return(1);elsereturn(0);}voidmain(){intnum;clrscr();scanf(\while(num<100||num>=1000){printf(\scanf(\if(/**/fun(num)==1/**/)printf(\elseprintf(\2.撰写函数ss(n),推论n与否为素数,就是回到1,否回到0。
撰写main函数,输入一个数num,调用ss(num)函数,并输出判断结果。
#include1#includeintss(intn){inti;for(i=2;i=n)return(1);elsereturn(0);}voidmain(){intnum;clrscr();scanf(\if(/**/ss(num)==1/**/)printf(\elseprintf(\3.编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输出num,调用fun(num),输入排序的结果。
#include#includelongfun(intn){longs=1;inti;for(i=1;i<=n;i++)s=s*i;return(s);}voidmain(){intnum;clrscr();scanf(\if(num>0)printf(\/**/fun(num)/**/);elseprintf(\4.采用递归函数同时实现排序n!,并在main函数中调用。
[练习]C语言实验七、函数程序设计答案
![[练习]C语言实验七、函数程序设计答案](https://img.taocdn.com/s3/m/6eb9357e24c52cc58bd63186bceb19e8b8f6ec8d.png)
实验七 函数及程序结构(二)一、实验目的1.掌握函数的嵌套调用和递归调用2.掌握数组做函数参数的用法3.掌握全局变量和局部变量的用法。
?4.掌握变量的存储类别。
?二、实验内容1.[目的]掌握函数的嵌套调用方法。
[题目内容] 编写程序计算cb a 。
要求设计主函数main()读取a 、b 、c 的值,并调用ratio 函数计算a/(b-c)的值。
如果(b-c)=0那么ratio 就不能计算,因此,ratio 函数调用另一个函数dif ,以测试(b-c)的差是否为零,如果b 不等于c ,dif 返回1,否则返回0。
[输入] a 、b 、c 的值[输出] 计算结果[提示] main 函数调用ratio 函数,ratio 函数调用dif 函数。
三个函数平行定义,嵌套调用。
#include <stdio.h>void main(){float ratio(int x,int y ,int z);int dif(int x,int y);int a,b,c;float d;printf("请输入a,b,c:");scanf("%d%d%d",&a,&b,&c);d=ratio(a,b,c);if(d==0.0) printf("b-c 为零。
");else printf("%d/(%d-%d)=%f\n",a,b,c,d);}float ratio(int x,int y ,int z){if(dif(y ,z)==1) return (float)x/(float)(y-z);else return 0.0;}int dif(int x,int y){if(x==y) return 0;else return 1;}2.[目的]利用标准库提供的随机数功能。
[题目内容]编写程序,帮助小学生练习乘法计算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验 03 函数的应用( 2 学时)(第 3 章函数)一、实验目的(1)掌握函数的定义和调用方法。
(2)练习重载函数的使用。
(3)练习使用系统函数。
(4)学习使用 Visual Studio 2010 的调试功能,使用“逐语句”追踪到函数内部。
二、实验任务3_1(习题 3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9 。
3_2 编写重载函数 Max1 可分别求取 2 个整数、 3 个整数、 2 个双精度数、 3个双精度数的最大值。
3_3 使用系统函数 pow(x, y)计算 x y的值,注意包含头文件cmath。
3_4(习题 3-13)用递归的方法编写函数求Fibonacci 级数,观察递归调用的过程。
三、实验步骤1.(编程,习题 3-8)把华氏温度转换为摄氏温度。
编写函数 float Convert(float TempFer) ,参数和返回值都为float 类型,实现算法C=(F-32)*5/9 ,在 main() 函数中实现输入、输出。
程序名:lab3_1.cpp。
★程序及运行结果:(注意:定义的函数头是float Convert(float TempFer) )//lab3_1 (习题 3-8 )#include<iostream>using namespace std;float Convert( float TempFer);void main(){float f;cout<< " 输入一个华氏温度值:" ;cin>>f;cout<< " 华氏温度 "<<f<< "转换为摄氏温度的值是"<<Convert(f)<<endl;}float Convert( float TempFer){return (TempFer-32)*5/9;}2.(编程)编写重载函数,求 2 或 3 个数中的最大数。
编写 4 个同名函数Max1 ,分别求取 2 个整数、 3 个整数、 2 个双精度数、 3 个双精度数的最大值,实现函数重载,在main() 函数中测试函数功能。
程序名:lab3_2.cpp。
★程序及运行结果:(注意:分别测试 4 个函数)//lab3_2.cpp#include<iostream>using namespace std;int Max1( int a,i nt b){cout<< " 调用函数 : int Max1(int a,int b)"<<endl;return a>b?a:b;}int Max1( int a, int b, int c){cout<< " 调用函数 : int Max1(int a,int b,int c)"<<endl;return a>b ? (a>c?a:c) : (b>c?b:c);}double Max1( double a, double b){<<endl;cout<< " 调用函数 : double Max1(double a,double b)"return a>b?a:b;}double Max1( double a, double b, double c){<<endl;cout<< " 调用函数 : double Max1(double a,double b,double c)"return a>b ? (a>c?a:c) : (b>c?b:c);}void main(){int a,b,c,ii;double d,e,f,dd;cout<< " 输入 2 个整数: ";cin>>a>>b; ii=Max1(a,b);cout<<a<< "和 "<<b<< "的最大数是:"<<ii<<endl;cout<< "\n 输入 3 个整数: ";cin>>a>>b>>c; ii=Max1(a,b,c);cout<<a<< "," <<b<< "和 "<<c<<" 的最大数是: " <<ii<<endl;cout<< "\n 输入 2 个双精度数:";cin>>d>>e; dd=Max1(d,e);cout<<d<< " 和 "<<e<< "的最大数是:"<<dd<<endl;cout<< "\n 输入 3 个双精度数:";cin>>d>>e>>f; dd=Max1(d,e,f);cout<<d<< "," <<e<< "和 "<<f<< "的最大数是:"<<dd<<endl;}方法 2:int Max1( int a,i nt b){if(a>b) return a;else return b;}int Max1( int a, int b, int c){if(a>b)if(a>c) return a;else return c;elseif(b>c) return b;else return c;}方法 3:int Max1( int a,i nt b){if(b>a) a=b;return a;}int Max1( int a, int b, int c){if(b>a) a=b;if(c>a) a=c;return a;}3.(编程)调用系统函数pow(x, y)计算 x 的 y 次幂。
在 main() 函数中提示输入两个整数x、y,使用 cin 语句得到x、y 的值,调用pow(x, y)函数计算x 的 y 次幂的结果,再显示出来。
程序名:lab3_3.cpp。
/*重载函数 pow 的函数原型:long double pow(long double,int);float pow(float,int);double pow(double,int);*/★程序及运行果:(注意:不要写函数pow(⋯) ,直接用)//lab3_3.cpp#include<iostream>#include <cmath> // 无此行也可以using namespace std;void main(){float x; int y;cout<< " 输入基底的值:";cin>>x;cout<< " 输入幂的值:";cin>>y;cout<<x<< "的 "<<y<< "次幂的结果为"<<pow(x,y)<<endl;}4.(,3-13)写函数求Fibonacci数。
编写递归函数int fib(int n),在主程序中输入n 的值,调用fib函数计算Fibonacci 级数。
公式为 fib(n)=fib(n-1)+fib(n-2) , n>2; fib(1)=fib(2)=1 ;使用 if 语句判断函数的出口,在程序中用 cout 语句输出提示信息。
程序名:lab3_4.cpp。
(程序见步骤5)★程序的运行结果:(注意:运行步骤 5 的程序,输入 6)5.(要求)用 Debug 调试的程序文件 lab3_4.cpp。
使用“调试” 中的“逐语句” 追踪到函数内部,观察函数的调用过程,参考程序如下://lab3_4.cpp#include<iostream>using namespace std;int fib( int n);int main(){int n,answer;cout<< " 输入一个正整数:";cin>>n;cout<< "\n" ;answer=fib(n);cout<<answer<<" 是第"<<n<< " 个 Fibonacci数。
\n" ;return 0;}int fib( int n){cout<< " 计算fib("<<n << ")......" ;if(n<3){cout<< " 返回1! \n" ;return (1);}else{cout<< " 调用fib(" << n-2 << ")和fib(" << n-1 << ");\n" ;return (fib(n-2)+fib(n-1));}}6.(操作)调试步骤。
调试操作步骤如下:(1)选择菜单命令“调试 | 逐语句”,系统进入单步执行状态,程序开始运行,并出现一个 DOS 窗口,此时在源码中光标停在main() 函数的入口处。
(2)把光标移到语句“ answer=fib(n); ”前,并在该行单击鼠标右键,再单击“运行到光标处”,在程序运行的 DOS 窗口中按提示输入数字6,光标停在语句“ answer=fib(n); ”前,观察一下 n 的值(观察方法见实验 2)。
(3)单击“逐语句”,程序进入 fib 函数,观察一下 n 的值。
(4)把光标移到语句“ return (fib(n-2)+fib(n-1)); ”前,单击“运行到光标处” 。