请教一个简单C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 11:46:42
#include "stdio.h"
#define N 13
main()
{
int i,j; char a[N];
for(i=0;i<N;i++)
scanf("%s",&a[i]);
for(i=0;i<N-1;i++)
{ j=i+1;
if(a[i]=='c')
{
a[j]=a[i];
a[i]='x';
}
}
for(i=0;i<N;i++)
printf("%s",a[i]);
}
程序目的是从键盘输入字符串“abccdce",再在所有字符‘c'前面插入字符'x'。再输出字符串。但我运行后。输入字符串,但没有输出,想问一下,是哪里出了问题。还有,这个程序还有其它错误吗?谢谢

1.循环上瘾啊
输入串这样
scanf("%s",a);
输出串这样
printf("%s",a);
2.for(i=0;i<N-1;i++) /*没有必要走那么远,i<strlen(a)就足够了(需要包含头文件string.h)*/
{ j=i+1;
if(a[i]=='c')
{
a[j]=a[i]; /*覆盖后面的一个字符,这不是插入,要插入,后面的元素都要下移*/
a[i]='x';
}
}

首先字符的输入可以是
for(i=0;i<N;i++) 或 scanf("%s",a);
scanf("%c",&a[i]);
还有就是你插入一个字符后,字符的长度改变了,不再是n了,因此每插入一个后面的字都要向后移一位,并n的值加+1;
具体的还是慢慢琢磨,自己写出来对自己有提高~~

使用动态分配一个数组
长度定义的大点应该就可以了

#include"stdio.h"
#define N 10
main()
{
int i,j,p;
char a[N];
for(i=0;i<6;i++)
{
scanf("%c",&a[i]);
for(i=0;i<6;i++)
{
if(a[i]=='c')
{
p=p+1;
for(j=6+p;j>i;j++)
{
a[j]=a[j-1];
}
}
a[i]='x';