在更改字符的第二个if语句中,不能将‘!’改为‘!!’
#include
int main()
{
char ch; //读取输入
char cs[255]; //储存输入
char cs1[255]; //替换输入
int n=-1;
int l=0; //记录.替换次数
int m=0; //记录!替换次数
int q=0;
while((ch=getchar())!='#')
{
cs[n]=ch;
n++;
}
for(;q<=n;q++)
{
if(cs[q]=='.')
{
cs1[q]='!';
l++;
continue;
}
if(cs[q]=='!')
{
cs[q]='!';
cs[++q]='!';
m++;
continue;
}
cs1[q]=cs[q];
}
puts(cs1);
printf("\n一共替换了%d次",l+m);
}
你是想把英文句号替换成英文感叹号,英文感叹号替换为两个感叹号吗?并记录替换次数吗?
仅供参考,谢谢!
#include<stdio.h>
int main()
{
char ch; // 读取输入
char cs[255]; // 储存输入
char cs1[255]; // 替换输入
int n = 0; // 这里修改为0
int l = 0; // 记录.替换次数
int m = 0; // 记录!替换次数
int q = 0;
int q1 = 0;
while ((ch = getchar()) != '#' && n < 255)
{
cs[n] = ch;
n++;
}
for (; q < n; q++)
{
if (cs[q] == '.')
{
cs1[q1++] = '!';
l++;
//continue;
}
else if (cs[q] == '!')
{
cs1[q1++] = '!';
cs1[q1++] = '!';
m++;
//continue;
}
else
cs1[q1++] = cs[q];
}
cs1[q1] = '\0';
puts(cs1);
printf("\n一共替换了%d次", l + m);
}
for(int i=0;q<=n;q++,i++)
{
if(cs[q]=='.')
{
cs1[i]='!';
l++;
continue;
}
if(cs[q]=='!')
{
cs1[i]='!';
cs1[++i]='!';
m++;
continue;
}
}
循环替换写错了,修改如上。cs既然是存储就不应该被修改,当遇到一个!cs中的下一个也被修改为!,这样就有无穷多!好,直到越界崩溃。编译有错就把i的定义移动开头