题目
https://pintia.cn/problem-set...
相关代码
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int read()
{
char ch = getchar();
int f = 1;
int x = 0;
while (ch < '0' || ch > '9') { if (ch == '-')f = 0; ch = getchar(); }
while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
return f ? x : x * -1;
}
int main()
{
char c;
// scanf("%c\n",&c); // 问题在于这里 一开始是用scanf的 但是有两个点通过不了 换成cin+getchar就过了
cin >> c;
getchar();
string s;
getline(cin,s);
if(c == 'C')
{
for(int i = 0;i < s.length();)
{
int count = 0;
char t = s[i];
while(s[i] == t)
{
i ++;
count ++;
}
if(count != 1)
{
printf("%d",count);
}
printf("%c",t);
}
}
else
{
for(int i = 0;i < s.length();i ++)
{
if(s[i] >= '0' && s[i] <= '9')
{
int temp = 0;
while(s[i] >= '0' && s[i] <= '9')
{
temp = temp * 10 + s[i] - '0';
i ++;
}
for(int j = 0;j < temp;j ++)
{
printf("%c",s[i]);
}
if(temp == 0)
{
printf("%c",s[i]);
}
}
else
{
printf("%c",s[i]);
}
}
}
printf("\n");
return 0;
}
你期待的结果是什么?实际看到的错误信息又是什么?
不太懂这是什么玄学. 问了几个人都说是一样的 一开始在网上找到了一位跟我一样是一格式错误一wa的博客. 但是并没有说明为什么. 后来看了几篇题解后尝试把scanf换成cin居然就过了. 请问scanf("%cn") 和 cin+getchar有什么区别吗 最后不是都为了吃掉换行符以便读取一行字符串吗
更新一下: 自己尝试了下 换成scanf("%c",&c); + getchar(); 可以ac题目. 想知道scanf("%cn",&c)里面的n 我的初衷是想用来读换行的 难道并不能读吗
cin的实时性较差,因为它使用了缓冲区,一般情况下满了才刷新的。
对于字符:cin的输入忽略空格和回车。scanf("%c",&i)等价于i = getchar(),换行符和回车都会被读入。
scanf是格式化输入,printf是格式化输出。
cin是输入流,cout是输出流。效率稍低,但书写简便。
格式化输出效率比较高,但是写代码麻烦。
流输出操作效率稍低,但书写简便。
以上程序是平时也遇过的,运行结果什么都没看到输出,输入一个整型比如3再按回车后ab同时显示出来了。 但是这样的情况并不是经常发生,是在一些比较大型的工程中偶尔出现,原因是字符a先到了缓冲区,但是没输出,等输入了i,b进入缓冲区后再一并输出的。流输入也是差不多的。
有帮助请点赞或采纳谢谢。