C语言一道上机题

来源:百度知道 编辑:UC知道 时间:2024/05/09 18:30:18
fun的功能是在形参s所指字符串中的每个数字字符之后插入一个*号

这个程序看了好久都没看懂,思路我大概清楚,就是遍历字符串,发现数字字符,然后把数字字符后面的内容向后移动一位,空出来的位置插入一个“*”,但程序实在看不懂每一步都代表什么意思,希望大虾给讲一讲
#include <stdio.h>
void fun(char *s)
{
int i, j, n;
for (i=0; s[i]!='\0'; i++)
if (s[i]>='0'&&s[i]<='9')
{
n = 0;
while (s[i+1+n] != 0)
n++;
for (j=i+n+1; j>i; j--)
s[j+1] = s[i];
s[j+1] = '*';
i = i+1;
}
}
main()
{
char s[80] = "ba3a54cd23a";
printf("\nThe original string is : %s\n", s);
fun(s);
printf("\nThe result is : %s\n", s);
}

#include <stdio.h>
void fun(char *s)
{
int i, j, n; //定义变量
for (i=0; s[i]!='\0'; i++) //将字符串从头到尾遍历
if (s[i]>='0'&&s[i]<='9')
{
n = 0;
while (s[i+1+n] != 0)
n++;
for (j=i+n+1; j>i; j--)
s[j+1] = s[i];
s[j+1] = '*';
i = i+1;
}
} //这个for语句的意思就是将第一个数学字符和它后面的的第一个非0字符之间的所有字符赋值为那个数字,并将最后一个字符赋值为“*”
main()
{
char s[80] = "ba3a54cd23a";
printf("\nThe original string is : %s\n", s);
fun(s);
printf("\nThe result is : %s\n", s);
}

#include <stdio.h>
void fun(char *s)
{
int i, j, n;
for (i=0; s[i]!='\0'; i++)
if (s[i]>='0'&&s[i]<='9') //测试是否为数字字符
{
n = 0;//定义一个计数器
while (s[i+1+n] != 0)
n++; //用计数器记住数字后的字符长度
for (j=i+n+1; j>i; j--)
s[j+1] = s[i];//把所有字符往后移一个