读书人

请教输入一字符串如:quot;dfdfquot;逆序输出;只

发布时间: 2012-03-04 11:13:33 作者: rapoo

请问输入一字符串如:"dfdf",逆序输出;只能用指针;
请问下大家有些什么高效的算法;
我也能打开下自己的思路;

非常谢谢大家


[解决办法]
int main()
{
char sz[]= "abcdef ";

int len = strlen(sz);
int x=0;
for(x=0;x <len;x++)
printf( "%c ",*(sz+len-x-1));
printf( "\n ");
return 0;
}

[解决办法]
_strrev
CRT
函数的,呵呵^_^,okokok
[解决办法]
/*
**程序实现:输入字符串,通过函数调用实现原字符串的逆序输出
**编译环境:VC60
*/

#include <stdio.h>
#include <string.h>
#include <malloc.h>

/*
**用字符指针来传递值
*/
char *Back(char *pOld)
{
int i, len;
char pNew[100];

/* 判断原始数组是否已经被赋值 */
if (pOld == NULL)
{
puts ( "警告!未对原始数组赋值 ");
return 0;
}

len = strlen (pOld) - 1;/* 原始数组的长度(不包括结束符 '\0 ') */
i = len;

for (; i> =0; i--)
{
pNew[len-i] = *(pOld + i); /* 将原始数据逆序赋给一个新的数组 */
}

pNew[len + 1] = '\0 ';/* 注意!不要忘了结束符 */

return pOld = pNew;
}

/*
** 主函数
*/
int main(void)
{
char *array;

array = (char *)malloc (100);/* 为创建的字符指针分配空间 */
puts ( "输入原书数据: ");
scanf ( "%s ", array);
puts ( "逆序排列: ");
array = Back (array);/* 函数调用 */
printf ( "%s\n ", array);

return 0;
}

[解决办法]
int main()
{
char sz[]= "abcdef ",*p;
int len = strlen(sz);
p=sz;
p+=len
for(x=0;x <len;x++)
printf( "%c ",*(--p));
printf( "\n ");
return 0;
}

[解决办法]
这样算不算用指针啊?有脱裤子放屁的嫌疑……
#include <stdio.h>
#include <string.h>

void main()
{
char str[]= "dfdf ";
int length=strlen(str);
for(int i=0;i <length;i++)
printf( "%c ",*(str+length-i-1));
printf( "\n ");
}
[解决办法]
哈哈,那算用什么指针啊。。。就个反向打印而已了。。。
用指针就用strrev这个函数的实现方法来做。。。。
char * __cdecl _strrev (
char * string
)
{
char *start = string;
char *left = string;
char ch;

while (*string++) /* find end of string */
;
string -= 2;

while (left < string)
{
ch = *left;
*left++ = *string;
*string-- = ch;
}

return(start);
}

[解决办法]
#include <stdio.h>
#include <string.h>
void main()
{
char *sp;
printf( "please input s string\n ");
scanf( "%s ",sp);
char *cp;
for(int i=strlen(sp);i> 0;i--)
printf( "%c ",*(sp+i-1));
}这个方法很好
[解决办法]
void printChar(const char *s)
{
if(*s++){
printChar(s);


}
printf( "%c ",*(--s));
}

int main()
{
char *sz= "abcdef ";
printChar(sz);
printf( "\n ");
return 0;
}
[解决办法]
int i; char *p = "abcdef ";
for(i=strlen(p);i> =0;i--)
printf( "%c ",*(p+i));
[解决办法]
#include <stdio.h>
#include <string.h>

void revise(char a[])
{
int i,j; char temp;
for(i=0,j=strlen(a)-1;i <j;i++,j--)
{
temp=*(a+i);*(a+i)=*(a+j);*(a+j)=temp;
}
}

main()
{
char src[30] = "1234 ";
revise(src);
printf( "%s\n ",src);
}

读书人网 >C语言

热点推荐