永发信息网

C语言指针操作,动态分配

答案:2  悬赏:70  手机版
解决时间 2021-04-24 00:34
  • 提问者网友:却不属于对方
  • 2021-04-23 08:44

#include "stdio.h"
#include "stdlib.h"
void main()
{int i,j,m,n;
float avr,avr1;
int sum=0,sum1=0;
float *p,*q,*p1,*q1;
int **x;
printf("请输入行数m和列数n");
scanf("%d%d",&m,&n);
x=(int **)malloc(m*sizeof(int *));//X指向一指针数组
for(i=0;i<m;i++)
x[i]=(int *)malloc(n*sizeof(int )); //为指针数组元素分配分配内存
printf("请输入%d个数",m*n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",*(x+i)+j);

for(i=0;i<m;i++)
for(j=0;j<n;j++)
{printf("%d",*(*(x+i)+j));
putchar('\n');}
p=q=(float *)malloc(n*sizeof(float ));//用于存放列平均数
p1=q1=(float *)malloc(m*sizeof(float ));//用于存放行平均数
for(i=0;i<m,q<p+n;i++,q++)//求行列的平均数
{for(j=0;j<n;j++)
{sum=sum+*(*(x+i)+j);
}
avr=(float)sum/n;*q=avr;}
for(j=0;j<n,q1<p1+m;j++,q1++)
{for(i=0;i<m;i++)
sum1=sum1+*(*(x+i)+j);
avr1=(float)sum1/m;*q1=avr1;}

q=p;
q1=p1;
printf("行平均数是\n")
for(;q<p+n;q++)//错误1
printf("%3f",*q);
printf("\n列平均数是\n")
for(;q1<p1+m;q1++)//
printf("%3f",*q1);//错误2
}

请帮我看一下是怎么错了。除了1,2处标出的外,再看看别的地方。

最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-04-23 09:48

下面是代码和运行结果,你的代码里面有个错误,如果1行的时候就会出现那个错误了



for(i=0;i<m&&q<p+n;i++,q++)//求行列的平均数 // 这里用,运算符会有逻辑错误当只有


然后这两句掉了分号


printf("行平均数是\n"); // 错误1,缺少语句终结符号;

printf("\n列平均数是\n"); // 错误2,缺少语句终结符号;


全部回答
  • 1楼网友:逃夭
  • 2021-04-23 09:54

#include "stdio.h" #include "stdlib.h"

int main(void) { int i,j,m,n; float avr,avr1; int sum=0,sum1=0; float *p,*q,*p1,*q1; int **x; printf("请输入行数m和列数n:"); scanf("%d %d", &m, &n); x=(int **)malloc(m*sizeof(int *));//X指向一指针数组 for(i=0;i<m;i++) x[i]=(int *)malloc(n*sizeof(int )); //为指针数组元素分配分配内存 printf("请输入%d个数", m*n); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",*(x+i)+j); for(i=0;i<m;i++) for(j=0;j<n;j++) { printf("%d",*(*(x+i)+j)); putchar('\n');} p=q=(float *)malloc(n*sizeof(float ));//用于存放列平均数 p1=q1=(float *)malloc(m*sizeof(float ));//用于存放行平均数 for(i=0;i<m,q<p+n;i++,q++)//求行列的平均数 { for(j=0;j<n;j++) { sum=sum+*(*(x+i)+j); } avr=(float)sum/n;*q=avr; } for(j=0;j<n,q1<p1+m;j++,q1++) { for(i=0;i<m;i++) sum1=sum1+*(*(x+i)+j); avr1=(float)sum1/m;*q1=avr1; } q=p; q1=p1; printf("行平均数是\n"); // 错误1,缺少语句终结符号; for(; q<p+n; q++) printf("%3f",*q); printf("\n列平均数是\n"); // 错误2,缺少语句终结符号; for(;q1<p1+m;q1++)// printf("%3f",*q1); return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