固特门锁怎么样:考考你,一段关于C语言的程序。

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/11 16:44:13
#include<stdio.h>
void fun (char *s);
main()
{ static char str[]="123";
fun(str);}
void fun(char *s)
{if( *s)
fun(++s);
printf('%s\n",--s);
}
}
这断程序有没有错?错在那里,要怎么改。
如果没有错,输出结果是什么?

改成这样
#include<stdio.h>
void fun (char *s);
main()
{
static char str[]="123";
fun(str);
}
void fun(char *s)
{
if( *s)
fun(++s);
printf("%s\n",--s);

}

输出
3
3
23
123

#include<stdio.h>
void fun (char *s);
main()
{ static char str[]="123";
fun(str);}
void fun(char *s)
{if( *s)
fun(++s);
printf('%s\n",--s);}}没有语法错误
函数的递归调用。

在main()函数中static char str[]="123";就是定义一个数组的意思,比如想我们经常看到的
这段程序是先定义后赋值的
我们也可以定义,赋值放在一起如:
main(){
int x=1,y=1;

.....
}
上面两段程序都是一样的意思
而你问的那个语句是属于后一中种情况
main()
{
static char str[]="123";/* 定义str[]一 个static(静态)字符数组并且赋值为123
fun(str);
}

对于void fun (char *s);并是你所说的那样,而是对下面一个名字叫void fun (char *s);的函数的声明。

最后我建议你看看c语言编程较基础方面的书,这些上面都讲的有