在字符串中每个数字字符前添加$

#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

img

这样子好像更简单些:

#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