蓝桥杯备赛第二天

P8706刷题题目如图所示

题目类型:模拟题

这种题可能以前学习c的时候出现过,但是当时学的时候不用心,现在就是为了当初的不细心买单,哈哈,感觉是有次考出了,当时就没做出来!好了,回归正题!

解法一:最能想到的思路就是输入以后,通过字符串作为结束的标志,最开始用的是while()用’/0’作为结束的标志,但是这种无法确定数组的循环,所以需要加一个对数组长度求和的标志,这里我没想到,看了标准答案后,有个大佬与我有类似的思路,大佬用了string中的size(),专门学了这个,还有个近似标志length(),两者用法类似。

具体参考c/c++中sizeof()、strlen()、length()、size()详解和区别_c数组长度函数length-CSDN博客

然后就是控制循环,我的思路是判断与字符1~9的关系,因为我觉得0没用,现在觉得1也不太有用。有意思的一点怎么计算字符串中数字的大小,这点知识我又忘了,所以当时想到的是采用类型转换,但是由于不会的太多,所以选择了直接看标准答案来节省时间!大佬采用了,用对应的字符-’0’来求出长度,菜狗直呼妙极了!最后自己根据思路写出来了!

代码如下:#include

using namespace std;

int main()

{

string str;

getline(cin,str);

int i,j;

for(i=0;i<=str.size();i++)

{

if(str[i]>='1'&&str[i]<='9')

for(j=0;j

cout<

else

cout<

}

return 0;

}

大佬思路:大佬中间采用了超出数字字符所在范围的操作,我觉得不如我这个简洁;

解法二:大佬二采用了改进点在用了while()循环来控制函数,同时增加了一个作为储存输出次数的函数,并实现输出0字符对应的数字!

char ch=i[p];

        if(i[p+1]>='0'&&i[p+1]<='9'){

            tmp=i[p+1]-48;

            p++;

        }else{

            tmp=1;

        }

        while(tmp--)cout<

        p++;

相对题解不多的模拟题!

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: