小白俩问问题了!!!!!!!!!!!!!!!!!

#include
#include
#include
void Nx(char p,int n)
{
int i;
char s[20];
for(i=0;i<n;i++)
{
s[i]=
(p+n-i-1);
}
printf("%s",s);
}
int main()
{
char a[20],*p;
int n;
printf("输入字符串\n");
scanf("%s",&a);
n=strlen(a);
p=a;
Nx(p,n);
return 0;
system("pause");
}
这个错在哪里了呀

s[i]=(p+n-i-1);这一组在进行计算的时候返回的是int类型,但是你却用char类型接收,所以需要强转为char
char s[20]; 这一句有问题,你见过这种格式的语法吗?这个是语法问题
printf("%s",s);这个方法没定义

#include
#include
void Nx(char* p,int n)
{
int i;
char s[n];
for(i=0;i<n;i++)
{
s[i]=(p[n-i-1]);
}
printf("%s",s);
}
int main()
{
char a[20],*p;
int n;
printf("输入字符串\n");
scanf("%s",&a);
n=strlen(a);
p=a;
Nx(p,n);
return 0;

}

//问题有点多

修改后的代码如下,修改处请看注释:

 void Nx(char* p, int n) //函数第一个形参类型应该为char*
{
    int i;
    char s[20];
    for (i = 0; i < n; i++)
    {
        s[i] = *(p + n - i - 1);  //  (p + n - i - 1)是地址,需要加*,取得该地址代表的字符。
    }
    s[i] = '\0';  //加上字符串结尾字符,否则s数组未赋值的元素会乱码。

    printf("%s", s);
}
int main()
{
    char a[20], *p;
    int n;
    printf("输入字符串\n");
    scanf("%s", a); //a定义为字符数组,数组名a已经是地址了,不用再加&
    n = strlen(a);
    p = a;
    Nx(p, n);
    return 0;
    system("pause");
}

该程序的功能是将输入字符串倒序输出。

用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!