首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

被这道题快憋出内伤了,特来

2012-03-24 
被这道题快憋出内伤了,特来请教高手小妹我计算机毕业大半年了,之前学的东西也都忘得差不多了,这两天突然想

被这道题快憋出内伤了,特来请教高手
小妹我计算机毕业大半年了,之前学的东西也都忘得差不多了,这两天突然想温习一下C语言,结果被一道题卡了整整两天,郁闷!悲愤!想当年我也是高分毕业的啊,现在竟然连一道如此简单的题目也做不出来了!废话少说,上题了!

假设有一个char型指针, 
char * input="aabbcc"; 

写一个方法,把不同字母之间加一个'-',结尾加一个'.'。
即结果为 "aa-bb-cc."

char * converter(char * input)
{
  .......
}

虚心请教各位高人,希望能给出可以运行出正确结果的代码,不是pseudocode。
我知道我现在的水平连菜鸟都不如了,请各位轻拍。

[解决办法]
你的名字:为何要药。。。。。。

char *converter (char *input) {
char * result = (char *)malloc(strlen(input)+255);
int i = 0, j = 0;
while (input[i] != '\0') {
result[j++] = input[i++];
if (input[i] != input[i-1] && input[i] != '\0') {
result[j++] = '-';
}
}
result[j++] = '.';
result[j] = '\0';
return result;
}
[解决办法]

C/C++ code
//临时写的char * converter(char * input){    int ilength = strlen(input)+1;    int iSize = 2*ilength;    char* str = new char[iSize];    char *p = input;    memset(str,0,sizeof(char)*iSize);    int i = 1, j = 0;    while (*p != '\0')     {        str[j++] = *p;        if (input[i] != input[i-1] && input[i] != '\0')         {            str[j++] = '-';        }        p++;        i++;    }    str[j++] = '.';    str[j] = '\0';    return str;}int main(){    char * input="aabbcc";     char* p = converter(input);    printf("%s",p);    delete []p;    system("pause");   }
[解决办法]
C/C++ code
char *convert(char *dest, const char *src){  char *tmp = dest;  while ((*dest++=*src++) != '\0')    {      if ((*(src-1)!=*(src)) && ('\0'!=*src))        {          *dest++ = '-';        }    }  *dest-- = '\0';  *dest = '.';  return tmp;} 

热点排行