假定输入的字符串中只包含字母和*号。它的功能是:将字符串中的前导*号全部移到字符串的尾部。

编写程序,用的是C语言,Microsoft Visual C++

#include <stdio.h>

void  fun( char *a )

{

char b[81];

char *c,*d;

c = a;

int i = 0;

while (*c == '*')

{

c++;

}

d = c;

while (*c != '\0')

{

b[i] = *c;

i++;

c++;

}

int e = 0;

while (a < d)

{

b[i] = *a;

i++;

a++;

e++;

}

a = a - e;

for (int j = 0; j < i; j++)

{

*a = b[j];

a++;

}

*a = '\0';

}

int main()

{  char  s[81];  

int  n=0;

printf("Enter a string:\n");

gets(s);

fun( s );

printf("The string after moveing:\n");puts(s);

return 0;

}

扩展资料:

需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。 

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。 

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“ ;”。)

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-C语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
源码如下:
#include <stdio.h>
#include <string.h>

void convertA(char *s)
{
int i, len = strlen(s);
for (i = 0; i < len; i++)
if (s[i] != '*') break;

if (i > 0) strncpy(s, &s[i], len - i);
for (; i > 0; i--) s[len - i] = '*';
}

int main (int argc, const char * argv[])
{
int s[100] = {0};
scanf("%s", s);
convertA(s);
printf("%s\n", s);

return 0;
}

==================
运行结果:
输入:**hello
输出:hello**
输入:*h*llo*
输出:h*llo**
==================
希望这是你要的结果,如果不是,请把你要的效果举例说明(欢迎追问),代码其实不难,难的是理解客户的需求。追问

上述提及的 得出的结果是对的 但我学的还是初等 你写的一些名词 木有学到过 例如:void convertA(char *s)
const char * argv[])

追答

void convertA(char *s) 这是一个子函数,你可以把它当成是一个实现了你要的那个功能的零部件,main函数是一个框架,只需要把零部件塞进来就可以了
const char * argv[] 这个你不懂正常,我是习惯了,这里没有用到这个东西,可以直接去掉,将int main (int argc, const char * argv[]) 修改为int main ()即可

如果还有其他看不懂的地方请继续追问,觉得很困难的地方我可以用你看的懂的写法写出来

追问

7.编写程序,其功能是:将s所指字符串中除了保留下标为奇数、同时ascii值也为奇数的字符外,其余的全都删除。
main()
{int i,j,k;
char s[100];
gets(s);
k=strlen(s);
i=0;
for(j=0;j<k;j+=2)
if(s[j]%2==1) s[i++]=s[j];
s[i]=0;
puts(s);
}
这就是我们现在学的,差不多就这样的。谢谢了,你人很好。

追答

好吧,修改如下,这个应该没什么难度了:
main ()
{
int s[100] = {0}, i, j, len;
gets(s);
len = strlen(s);
for (i = 0; i 0 && i != len)
{
for (j = 0; j 0; j--) s[len - j] = '*';
}
puts(s);
}

追问

输出来的是原数啊?

本回答被提问者采纳