C语言:每日一题:NO.6

C语言:每日一题:NO.6,第1张

题目:逆序输出字符串

#include
#include
void fun(char* q)
{
	if (*q)
	{
		fun(q + 1);
		putchar(*q);
	}
}
void fun2(char* a)
{
	int len = strlen(a);//计算字符串长度               

	/*int mystrlen(char* a)     如果要求不能用库函数
	{
             if(!(*a)) return 0;
			 return 1+mystrlen(a+1);
	}
	*/
	char c = a[0];                               //假设字符串为“abcd”       用变量c记住首字符
	a[0] = a[len - 1];                           //a与d互换
	a[len - 1] = '\0';                           //并将d的位置换为'\0'  此时字符串为dbc\0
	if (strlen(a + 1) >= 2)                      //计算从b开始的字符串长度,>=2才可以互换,不然就一个字符没必要换;
		fun2(a + 1);                              //关于为什么要+1?因为d已经到了他目的地,无需管他了。


a[len - 1] = c; //直到if不成立后,将原先c中字符挨个放在\0处 } int main() { char a[100]; gets(a); fun(a); // 不改变数组内容; putchar(10); fun2(a); // 改变数组内容; puts(a); return 0; }

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/564040.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-03
下一篇2022-04-03

发表评论

登录后才能评论

评论列表(0条)

    保存