C语言数组 输入一个字符串,并将其中的字符’a’用字符串”shu”替代后输出。如输入为”123abcaHello”,

#include<stdio.h>intmain(){inti,j,k,m,n=0;chara[81],s[4]="shu";printf("请输入您要输入的字符串长度:... #include <stdio.h>
int main()
{
int i,j,k,m,n=0;
char a[81],s[4]="shu";
printf("请输入您要输入的字符串长度:");
scanf("%d",&m);
printf("请输入您要输入的字符串:");
for(i=0;i<m;i++)
scanf("%c",&a[i]);
for(i=0;i<m;i++)
{
if(a[i]=='a')
{ n=n+2;
for(j=m-1;j<i;j--)
a[j+2]=a[j];
j=i;
a[j]=s[0];
a[j+1]=s[1];
a[j+2]=s[2];
}
}
for(k=0;k<m+n;k++)
printf("%c",a[k]);
}

虽然这个程序写得冗长了点,但我想知道哪里错了在基础上应该怎么改 为什么我输入
m=5 a[i]=asdfg 会是shuf
展开
 我来答
brucenature
2013-05-11 · TA获得超过1146个赞
知道小有建树答主
回答量:197
采纳率:100%
帮助的人:231万
展开全部

#include <stdio.h>

int main()

{

 int i,j,k,m,n=0;

    char a[81],s[4]="shu";

    printf("请输入您要输入的字符串长度:");

    scanf("%d",&m);

    printf("请输入您要输入的字符串:");

getchar();    //为消除回车键的影响

    for(i=0;i<m;i++)

    scanf("%c",&a[i]);

    for(i=0;i<m;i++)

   {

     if(a[i]=='a')

     {                              // n=n+2, 删除了,没什么用

        for(j=m-1;j>i;j--)    // 由j<i改为j>i,表示i之后的都要移动。

        a[j+2]=a[j];

        j=i;

        a[j]=s[0];

        a[j+1]=s[1];

        a[j+2]=s[2];

m=m+2;                    // 添加,添加字符后更新字符总数

     }

    }

     for(k=0;k<m;k++)    //m+n改为m,m已经表示字符总数

     printf("%c",a[k]);

printf("\n");            //输出完字符后换行

}


123abcaHello的结果为:

更多追问追答
追问
j>I我一开始改了但最后输出都会少个o,我觉得是getchar的问题,
但是“getchar(); //为消除回车键的影响”能具体解释下么,回车为什么会影响 getchar在这里的具体作用是什么,因为刚刚学所以不是很明白?谢谢
追答
输完字符串长度后有一个回车键,回车键是一个特殊的字符,会在第二个scanf中当作一个字符输入,所以输入的字符的有效数量就被占掉一个,最后一个字符不会被读取。所以用getchar()先读取回车键,消除对后续的scanf的影响。
听不清啊
高粉答主

2013-05-11 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部
#include <stdio.h>
int main()
{
int i,j,k=0,m,n=0;
char a[81],s[4]="shu";
printf("n:");
scanf("%d",&m);
fflush(stdin);
printf("string:");
for(i=0;i<m;i++)
{
scanf("%c",&a[k]);
if(a[k]=='a')
for(j=0;j<3;j++)a[k++]=s[j];
else k++;
}
for(j=0;j<k;j++)
printf("%c",a[j]);
printf("\n");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式