菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
223
0

PTA 6翻了

原创
05/13 14:22
阅读数 49603
 

666.JPG

“666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”,因为这是 3 个 “9”!

本题就请你编写程序,将那些过时的、只会用一连串“6666……6”表达仰慕的句子,翻译成最新的高级表达。

输入格式:

输入在一行中给出一句话,即一个非空字符串,由不超过 1000 个英文字母、数字和空格组成,以回车结束。

输出格式:

从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27。其他内容不受影响,原样输出。

输入样例:

it is so 666 really 6666 what else can I say 6666666666
 

输出样例:

it is so 666 really 9 what else can I say 27
 1 #include <stdio.h>
 2 #include <string.h> 
 3 int main(){
 4     char s[1001];
 5     int i,j;
 6     int count=0,flag= 0;
 7     gets(s);
 8     for(i=0;i<strlen(s);i++){
 9         if(s[i]-'0'==6){    //判断是否为6,然后计数,修改标记
10             count++;
11             flag = 1;
12         }
13         if(s[i]-'0'!=6 && flag==1){    //不为6的时候,且标记已被修改为1,对6的个数进行判断输出
14             if(count<=3){
15                 for(j=0;j<count;j++)
16                     printf("6");
17             }else if(count>3 && count<=9){
18                 printf("9");
19             }else if(count>9){
20                 printf("27");
21             }
22             count = 0;
23             flag = 0;
24         }
25         if(s[i]-'0'!=6 && flag==0)    //输出不为6的字符
26             printf("%c",s[i]);    
27     }
28     //处理字符串结尾出现6的情况(重复代码可以写一个函数中)
29     if(count<=3){
30         for(j=0;j<count;j++)
31             printf("6");
32     }else if(count>3 && count<=9){
33         printf("9");
34     }else if(count>9){
35         printf("27");
36     }
37     printf("\n");
38     return 0;
39 }

 

 

发表评论

0/200
223 点赞
0 评论
收藏