|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- int i;
- int count1=0,count2=0;
- int *ptr=NULL;
- int yonghu;//用户输入指令
-
- printf("=============================\n\
- * 欢迎使用该程序,指令如下:*\n\
- * 1.生成一个M*N的矩阵 *\n\
- * 2.初始化矩阵 *\n\
- * 3.给矩阵中某个元素复制 *\n\
- * 4.读取矩阵中某个元素 *\n\
- * 5.打印整个矩阵 *\n\
- * 6.结束程序 *\n\
- =============================\n");
- printf("\n");
- do
- {
- printf("请输入指令:");
- scanf("%d",&yonghu);
- count1++;
- int M,N;
- char Y_N;
- char chenghao;
- int *array=NULL;
-
-
- if(yonghu==1)//指令1
- {
- count2++;
- if(count2>1)
- {
- printf("矩阵已存在,是否需要重新创建(Y/N)->");
- scanf(" %c",&Y_N);
- switch(Y_N)
- {
- case 'Y':break;
- case 'N':continue;break;
- default:continue;break;
- }
- }
-
- printf("请输入新矩阵的规模(M*N)->");
- scanf(" %d%c%d",&M,&chenghao,&N);
- array=(int*)malloc(M*N*sizeof(int));
- printf("%d%c%d的矩阵创建成功!\n",M,chenghao,N);
- printf("\n");
-
- continue;
- }
-
- int i,j;
- int chuzhi;
-
- if(yonghu==2)//指令2
- {
- printf("请输入一个数字:");
- scanf("%d",&chuzhi);
-
- for(i=0;i<M;++i)
- {
- for(j=0;j<N;++j)
- {
- array[i*N+j]=chuzhi;
- }
- }
-
- printf("\n");
-
- continue;
- }
-
- int hang,lie;
- int xiugai;
- char douhao;
-
- if(yonghu==3)//指令3
- {
- printf("请输入要修改的位置(行,列)->");
- scanf("%d%c%d",&hang,&douhao,&lie);
- printf("请输入要修改为的值:");
- scanf("%d",&xiugai);
-
- array[hang*N+lie]=xiugai;
-
- printf("\n");
-
- continue;
- }
-
- if(yonghu==4)//指令4
- {
- printf("请输入要读取的位置(行,列)->");
- scanf("%d%c%d",&hang,&douhao,&lie);
-
- printf("第%d行,第%d列的数字是%d:%d",hang,lie,array[hang*N+lie]);
- printf("\n");
- }
-
- if(yonghu==5)//指令5
- {
- for(i=0;i<M;++i)
- {
- for(j=0;j<N;++j)
- {
- printf("%d ",i*N+j);
- }
- printf("\n");
- }
-
- printf("\n");
-
- continue;
- }
-
- if(yonghu==6)//指令6
- {
- printf("\n");
-
- break;
- }
- }
- while(yonghu<=6&&yonghu>=1);
-
- printf("感谢您使用本程序^_^");
-
- return 0;
- }
复制代码
我这个程序为什么输入完第二个指令之后就结束程序了
非常抱歉,我之前的回答有误。是的,指令2的代码应该是指令3的。让我们来修复这个问题并添加指令3和指令4的代码。
- #include <stdio.h>
- #include <stdlib.h>
- int main() {
- int count1 = 0, count2 = 0;
- int M, N;
- int *matrix = NULL;
- int instruction;
- 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("=============================\n\n");
- do {
- printf("请输入指令:");
- scanf("%d", &instruction);
- count1++;
- if (instruction == 1) { // 指令1 - 生成矩阵
- count2++;
- if (count2 > 1) {
- printf("矩阵已存在,是否需要重新创建(Y/N)->");
- char choice;
- scanf(" %c", &choice);
- if (choice == 'Y' || choice == 'y') {
- free(matrix);
- count2 = 0;
- } else {
- continue;
- }
- }
- printf("请输入矩阵的行数和列数(M N):");
- scanf("%d%d", &M, &N);
- matrix = (int *)malloc(M * N * sizeof(int));
- printf("成功生成 %d*%d 的矩阵!\n\n", M, N);
- } else if (instruction == 2) { // 指令2 - 初始化矩阵
- if (count2 == 0) {
- printf("矩阵未创建,请先生成一个矩阵!\n\n");
- continue;
- }
- int value;
- printf("请输入要用来初始化矩阵的值:");
- scanf("%d", &value);
- for (int i = 0; i < M * N; i++) {
- matrix[i] = value;
- }
- printf("矩阵初始化成功!\n\n");
- } else if (instruction == 3) { // 指令3 - 给矩阵中某个元素赋值
- if (count2 == 0) {
- printf("矩阵未创建,请先生成一个矩阵!\n\n");
- continue;
- }
- int row, col, value;
- printf("请输入要赋值的元素的行和列索引(行 列):");
- scanf("%d%d", &row, &col);
- if (row < 0 || row >= M || col < 0 || col >= N) {
- printf("输入的行和列索引超出矩阵范围,请重新输入!\n\n");
- continue;
- }
- printf("请输入要赋的值:");
- scanf("%d", &value);
- matrix[row * N + col] = value;
- printf("成功将矩阵中第 %d 行第 %d 列的元素赋值为 %d!\n\n", row, col, value);
- } else if (instruction == 4) { // 指令4 - 读取矩阵中某个元素
- if (count2 == 0) {
- printf("矩阵未创建,请先生成一个矩阵!\n\n");
- continue;
- }
- int row, col;
- printf("请输入要读取的元素的行和列索引(行 列):");
- scanf("%d%d", &row, &col);
- if (row < 0 || row >= M || col < 0 || col >= N) {
- printf("输入的行和列索引超出矩阵范围,请重新输入!\n\n");
- continue;
- }
- int value = matrix[row * N + col];
- printf("矩阵中第 %d 行第 %d 列的元素的值为:%d\n\n", row, col, value);
- } else if (instruction == 5) { // 指令5 - 打印整个矩阵
- if (count2 == 0) {
- printf("矩阵未创建,请先生成一个矩阵!\n\n");
- continue;
- }
- for (int i = 0; i < M; i++) {
- for (int j = 0; j < N; j++) {
- printf("%d ", matrix[i * N + j]);
- }
- printf("\n");
- }
- printf("\n");
- } else if (instruction == 6) { // 指令6 - 结束程序
- free(matrix);
- printf("程序已结束,欢迎下次使用!\n");
- break;
- } else {
- printf("输入的指令无效,请重新输入!\n\n");
- }
- } while (1);
- return 0;
- }
复制代码
这个修复后的代码中,我们添加了指令3和指令4的代码,可以分别用来给矩阵中某个元素赋值和读取矩阵中某个元素的值。希望这次的代码更符合您的期望,如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|