|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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);
|
|