1、字符串填充(默认形参)

问题描述 :

实验目的:学习函数的默认形参的使用。

内容:对于字符串,实现以下填充函数,并编写main函数测试这些函数:

1. padLeft函数:

功能:将一字符串左填充(在左边填充指定字符)至n个字符的长度,可指定填充字符,比如填充“*”,如果不指定填充字符,则填充空格。

提示:为实现以上功能,函数原型可为:

   void  padLeft(char string1[], char string2[],  int n, char padding=' ')

或:

    string padLeft(string string1, int n, char padding=' ')

这里使用了默认形参。

string1是原字符串,string2是填充之后的结果。

 

类似地,可编写右填充函数,函数原型参照padLeft。

 

2. padRight函数:

功能:将一字符串右填充至n个字符的长度,可指定填充字符,比如填充“*”,如果不指定填充字符,则填充空格。

 

main函数可参考如下进行编写:


int main()
{
 int num, length;
 char padding;
 string src, dest;

 while(cin >> num)
 {
  switch(num)
  {
   case 11:
    cin >> src >> length;
    cout << padLeft(src, length) << endl;
    break;
   case 12:
    cin >> src >> length >> padding;
    cout << padLeft(src, length, padding) << endl;
    break;
   case 21:
    cin >> src >> length;
    cout << padRight(src, length) << endl;
    break;
   case 22:
    cin >> src >> length >> padding;
    cout << padRight(src, length, padding) << endl;
    break;
  }
 }
 return 0;
}

 

输入说明 :

测试程序输入时,每组测试数据包含两行,第一行输入一个整数,指定需要完成的操作,第二行为该操作需要的数据。
对于每个整数对应的操作及其相应数据的输入方式如下(输入的字符串中不包含空格):
11:对应padLeft,第二行输入字符串string1、整数n,其间以空格分隔(由于没指定填充字符,所以填充空格)
异常处理:如果string1的长度大于等于n,则不填充任何字符。

12:对应padLeft,第二行输入字符串string1、整数n、一个填充字符,其间以空格分隔(填充字符不为空格)
异常处理:如果string1的长度大于等于n,则不填充任何字符。

21:对应padRight,第二行输入字符串string1、整数n,其间以空格分隔(由于没指定填充字符,所以填充空格)
异常处理:如果string1的长度大于等于n,则不填充任何字符。

22:对应padRight,第二行输入字符串string1、整数n、一个填充字符,其间以空格分隔(填充字符不为空格)
异常处理:如果string1的长度大于等于n,则不填充任何字符。

 

输出说明 :

对于每组测试数据,输出对应的结果。如果结果为空字符串,则输出一个空行。

每行行首与行尾无多余空格,第一行之前与最后一行之后无多余空行。

 

输入范例 :

11
abcdef 4
12
abcdef 8 *
21
abcdef 6
22
abcdef 10 .

输出范例 :

abcdef
**abcdef
abcdef
abcdef....

题解代码: 

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<algorithm>
#include<set>
#include<vector>
#include<queue>
using namespace std;
string padLeft(string string1, int n, char padding=' ')
{
    string string2="";
    int i;
    string hc;
    hc+=padding;
    int lon=string1.length();
    for(i=0;i<(n-lon);i++)
        string2+=hc;
    string2+=string1;
    return string2;
}
string padRight(string string1, int n, char padding=' ')
{
    string string2=string1;
    int i;
    string hc;
    hc+=padding;
    int lon=string1.length();
    for(i=0;i<n-lon;i++)
        string2+=hc;
    return string2;
}
int main()
{
 int num, length;
 char padding;
 string src, dest;

 while(cin >> num)
 {
  switch(num)
  {
   case 11:
    cin >> src >> length;
    cout << padLeft(src, length) << endl;
    break;
   case 12:
    cin >> src >> length >> padding;
    cout << padLeft(src, length, padding) << endl;
    break;
   case 21:
    cin >> src >> length;
    cout << padRight(src, length) << endl;
    break;
   case 22:
    cin >> src >> length >> padding;
    cout << padRight(src, length, padding) << endl;
    break;
  }
 }
 return 0;
}

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值