C++课后习题上机

  • Post author:
  • Post category:其他


0922上机

题目1:函数重载实现两个数交换

1、题目描述:

编写C++风格的程序,建立swap()函数,重载该函数,分别用引用和指针做形参,实现两个整型数据的互换。

2、输入描述

两个整数

3、输出描述

依次调用两个重载函数后的两个整数值

– 输入样例

45 90

– 输出样例

引用作参数调用的结果:90 45

指针作参数调用的结果:45 90

我的答案:

#include<iostream>

using namespace std;

void swap(int &a,int &b)  //引用,交换两个变量

{

int m;

m=a;

a=b;

b=m;

}

void swap(int *a,int *b)//利用指针,交换两个变量,,形参就是变量的地址,使用时候要取地址

{

int m;

m=*a;

*a=*b;

*b=m;

}

int main()

{

int a,b;

cin>>a>>b;

swap(a,b);

cout<<“引用作参数调用的结果:”<<a<<” “<<b<<endl;

swap(&a,&b);

cout<<“指针作参数调用的结果:”<<a<<” “<<b<<endl;

return 0;

}

题目2:字符串打印

题目要求:

要求1:输入一个字符串,然后将每一个字符打印显示,中间加一个空格。

要求2:字符串的打印输出要写成函数。

– 输入举例:abcd

– 输出举例:a b c d

我的答案:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

void print_string(const char* str)

{

int len = strlen(str);

for (int i = 0; i < len; i++)

{

if (str[i] == 0)

break;

printf(“%c “, str[i]);

}

}

int main()

{

const char* N=”abcd”;

print_string(N);

return 0;

}

#include<iostream>

using namespace std;

void Tra(string str)

{

for(size_t i=0;

i<str.length();i++)

{

cout<<str[i]<<‘ ‘;

}

}

int main()

{

string str;

cout<<“请输入字符串:”<<endl;

cin>>str;

Tra(str);

return 0;

}

题目3:使用数组实现求平均分

题目描述:请输入5个同学C语言的成绩,求平均分

题目要求1: 5 这个数,全代码只有一处定义。

输入(成绩是自己输入的浮点数值):

输出(结果自动运算得出):

我的答案:

#include <iostream>

using namespace std;

int main(){

double *ds = new double[5];

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

cout << “请输入第” << i+1 <<“个同学的成绩:”;

cin >> ds[i];

}

cout << “平均成绩为:” <<(ds[0]+ds[1]+ds[2]+ds[3]+ds[4])/5.0 << endl;

return 0;

}

题目4:采用指针法从键盘输入10个整型数,并输出其中的最大值。

要求:输入数据是键盘输入的,10 全局只定义一次。

输入:

输出:

我的答案:

#include <iostream>

using namespace std;

const int MAXNUM = 10;

int main(){

int *num = new int[MAXNUM];

int maxId = 0;

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

cout << “请输入第” << i+1 << “个数:”;

cin >> num[i];

if(num[i]>num[maxId])

maxId = i;

}

cout << “max = ” << num[maxId] << endl;

return 0;

}

0925上机

一.填空题(共1题,25分)

1.(填空题)

usingnamespacestd;

#include<math.h>

int&f(int&i)

{

+=10;

returni;

}

intmain()

{

intk=0;

int&m=f(k);

cout<<k<<endl;

m=20;

cout<<k<<endl;

return0;

}

我的答案:

(1)10

(2)20

二.简答题(共3题,75分)

2.(简答题)

编写一个C++风格的程序,输入两个整数,将它们由小到大顺序输出。

要求1:使用变量的引用。

要求2:函数名称为:voidcompare(int&ileft,int&iright)

执行结果参考:

我的答案:

#include<iostream>

usingnamespacestd;

intmain()

{

voidcompare(int&ileft,int&iright);

intival,jval;

cout<<“请输入两个值:”<<endl;

cin>>ival>>jval;

cout<<“初始值:”<<“ival=”<<ival<<“”<<“jval=”<<jval<<endl;

if(ival>jval)compare(ival,jval);

cout<<“排序后结果为:”<<“ival=”<<ival<<“”<<“jval=”<<jval<<endl;

return0;

}

voidcompare(int&al,int&bl)

{

inttemp;

temp=al;

al=bl;

bl=temp;

}

3.(简答题)

编写一个C++风格的程序,建立一个被称为:my_scroot()的函数,返回其参数的二次方根。

重载my_scroot()函数3次,让它返回整数、长整数与双精度数的二次方根。

提示:计算二次方根,可以使用sqrt()库函数。

提示:库函数的头文件可以借助:cplusplus.com网站查看。

我的答案:

#include<iostream>

#include<cmath>

usingnamespacestd;

doublemy_scroot(inti)

{

returnsqrt((double)i);

}

doublemy_scroot(longl)

{

returnsqrt((double)l);

}

doublemy_scroot(doubled)

{

returnsqrt((double)d);

}

intmain()

{

inti=11;

longl=1111;

doubled=11.11;

cout<<“i的二次方根是:”<<my_scroot(i)<<endl;

cout<<“l的二次方根是:”<<my_scroot(l)<<endl;

cout<<“d的二次方根是:”<<my_scroot(d)<<endl;

return0;

}

4.(简答题)

编写一个C++风格的程序,解决百钱问题:

将一元人民币换成1、2、5分的硬币,

有多少种换算方法?

我的答案:

#include<iostream>

usingnamespacestd;

intmain()

{

inti,j,sum=0;;

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

for(j=0;j<=50;j++)

if(100-5*i-2*j>=0)

{

sum++;

cout<<100-5*i-2*j<<“\t”<<j<<“\t”<<i<<endl;

}

cout<<“sumis”<<sum<<endl;

return0;

}

sumis541

所有习题完整版PDF

https://download.csdn.net/download/lornaleo/75413292



版权声明:本文为lornaleo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。