Navigator_Z 2019-09-16 10:11 采纳率: 0%
浏览 321

用指向指针的指针动态分配二维数组后,再用指向指针的指针输入数据和输出数据出现问题。

用visual studio2010编译器,运行后无法跳出。

#include <stdio.h>
#include <stdlib.h>
void input(int *nu, double **s, int m, int n);
void output(int *nu, double **s, int m, int n);
int main()
{
    int *num=(int*)malloc(4*sizeof(int));
    double **score=(double**)malloc(4*sizeof(double*));
    int i;
    for(i=0; i<5; i++)
        score[i]=(double*)malloc(5*sizeof(double));
    input(num, score, 4, 5);
    output(num, score, 4, 5);
    for(i=0; i<5; i++)
        free(score[i]);
    free(score);
    free(num);
    system("pause");
    return 0;
}
void input(int *nu, double **s, int m, int n)
{
    int *pn, i;
    double **p, *q;
    for(pn=nu, i=0, p=s; pn<nu+m||p<s+m; pn++, i++, p++){
        printf("Enter No.%d student number: ", i+1);
        scanf("%d", pn);
        printf("Enter No.%d student score: ", i+1);
        for(q=*p; q<*p+n; q++)
            scanf("%lf", q);
    }
}
void output(int *nu, double **s, int m, int n)
{
    int *pn, i;
    double **p, *q;
    for(pn=nu, i=0, p=s; pn<nu+m||p<s+m; pn++, i++, p++){
        printf("No.%d student number: %d\n", i+1, *pn);
        printf("No.%d student score: ", i+1);
        for(q=*p; q<*p+n; q++)
            printf("%.2lf ", *q);
        printf("\n");
    }
}
  • 写回答

1条回答 默认 最新

  • ttsscat 2019-09-16 12:03
    关注

    没发现问题,很正常。
    无法跳出是指什么?

    评论

报告相同问题?