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