马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目编写一个小程序,要求使用本节课学到的函数在堆中申请一个矩阵(二维数组),矩阵的尺寸由用户指定,并且允许修改。该小程序的更多功能及要求
我的代码#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, p = 0, q = 0;
int m, n;
int k, j;
int l;
int num;
int **pArr;
int g;
printf("############################\n");
printf("欢迎使用该程序,指令如下:\n");
printf("1.生成一个M * N的数列\n");
printf("2.初始化矩阵\n");
printf("3.给矩阵中的某个元素赋值\n");
printf("4.读取矩阵中某个元素\n");
printf("5.打印整个矩阵\n");
printf("6.结束程序\n");
printf("############################");
while(1)
{
printf("\n请输入指令:");
scanf("%d", &i);
if(i == 1)
{
if(p == 0 && q == 0)
{
printf("请输入新矩阵的规模(M * N)-->");
scanf("%d * %d", &p, &q);
pArr = (int **)malloc(p * sizeof(int*));
for(g = 0; g < p; g++)
pArr[g] = (int *)malloc(p * sizeof(int));
printf("%d * %d矩阵以造好\n", p, q);
}
else
{
printf("矩阵已经存在,是否要重新创建(Y/N)");
getchar(); //清楚缓冲区残留的换行符
if(getchar() == 'Y')
{
printf("\n请输入新矩阵的规模(M * N)-->");
scanf("%d * %d", &p, &q);
pArr = (int **)malloc(p * sizeof(int*));
for(g = 0; g < p; g++)
pArr[g] = (int *)malloc(p * sizeof(int));
printf("%d * %d矩阵以造好\n", p, q);
}
}
}
if(i == 2) //问题出在这里,输入指令2 后程序就终止了
{
printf("请输入一个数字:");
scanf("%d",num);
for(m = 0; m < p; m++)
for(n = 0; n < q; n++)
pArr[m][n]= num;
}
if(i == 3)
{
printf("请输入要修改的元素(行,列):");
scanf("%d, %d", &k, &j);
printf("请输入一个数字:");
scanf("%d", &l);
pArr[k][j] = l;
}
if(i == 4)
{
printf("请输入要读取的元素(行,列)");
scanf("%d, %d", &k, &j);
printf("第%d行第%d列的数是:%d", k, j, pArr[k][j]);
}
if(i == 5)
{
for(m = 0; m < p; m++)
for(n = 0; n < q; n++)
printf("%d ", *(*(pArr + m) + n));
printf("\n");
}
if(i == 6)
break;
}
return 0;
}
一到2指令程序就结束了,究竟哪里错了啊?求大佬帮忙!
楼主,你66行的scanf函数忘记加取址符号&了,正确写法应该是scanf("%d",&num);
|