程序设计基础课后答案 第五章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
int i,m,n;
m=strlen(dest);
n=strlen(a)-m;
try//用于抛出错误
{
for(i=0;i<=n;i++)
{
int k=i;/r(int j=0;j<=m-1;j++)
{
if(a[k]==dest[j])
cout<<"values after function"<<big<<"and"<<small<<endl;
}
分析:输出结果:Values before function 2002 and 0
Values after function 2002 and 0
在函数调用中,可以通过值传递方式在函数间传递数据。但是,这种传递无法改变实参的值。只是因为在进入被调用函数时,变量进行了复制。被调用函数的任何更改和实参没有任何联系。所以,在主程序中打印它的局部变量时,变量值没有任何改变。
double add(double,double);
void main()
{
cout<<add(5,10)<<endl;
cout<<add(5.0,10.6)<<endl;
}
int add(int x,int y)
{
return x+y;
}
double add(double a, double b)
四、编程题
2、编写一个函数,在一个字符串数组中查找"Hello",如果找回返回指向“Hello”开始出的指针;否则抛出一个异常“Not Found”.
#include<iostream.h>
#include<stdio.h>
#include<string.h>
char*findstring(char*a,char*dest)
#include<stdio.h>
void Display(int idata)
{printf("A int:%d\n",idata);}
void Display(double ddata)
{printf("A double:%16f\n",ddata);}
void Display(char cdata)
Display(d);
Display(e);
}
}
3、编写一个程序其中包括3个重载函数Display()用于显示数值。这些函数根据实参类型,将数值显示在屏幕上。第一个函数输出一个double值,前面用字符串“A double:”引导;第二个数值输出一个int值,前面用“A int:”引导;第三个函数输出一个char字符,前面用“A char:”引导。在主函数中,分别用double,float,int,char和short型变量去调用Display()函数。
}
void main(void)
{
char str1[]="This is a test char array.Hello is here.";
char dest[]="Hello";
char*result=NULL;
result=findstring(str1,dest);
cout<<"The string is:"<<result<<endl;
函数类型是指函数返回值的数据类型,函数的返回值可以是指针、值或者引用。并不是所有的函数都有返回值,有的函数可以没有返回值,函数无返回值,要根据函数实现的功能来决定。如:
函数add()
int add (int a ,int b)
{
return a+b;
}
用来实现两个整数的求和,那么就需要返回值来返回求和结果,而print()只向屏幕上输出一些信息,就不需返回值,所以返回类型为void。
函数重载要求编译器能唯一确定调用一个函数时应执行哪个函数代码,即采取哪个函数实现。确定函数的实现时,要从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同命名的函数的参数个数或参数类型不同;否则,无法实现重载。
举例:
#include<iostream.h>
int add(int,int);
{printf("A char:%c\n",cdata);}
void main(void)
{
int a=3;
double b=3.33;
float c=1.2;
char d='a';
short e=34;
Display(a);
Display(b);
Display(c);
{
int temp;
temp=a;a=b;b=temp;
}
void main(void)
{
int big=2002,small=0;
cout<<"values before function"<<big<<"and"<<small<<endl;
swap_values(big,small);
k++;//如果当前字符相等进行下一个字符比较
else
break;
if(j==m-1)
return &a[i];
}
}
throw "Not found!";
}
catch(char*str)
{cout<<"there is a exception is:"<<str<<endl;}
void print(char *str)
{
cout<<str;
}
所有的函数都有返回类型,如果没有显示指出函数的返回值类型,默认返回类型为int型
二、选择题
2、B
8、B
三、分析题
4、#include<iostream.h>
void swap_values(int a,int b)
一、问答题
1、什么是函数重载?如何进行函数重载?
答:函数重载指同一函数名可以对应多个函数的实现。eg:函数名add(),功能是求和即两个操作的和。其中,一个函数实现两个整型数的和,另一个函数实现两个浮点型数的和,再一个函数实现两个复数的和。每种函数实现对应一个函数体,函数名字相同,但函数的参数类型不同。这就是函数的重载。函数重载在类和对象的应用中尤为重要。
{
return a+b;
}
4、下列两个函数是否为重载?
void func(int a,int b);
int func(int a,int b);
答:不是重载。因为它们参数个数和类型都相同,只有返回值不同,返回值不足以区分两个函数。
7、什么是函数的类型和值?是否所有函数都有返回值?是否所有函数都有类型?
int i,m,n;
m=strlen(dest);
n=strlen(a)-m;
try//用于抛出错误
{
for(i=0;i<=n;i++)
{
int k=i;/r(int j=0;j<=m-1;j++)
{
if(a[k]==dest[j])
cout<<"values after function"<<big<<"and"<<small<<endl;
}
分析:输出结果:Values before function 2002 and 0
Values after function 2002 and 0
在函数调用中,可以通过值传递方式在函数间传递数据。但是,这种传递无法改变实参的值。只是因为在进入被调用函数时,变量进行了复制。被调用函数的任何更改和实参没有任何联系。所以,在主程序中打印它的局部变量时,变量值没有任何改变。
double add(double,double);
void main()
{
cout<<add(5,10)<<endl;
cout<<add(5.0,10.6)<<endl;
}
int add(int x,int y)
{
return x+y;
}
double add(double a, double b)
四、编程题
2、编写一个函数,在一个字符串数组中查找"Hello",如果找回返回指向“Hello”开始出的指针;否则抛出一个异常“Not Found”.
#include<iostream.h>
#include<stdio.h>
#include<string.h>
char*findstring(char*a,char*dest)
#include<stdio.h>
void Display(int idata)
{printf("A int:%d\n",idata);}
void Display(double ddata)
{printf("A double:%16f\n",ddata);}
void Display(char cdata)
Display(d);
Display(e);
}
}
3、编写一个程序其中包括3个重载函数Display()用于显示数值。这些函数根据实参类型,将数值显示在屏幕上。第一个函数输出一个double值,前面用字符串“A double:”引导;第二个数值输出一个int值,前面用“A int:”引导;第三个函数输出一个char字符,前面用“A char:”引导。在主函数中,分别用double,float,int,char和short型变量去调用Display()函数。
}
void main(void)
{
char str1[]="This is a test char array.Hello is here.";
char dest[]="Hello";
char*result=NULL;
result=findstring(str1,dest);
cout<<"The string is:"<<result<<endl;
函数类型是指函数返回值的数据类型,函数的返回值可以是指针、值或者引用。并不是所有的函数都有返回值,有的函数可以没有返回值,函数无返回值,要根据函数实现的功能来决定。如:
函数add()
int add (int a ,int b)
{
return a+b;
}
用来实现两个整数的求和,那么就需要返回值来返回求和结果,而print()只向屏幕上输出一些信息,就不需返回值,所以返回类型为void。
函数重载要求编译器能唯一确定调用一个函数时应执行哪个函数代码,即采取哪个函数实现。确定函数的实现时,要从函数参数的个数和类型上来区分。这就是说,进行函数重载时,要求同命名的函数的参数个数或参数类型不同;否则,无法实现重载。
举例:
#include<iostream.h>
int add(int,int);
{printf("A char:%c\n",cdata);}
void main(void)
{
int a=3;
double b=3.33;
float c=1.2;
char d='a';
short e=34;
Display(a);
Display(b);
Display(c);
{
int temp;
temp=a;a=b;b=temp;
}
void main(void)
{
int big=2002,small=0;
cout<<"values before function"<<big<<"and"<<small<<endl;
swap_values(big,small);
k++;//如果当前字符相等进行下一个字符比较
else
break;
if(j==m-1)
return &a[i];
}
}
throw "Not found!";
}
catch(char*str)
{cout<<"there is a exception is:"<<str<<endl;}
void print(char *str)
{
cout<<str;
}
所有的函数都有返回类型,如果没有显示指出函数的返回值类型,默认返回类型为int型
二、选择题
2、B
8、B
三、分析题
4、#include<iostream.h>
void swap_values(int a,int b)
一、问答题
1、什么是函数重载?如何进行函数重载?
答:函数重载指同一函数名可以对应多个函数的实现。eg:函数名add(),功能是求和即两个操作的和。其中,一个函数实现两个整型数的和,另一个函数实现两个浮点型数的和,再一个函数实现两个复数的和。每种函数实现对应一个函数体,函数名字相同,但函数的参数类型不同。这就是函数的重载。函数重载在类和对象的应用中尤为重要。
{
return a+b;
}
4、下列两个函数是否为重载?
void func(int a,int b);
int func(int a,int b);
答:不是重载。因为它们参数个数和类型都相同,只有返回值不同,返回值不足以区分两个函数。
7、什么是函数的类型和值?是否所有函数都有返回值?是否所有函数都有类型?