c语言程序怎么修改啊?
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。例如,字符串中的内容为:*******A*BC*DEF*G**...
假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。
例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时, 不得使用C语言提供的字符串函数。
注意: 部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*')
{
i++;
}
k=i;
for(;a[i]!='\0';j++,i++)
{a[j]=a[i];
}
for(i=0;i<=k;i++,j++)
{ a[j]='*';
a[j]='\0';
}
}
main()
{ char s[81],*p; int n=0;
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after moveing:\n");puts(s);
}
为什么不能实现???? 展开
例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时, 不得使用C语言提供的字符串函数。
注意: 部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*')
{
i++;
}
k=i;
for(;a[i]!='\0';j++,i++)
{a[j]=a[i];
}
for(i=0;i<=k;i++,j++)
{ a[j]='*';
a[j]='\0';
}
}
main()
{ char s[81],*p; int n=0;
printf("Enter a string:\n");gets(s);
fun( s );
printf("The string after moveing:\n");puts(s);
}
为什么不能实现???? 展开
4个回答
展开全部
The string after moveing:
A*BC*DEF*G************
Press any key to continue
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*' && a[i+1]=='*')
{
i++;
}
i++;
k=i;
for(;a[i]!='\0';j++,i++)
{
a[j]=a[i];
}
for(i=0;i<=k;i++,j++)
{
a[j]='*';
}
a[j]='\0';
}
A*BC*DEF*G************
Press any key to continue
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*' && a[i+1]=='*')
{
i++;
}
i++;
k=i;
for(;a[i]!='\0';j++,i++)
{
a[j]=a[i];
}
for(i=0;i<=k;i++,j++)
{
a[j]='*';
}
a[j]='\0';
}
追问
为什么我不对啊
追答
Enter a string:
*******A*BC*DEF*G****
The string after moveing:
A*BC*DEF*G************
Press any key to continue
#include
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*')
{
i++;
}
k=i; //这里原来我上面加了个i++ 去掉不要了
for(;a[i]!='\0';j++,i++)
{a[j]=a[i];
}
for(i=0;i<=k;i++,j++)
{
a[j]='*';
}
a[j]='\0'; //这个记得放在大括号外 把大括号不要省略 是个很重要的习惯
}
main()
{
char s[81],*p; int n=0;
printf("Enter a string:\n");
gets(s);
fun( s );
printf("The string after moveing:\n");puts(s);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 #include <stdio.h>
2 void fun( char *a )
3 {
4 int i=0,j=0,k;
5 char tmp;
6
7 while(*a == '*')
8 {
9 tmp = *a;
10 i = 0;
11 for (; a[i] != '\0'; i++)
12 {
13 a[i] = a[i + 1];
14 }
15 a[i - 1] = tmp;
16 }
17
18 }
19
20 main()
21 {
22 char s[81] = "*******A*BC*DEF*G****";
23 char *p;
24 int n=0;
25 printf("Enter a string:\n");
26 //gets(s);
27 printf("The string before moveing:\n");puts(s);
28 fun( s );
29 printf("The string after moveing:\n");puts(s);
30
31 }
32
你那个逻辑有问题
2 void fun( char *a )
3 {
4 int i=0,j=0,k;
5 char tmp;
6
7 while(*a == '*')
8 {
9 tmp = *a;
10 i = 0;
11 for (; a[i] != '\0'; i++)
12 {
13 a[i] = a[i + 1];
14 }
15 a[i - 1] = tmp;
16 }
17
18 }
19
20 main()
21 {
22 char s[81] = "*******A*BC*DEF*G****";
23 char *p;
24 int n=0;
25 printf("Enter a string:\n");
26 //gets(s);
27 printf("The string before moveing:\n");puts(s);
28 fun( s );
29 printf("The string after moveing:\n");puts(s);
30
31 }
32
你那个逻辑有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*')
{
i++;
}
k=i;
for(;a[i]!='\0';j++,i++)
{a[j]=a[i];
}
for(i=0;i<=k;i++,j++)(此处应为i<k)
{ a[j]='*';
a[j]='\0';(这个语句应该放在这个FOR循环外边,不然的话每次循环都会把a[j]的值赋为'/0')
}
}
就这两处,改完运行是对的
void fun( char *a )
{
int i=0,j=0,k;
while(a[i]=='*')
{
i++;
}
k=i;
for(;a[i]!='\0';j++,i++)
{a[j]=a[i];
}
for(i=0;i<=k;i++,j++)(此处应为i<k)
{ a[j]='*';
a[j]='\0';(这个语句应该放在这个FOR循环外边,不然的话每次循环都会把a[j]的值赋为'/0')
}
}
就这两处,改完运行是对的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询