讨论 / C++的AC程序
AC康凯 2012-11-09 04:12:00
点我顶贴 收藏 删除
#include <iostream>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

#include <ctime>

using namespace std;

int p1,p2,p3;

char l,r;

char str[50010];

int leng;

void init()

{

scanf("%d %d %d",&p1,&p2,&p3);

scanf("%s",str);

leng=strlen(str);

}

int small(char c)

{

if(c-toupper(c)==32)

return 1;

return 0;

}

void printalpha()

{

if(p3==1)

for(char i=l+1;i<r;i++){

for(int j=1;j<=p2;j++){

printf("%c",i);

}

}

else

for(char i=r-1;i>l;i--){

for(int j=1;j<=p2;j++){

printf("%c",i);

}

}

}

void printstar()

{

for(char i=l+1;i<r;i++){

for(int j=1;j<=p2;j++){

printf("*");

}

}

}

void judgedigit()

{

if(p1!=3){

printalpha();

}

else{

printstar();

}

}

void judgealpha()

{

if(small(l)){

if(p1==1)

printalpha();

else if(p1==2){

l-=32;

r-=32;

printalpha();

}

else

printstar();

}

else{

if(p1==2)

printalpha();

else if(p1==1){

l+=32;

r+=32;

printalpha();

}

else

printstar();

}

}

void expand(int t)

{

l=str[t-1],r=str[t+1];

if(isdigit(l)&&isdigit(r)&&l<r){

judgedigit();

}

else if((l<r)&&((l>='a'&&l<='z'&&r>='a'&&r<='z')||(l>='A'&&l<='Z'&&r>='A'&&r<='Z'))){

judgealpha();

}

else {

printf("-");

}

}

void make()

{

init();

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

if(str[i]=='-')

expand(i);

else {

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

}

}

}

int main()

{

make();

return 0;

}

查看更多回复
提交回复