设计一个函数print打印字符串,如果只传string型参数s,则字符串长度跟10比较,大于10,打印前10个字符,小于10,全部输出s;如果传string型参数s和int型n,则字符串长度跟n比较,大于n,打印前n个字符,小于n,全部输出s。
代码:
#include<iostream>
#include<string>
using namespace std;
void printstr(string s)
{
string str;
if(s.length()>10)
str=s.substr(0,10);
else
str=s.substr(0,s.length());
cout<<s<<endl;
}
void printstr(string s,int n)
{
string str;
if(s.length()<n)
str=s.substr(0,s.length());
else
str=s.substr(0,n);
cout<<str<<endl;
}
int main()
{
string str1= "abcdefg";
printstr(str1);
cout<<"打印成功"<<endl;
int nPos;
cout<<"请输入nPos:";
cin>>nPos;
string str2="abcdegf";
printstr(str2,nPos);
cout<<"打印成功"<<endl;
return 0;
}
输出结果:
输入10个人的名字,按从大到小排序输出。
#include<iostream>
#include<algorithm>
using namespace std;
bool compare(int a,int b)
{
return a>b;
}
int main()
{
char a[10];
for(int i=0;i<10;i++)
cin>>a[i];
sort(a, a+10, compare);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
模仿二维数组,使用引用调用和引用返回,把函数代码补完整。
#include<iostream>
#include<iomanip>
using namespace std;
struct twodim{
int r;
int c;
float *a;
};
bool get_twodim(twodim&s,int row,int col)
{
s.c = col;
s.r = row;
s.a = new float[s.r *s.c ];
return s.a;
//初始化数组
}
float & val(twodim&s, int i,int j)
{
return s.a[i*s.c+j];
//返回i行j列的值
}
void free_twodim(twodim &s)
{
delete []s.a;
//释放数组空间
}
int main()
{
struct twodim s;
int i,j;
get_twodim(s,3,4);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
val(s,i,j)=i+j;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
cout<<setw(5)<<val(s,i,j);
cout<<endl;
}
free_twodim(s);
return 0;
}
结果分析
任务1:
打印出字符串,若输入npos,则会输出字符串前npos个字符;
任务2:
输入十个名字,以空格分开,输出结果为从大到小排序的十个名字;
任务3:
模拟二维数组,使用引用调用和引用返回,输出结果。