关于写蚂蚁的作文:又来麻烦大家解释C语言程序了

来源:百度文库 编辑:高校问答 时间:2024/04/29 00:41:21
include <stdio.h>
void disp(char *string)
{
if(* string)
{disp(string+1);
putchar(*string);
}
}
main()
{ disp("abcdefg");
}
第2个
main()
{char str[80];
scanf("%s",str);
insert(str);
}
insert(char s[])
{int i;
for(i=strlen(s);i>0;i--)
{s[2*i]=s[i];
s[2*i-1]=' ';
}
printf("%s",s);
}输入字符串 abcd 输出是什么
第一个回答问题的人答对了,谁能解释一下详细过程?

第一个是递归调用 输出的是gfedcba
第二是将字符数组s每隔一个字符插入一个空格,例如输入abcd,则变为a b c d(注意最后一位没有空格)

#include <stdio.h>
void disp(char *string)
{
if(* string)/*if语句成立,直到*string=NULL,即当指针string指向字符串的末尾,停止递归*/
{disp(string+1); /*把指针string移向下一个单元,递归调用,即引用字符数组的下一个字符,跳至disp函数头部*/
putchar(*string);/*当string=NULL时,递归结束,数据回朔,执行putchar(*string)*/
}
}
main()
{ disp("abcdefg");/*调用函数,将实参值赋给形参*/
}
/*********************/
#include<stdio.h>
#include<string.h>
main()
{char str[80];
scanf("%s",str); /*调用函数insert,将*str实参值赋给形参*/
insert(str);
}
insert(char s[])
{int i;
for(i=strlen(s);i>0;i--)/*对字符串数组的下标降序循环*/
{s[2*i]=s[i];
s[2*i-1]=' ';/*在s[i]前面加一个空格*/
}
printf("%s",s);/*以字符串形式输出结果*/
}

第一个应该是用一个尾递归逆序输出。
第二个,应该是出错了,数组溢出

1.字符串逆置.

2.字符串中间加空格.