请问 为什么这个代码没有错误,但是一运行输入后一敲回车就停止运行了呢?

#include
int main()
{
void convert(int n);
int n,i;
char a[20];
scanf("%d",&n);
convert(n);
printf("%s\n",a[i]);
return 0;
}
void convert(int n)
{int s;
char c;
if ((s=n/10)>=1)
{c=n%10+'0';
n=(int)s;
convert(n);
}
}

a[],这个数组并没有初始化,数组其实是一个指针,为空的

printf("%s\n",a[i]);//你的i没有赋初值,它一般不是0,你可以输出看一下。
你在convert函数内部虽然做了一些操作,但是后面完全没用上。

看来看去不知道你这个代码是干嘛用的。 很多错漏
1. convert()函数声明居然跑到main函数体里去了你居然还说没报错,当然我也不清楚你的编译器是怎么回事还是你拷贝的时候弄错了?
2. 字符数组未曾初始化也未曾使用?数组里面一堆乱码,你用%s输出字符串,没有遇到结束符'\0'肯定就越界访问了啊。你运行错误应该是出现在这里。
3. convert()函数一无输出二无返回值三无指针型参数,里面写再多东西也是白搭啊。

你的函数声明放到main里面就不对

#include //原先为#inclue,先已补全,stdio.h为C语言标准输入输出库
int main()
{
//void convert(int n);//多余,甚至编译错误,注释掉
int n,i;
char a[20];//数组为空,建议进行初始化,给数组填上数
scanf("%d",&n);
convert(n);
printf("%s\n",a[i]);//i没有初始值
//就相当于没有数组下标就想从数组里取一个数,却不知取哪个
return 0;
}
void convert(int n)
{
int s;
char c;
if ((s=n/10)>=1)
{
c=n%10+'0';
n=(int)s;//不用强制类型转换,s本就是int型
convert(n);
}
}

你把你程序想实现什么功能说一下,大家帮你