被这道题快憋出内伤了,特来请教高手
小妹我计算机毕业大半年了,之前学的东西也都忘得差不多了,这两天突然想温习一下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;}