/*3.输入n(不大于20)个单精度数存入一维数组,用 指针变量处理数组元素的方式将其逆序存放后输出,n从键盘输入。*/哪里有问题




#include
main()
{
    int n;
    printf("请输入n(不大于20)个单精度数\n");
    scanf("%d",n);
    float a[20],*p,*q,temp;
    for(;pscanf("%f",p);
    for(p=a,q=a+n-1;pprintf("after inverse:");
    for(p=a;pprintf("%f",*p);
    return 0;
}



望采纳


在这段代码中,scanf函数读入n的时候没有使用地址符,导致读入的值不会被存储到n变量中。你需要在scanf函数中添加一个地址符,例如:

scanf("%d", &n);

同时,为了使程序更加稳健,建议您在for循环的条件表达式中添加一个限制,保证p指针不会超出a数组的范围。例如:

for(p = a; p < a + n; p++)

或者:

for(p = a; p < a + n && p < a + 20; p++)