#include "stdio.h"
#include "string.h"
void main()
{char a[80];
int i,j;
printf("Please input:");
gets(a);
for(i=0;i!='\0';i++)
if(a[i]>=48&&a[i]<=57)
{for(j=strlen(a)+2;j>i;j--)
a[j]=a[j-1];
a[i]='$';}
printf("result:");
puts(a);
}
执行这个程序,发现输出结果和输入内容是一样的,没人任何改变。谁能告诉我是错在哪里了?
#include "stdio.h"
void main()
{char a[80],b[80];
int i,j;
printf("Please input:");
gets(a);
for(i=0,j=0;i!='\0';i++,j++)
if(a[i]>=48&&a[i]<=57)
{b[j++]=a[i];a[i]='$';}
else
b[j]=a[i];
strcpy(a,b);
printf("result:");
puts(a);
}
这是另外一种算法,可是现在就干脆什么输出结果都没有,这种算法又错在哪里了呢?
#include "stdio.h"
#include "string.h"
void main()
{char a[80];
int i,j;
printf("Please input:");
gets(a);
for(i=0;a[i]!='\0';i++) //应该判断a[i]这个字符.而不是i是不是字符串结束符.
if(a[i]>=48 && a[i]<=57)
{
for(j=strlen(a)+2;j>i;j--)
a[j]=a[j-1];
a[i]='$';
i++; //将数字后移1位. 所以加上$后,i要加1. 否则下次循环判断if的时候,a[i]还是数字.
}
printf("result:");
puts(a);
}
第二种:
#include "stdio.h"
#include "string.h"
void main()
{
char a[80],b[80];
int i,j;
printf("Please input:");
gets(a);
for(i=0,j=0;a[i]!='\0';i++,j++) //同样.判断数组元素.
if(a[i]>=48 && a[i]<=57)
{
b[j++]='$'; //如果是数字.就先将$放到数组中.
b[j]=a[i]; //然后再将该数字放到数组中.
}
else
b[j]=a[i];
b[j]='\0'; //加上字符串结束符
strcpy(a,b);
printf("result:");
puts(a);
}