读书人

恳请大师们指点…该如何解决

发布时间: 2012-05-12 15:39:31 作者: rapoo

恳请大师们指点……
这是一个c语言编程的试题: 将“***ABC***abc***”删除最左边的“***”变为“ABC***abc***"(一定要在原字符串上进行操作);

我编写的程序是:
#include <stdio.h>
#include <string.h>
void main ()
{char a[]="***ABC***abc***";int i;
for (i=0;a[i]=='*';i++)
a[i]=' ';
puts (a);
}
虽然运行后可以输出“ABC***abc***”,但貌似不符合要求;可是参考答案是这样的:
#include <stdio.h>
#include <string.h>
void main ()
{
char s[]="***abc***ABC***";
int i,j;
for (i=0;s[i]=='*';i++)
for (j=0,i=0;s[j]!=0;j++,i++)
s[i]=s[j];

puts(s);
}根本就运行不出结果。
我就郁闷了;
望大师们能给出符合要求的程序.(我是一c语言初学者,在此诚心请教,望大师们不吝赐教啊)谢谢。,衷心感谢~!

[解决办法]
注意是变为“ABC***abc***",而不是输出为“ABC***abc***"!
[解决办法]
#include <stdio.h>
#include <string.h>
void main ()
{
char s[]="***abc***ABC***";
int i,j;

i=0;
while ('*' == s[i])
{
++i;
}

for (j=0;'\0' != s[i];++j,++i)
{
s[j]=s[i];
}
s[j] = '\0';

puts(s);
}
[解决办法]

C/C++ code
#include <stdio.h>#include <string.h>void main (){    char s[]="***ABC***abc***";    int i,j;    for (i=0;s[i]=='*';i++);    for (j=0;s[j]!=0;j++,i++)        s[j]=s[i];    puts (s);}
[解决办法]
前几天回复过和你一样的帖子,自己找一下
[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>void main (){    char s[]="***abc***ABC***";    int i,j;    int len = strlen(s);    for (i=0;s[i]=='*';)    {        for (j=i; j<len; j++)            s[j]=s[j+1];        puts(s);    }    system("PAUSE");}
[解决办法]
C/C++ code
void main (){    char s[]="***abc***ABC***";    int i,j=0;    for (i=0;s[i]=='*';i++,j++);    for (i=0;s[i]!='\0';i++)        s[i]=s[i+j];    puts(s);}
[解决办法]
C/C++ code
#include <iostream>#include <vector>using namespace std;int main(){        char a[]="***ABC***abc***";        vector<char> c_vec;        int i = 0;        while('*' == a[i])        {                i++;        }        for(int j= i; a[j] != '\0'; j++)        {                c_vec.push_back(a[j]);        }        for(vector<char>::iterator it = c_vec.begin(); it != c_vec.end(); it++)        {                cout<< *it;        }        return 0;} 

读书人网 >C语言

热点推荐