C++考试第三章 (第三天)

/*

函数和函数模板

1.函数的参数以及传递方式

参数参数传地址值和传地址对象对象指针对象引用也可以使用const限制,函数的参数还可以设计成默认形式。

3.1.1对象作为函数参数。

3.1.2对象指针作为函数参数

3.1.3引用作为函数参数。

3.5间接引用数组的例子

3.1.4默认参数可以多于一个但必须放在参数序列的后面,默认参数需要致命一个特定值在其之前的所有参数都必须赋值。

3.1.5使用const保护数据

3.2返回引用的函数。

3.2.3返回指针函数。

3.2.3返回对象的函数。

3.2.4函数返回值作为函数的参数

3.3内联函数

3.4函数的重载和默认参数

3.5函数模板

3.16使用类模板作为函数模板参数的程序

3.17使用显示规则和关键字typename编制函数模板的例子

作业题

1.函数原型声明C++函数double abc (double,char)表示一个返回值是double的函数。参数一个是double一个是char

2.inline

3.三种对象引用对象指针可以当参数传递

4.int * method(char ,int )

二。A string input(const int);不允许干煸函数参数的声明

2.重载的正确C函数的返回值可以相同

3.template

三。改错题

1.T不是变量而是一种类型不能做运算。

2.y没有类型

3.const是不可以更改参数。可以使用。

四编程题

1.求方程的根并且写出判断。

2.定义函数up(ch)如果字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变,要求在短小而

完全的程序中显示程序怎样被调用?

3.编写主程序调用带实数r和整数n两个参数的函数并输出r的n次幂。

4.编写有字符参数C和整形参数N的函数让他们显示出由字符C组成三角形其中方式为第一行有

1个字符C第2行有2个字符C等等。

5.编写一个ieqiu字符串长度的函数strlen()再用strlen()函数编写一个函数revers(s)的倒序递归程序使字符串s逆序。

6.用函数模板实现3个数值中按最小值到最大值排序的程序。

7.利用函数模板设计一个求数组元素中和的函数。

8.重载上题中的函数模板,使他能够进行两个数组的求和。

*/

/* 7.利用函数模板设计一个求数组元素中和的函数。

8.重载上题中的函数模板,使他能够进行两个数组的求和。

#include

using namespace std;

template

T sum(T a[],int n)

{

int i;

T s=0;

for (i=0;i

s=s+a[i];

}

return s;

}

template

T sum(T a[],int n,T b[],int m)

{

return sum(a, n)+sum(b, m);

}

int main()

{

int a[5]={1,2,3,4,5};

int b[10]={1,2,3,4,5,6,7,8,9,10};

int s1=sum(a, 5);

int s2=sum(a, 5, b, 10);

cout<

cout<

return 0;

}

*/

/* 6.用函数模板实现3个数值中按最小值到最大值排序的程序。

#include

using namespace std;

typedef double Array[8];

template

void sort(T a,T b,T c)

{

T Array[3],temp;

int i,j;

Array[0]=a;

Array[1]=b;

Array[2]=c;

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

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

if (Array[j]>Array[j+1]) {

temp=Array[j];

Array[j]=Array[j+1];

Array[j+1]=temp;

}

}

}

cout<

}

int main()

{

sort(1,8,4);

}

*/

/* 5.编写一个ieqiu字符串长度的函数strlen()再用strlen()函数编写一个函数revers(s)的倒序递归程序使字符串s逆序

#include

using namespace std;

int strlen(char * str)

{

int len=0;

while (str[len]!='\0') {

len++;

}

return len;

}

void reverse(char * b)

{

char c;

int j,len;

len=strlen(b);

j=len/2-1;

while (j>=0) {

c=*(b+j);

*(b+j)=*(b+len-j-1);

*(b+len-j-1)=c;

j--;

}

b[len]='\0';

}

intmain()

{

char str[]={"123456789"};

cout<

reverse(str);

cout<

}

。*/

/*4.编写有字符参数C和整形参数N的函数让他们显示出由字符C组成三角形其中方式为第一行有

1个字符C第2行有2个字符C等等。

#include

using namespace std;

void print_ln(char c,int n)

{

int i,j;

for (i=0; i

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

cout<

}

cout<

}

}

int main()

{

print_ln('a', 10);

}

*/

/**编程题

3.3.编写主程序调用带实数r和整数n两个参数的函数并输出r的n次幂

#include

using namespace std;

#include

double power(double a,int b)

{

int i;

double result =1.0;

for (i=0; i

result =result*a;

}

returnresult;

}

int main()

{

double r;

int n;

cout<<"r=";

cin>>r;

cout<<"n=";

cin>>n;

cout<<"r的n次幂是"<< power(r,n);

}

*/

/*编程题

2.定义函数up(ch)如果字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变,要求在短小而

完全的程序中显示程序怎样被调用?

#include

using namespace std;

char up(char c)

{

if (c>=97&&c<=123) {

return c-32;

}

else

{

return c;

}

}

int main()

{

char c[4]={'a','S','D','T'};

for (int i=0; i<4; i++) {

cout<

cout<

}

return 0;

}

*/

