#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#if(1)
void main()
{
int i,n;
int count;
char str[100];
printf("please enter one sentence:\n");
scanf("%s",str);
count=strlen(str);
for(i=0;i<=count-1;i++)
{
if(str[i]>'0'&&str[i]<'9')
{
for(n=count-1;n<=i;n--)
{
str[n+1]=str[n];//为什么这一步元素后移无法实现,求错误,求解
}
str[i]='$';
}
}
str[i]='\0';
printf("\n");
printf("修改后的字符串:\n");
count=strlen(str);
for(i=0;i<=count-1;i++)
{
printf("%c",str[i]);
}
printf("\n");
system("pause");
}
#endif
帮你改了一下,对比一下
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#if(1)
void main()
{
int i, n;
int count, extnum = 0;
char str[100];
printf("please enter one sentence:\n");
scanf("%s", str);
count = strlen(str);
for (i = 0; i <= count + extnum - 1; i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
extnum++;
for (n = count + extnum - 1; n >= i; n--)
{
str[n + 1] = str[n];//为什么这一步元素后移无法实现,
}
str[i] = '$';
i += 1;
}
}
str[count + extnum] = '\0';
printf("\n");
printf("修改后的字符串:\n");
count = strlen(str);
for (i = 0; i <= count - 1; i++)
{
printf("%c", str[i]);
}
printf("\n");
system("pause");
}
#endif
这样子好像更简单些:
#include<stdio.h>
int main()
{
char str[100], res[200];
gets(str);
for (int i=0,j=0;j<100;i++,j++){
res[i] = str[j];
if (str[j]>='0'&&str[j]<='9'){
res[i] = '$';
res[++i] = str[j];
}
}
printf("%s",res);
return 0;
}
修改后如下
你写的n>=i应该改成n>i,还有别的也改了
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#if(1)
void main()
{
int i,n;
int count;
char str[100];
printf("please enter one sentence:\n");
scanf("%s",str);
count=strlen(str);
for(i=0; i<=count-1; i++)
{
if(str[i]>='0'&&str[i]<='9')
{
for(n=count; n>i; n--)
{
str[n]=str[n-1];//为什么这一步元素后移无法实现,求错误,求解
}
str[i]='$';
count++;
i++;
}
}
printf("\n");
printf("修改后的字符串:\n");
// count=strlen(str);
for(i=0; i<=count-1; i++)
{
printf("%c",str[i]);
}
printf("\n");
system("");
}
#endif