/*四编程题1.求方程的根并且写出判断。

#include

#include

using namespace std;

//a>b

void equaltion_1(int a,int b,int c)

{

double x1,x2,temp;

temp =b*b-4*a*c;

x1=(-b+sqrt(temp))/(2*a*1.0);

x2=(-b-sqrt(temp))/(2*a*1.0);

//两个不相等的实根

cout<

}

//a==b

void equaltion_2(int a,int b,int c)

{

double x1,x2,temp;

temp =b*b-4*a*c;

x1=(-b+sqrt(temp))/(2*a*1.0);

x2=x1;

cout<<"两个相等的实根"<

cout<

}

//a

void equaltion_3(int a,int b,int c)

{

double temp,real1,real2,image1,image2;

temp=-(b*b-4*a*c);

real1=-b/(2*a*1.0);

real2=real1;

image1=sqrt(temp);

image2=-image1;

}

int main()

{

int a, b, c;

double temp;

cin>>a>>b>>c;

temp =b*b-4*a*c;

if (temp>0) {

equaltion_1(a, b, c);

}

if (temp==0) {

equaltion_1(a, b, c);

}

if (temp<0) {

equaltion_1(a, b, c);

}

}**/

/* 3.4函数的重载和默认参数引出3.5函数模板conplex模板类参数的重载使用

#include

#include

using namespace std;

template

T ma7(T m1,T m2)

{

return (m1>m2)?m1:m2;

}

template

void printer(complex a)

{

string str1("dsad"),str2="dssa";

cout<

}

int main()

{

cout<< ma7(2,3 );

complexnum(1,2);

complexnum1(2,3);

printer(num);

printer(num1);

return 0;

}

*/

/* 3.3内联函数除了循环和switch的语句外其他函数都可以称为内联函数。

#include

using namespace std;

int isnumber(char c){

return( c>'0'&&c<='9')?1:0;

}

int main()

{

char c;

cin>>c;

if (isnumber(c)) {

cout<<"是数字字符";

}

else

{

cout<<"不是数字字符";

}

return 0;

}

*/

/* 3.2.4函数返回值作为函数的参数

#include

using namespace std;

int max(int,int);

int main()

{

cout<

}

int max(int a,int b)

{

return (a>b)?a:b;

}

*/

/* 3.2返回引用的函数

3.2.3返回指针函数。

3.10返回对象

#include

using namespace std;

int a[] ={2,4,6,8};

int& index(int i);

float * input(int &);

string inputs(const int);

int main()

{

index(3)=16;

cout<

int num;

float * data;

data=input(num);

if (data) {

for (int i=0; i

cout<

}

}

delete data;

cout<<"请输入一个整数";

int n;

cin>>n;

cout<

}

int& index(int i)

{

return a[i];

}

float * input(int & n)

{

cout<<"请输入一个整数";

cin>>n;

if (n==0) {

return NULL;

}

float * buf=new float[n];

if (buf) {

return NULL;

}

for (int i=0; i<4; i++) {

cin>>buf[i];

}

return buf;

}

string inputs(const int n)

{

string s1,s2;

for (int i=0; i

cin>>s1;

s2=s2+s1+"";

}

return s2;

}

。*/

/*

3.1.5使用const保护数据主要是表示参数不能修改原函数没有修改。

#include

#include

using namespace std;

void change(const string&);

int main()

{

string str("Can you change it");

change (str);

cout<

return 0;

}

void change(const string&s)

{

string s2=s+"No";

cout<

} */

/* 3.1.4默认参数可以多于一个但必须放在参数序列的后面,默认参数需要致命一个特定值在其之前的所有参数都必须赋值。设计一个根据参数数量输出信息的函数

#include

using namespace std;

void Display(string s1,string s2="",string s3="");

int main()

{

string str1("现在"),str2("过去"),str3("将来");

Display(str1,str2,str3);

Display(str3,str1);

Display(str2,str3);

return 0;

}

void Display(string s1,string s2,string s3)

{

if (s2==""&&s3=="") {

cout<

}else if (s3=="" && s2!="")

{

cout<

}

else

{

cout<

}

}

*/

/*

3.5间接引用数组的例子

#include

using namespacestd;

typedef double Array[8];

void avccout(Array &b,int n)

{

double ave(0);

intcount(0);

for (int j=0; j

ave=ave+b[j];

if (b[j]<60) {

count++;

}

//平均数

//不及格的人数

b[n-2]=ave/(n-2);

b[n-1]=count;

}

}

int main()

{

Array b={12,1324,3214324,43,9,0};

avccout(b,8);

cout<

return 0;

}

*/

/*

3.1.1对象作为函数参数。

3.1.2对象指针作为函数参数

3.1.3引用作为函数参数。

#include

#include

using namespace std;

//不会改变原来对象数据成员值的例子。

void swap(string,string);

//指针作为参数

void swap1(string *,string *);

//引用作为函数参数

void swap2(string&,string &);

int main()

{

string str1("现在"),str2("过去");

cout<

swap(str1,str2);

cout<

swap1(&str1, &str2);

cout<

swap2(str1, str2);

cout<

return 0;

}

void swap(string s1,string s2)

{

string temp=s1; s1=s2; s2=temp;

cout<

}

void swap1(string * s1,string * s2)

{

string temp=*s1; *s1=*s2;*s2=temp;

cout<<*s1<<*s2<

}

void swap2(string& s1,string & s2)

{

string temp=s1; s1=s2;s2=temp;

cout<

}*/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容