|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请问大佬们,为什么会出现如下图的问题呀?
要么调用3.4能看到数据修改了却打印不出来
或者是位置错乱的多出修改?
代码如下:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- int M;
- int N;
- void welcome();
- char * ins1(char *);
- char * ins2(char *);
- char * ins3(char *);
- void ins4(char *);
- void ins5(char *);
- int main(void)
- {
- int order;
- char *ptr = NULL;
- welcome();
- do{
- printf("请输入指令:");
- scanf("%d",&order);
- getchar();
- switch(order)
- {
- case 1:ptr = ins1(ptr);break;
- case 2:ptr = ins2(ptr);break;
- case 3:ptr = ins3(ptr);break;
- case 4:ins4(ptr);break;
- case 5:ins5(ptr);break;
- case 6:break;
- default:printf("输入指令有误!请重新输入!\n");
- }
- putchar('\n');
- }while(!(order == 6));
- printf("感谢使用本程序^_^\n");
- return 0;
- }
- void welcome()
- {
- 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");
- putchar('\n');
- }
- char *ins1(char *ptr)
- {
- char ch;
- if(ptr == NULL)
- {
- printf("请输入新矩阵规模(M*N) -> ");
- scanf("%d*%d",&M,&N);
- getchar();
- ptr = (char *)malloc(M*N*sizeof(char));
- memset(ptr,'0',M*N*sizeof(char));
- if(ptr != NULL)
- {
- printf("%d * %d的矩阵创建成功!\n",M,N);
- }
- }
- else
- {
- printf("矩阵已经存在,是否需要重新创建?(Y/N)-> ");
- scanf("%c",&ch);
- getchar();
- if(ch == 'Y')
- {
- free(ptr);
- printf("请输入新矩阵规模(M*N) -> ");
- scanf("%d*%d",&M,&N);
- getchar();
- ptr = (char *)malloc(M*N*sizeof(char));
- memset(ptr,'0',M*N*sizeof(char));
- if(ptr != NULL)
- {
- printf("%d * %d的矩阵创建成功!\n",M,N);
- }
- }
- }
- return ptr;
- }
- char *ins2(char *ptr)
- {
- char num;
- printf("请输入一个数字:");
- scanf("%c",&num);
- getchar();
- memset(ptr,num,M*N*sizeof(char));
- return ptr;
- }
- char * ins3(char *ptr)
- {
- int row,col;
- char num;
- printf("请输入要修改的位置(行,列)-> ");
- scanf("%d,%d",&row,&col);
- getchar();
- printf("请输入一个数字:");
- scanf("%c",&num);
- getchar();
- ptr[(row-1)*8+(col-1)] = num;
- return ptr;
- }
- void ins4(char *ptr)
- {
- int row,col;
- printf("请输入要读取的位置(行,列)-> ");
- scanf("%d,%d",&row,&col);
- getchar();
- printf("第%d行,第%d列的数字是:%c\n",row,col,ptr[(row-1)*8+(col-1)]);
- }
- void ins5(char *ptr)
- {
- int i,j;
- for(i = 0;i < M;i ++)
- {
- for(j = 0;j < N;j ++)
- {
- printf("%c ",ptr[i+j]);
- }
- putchar('\n');
- }
- }
复制代码
认真一点
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int M;
- int N;
- void welcome();
- char * ins1(char *);
- char * ins2(char *);
- char * ins3(char *);
- void ins4(char *);
- void ins5(char *);
- int main(void)
- {
- int order;
- char *ptr = NULL;
- welcome();
- do{
- printf("请输入指令:");
- scanf("%d",&order);
- getchar();
- switch(order)
- {
- case 1:ptr = ins1(ptr);break;
- case 2:ptr = ins2(ptr);break;
- case 3:ptr = ins3(ptr);break;
- case 4:ins4(ptr);break;
- case 5:ins5(ptr);break;
- case 6:break;
- default:printf("输入指令有误!请重新输入!\n");
- }
- putchar('\n');
- }while(!(order == 6));
- printf("感谢使用本程序^_^\n");
- free(ptr);
- return 0;
- }
- void welcome()
- {
- 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");
- putchar('\n');
- }
- char *ins1(char *ptr)
- {
- char ch;
- if(ptr == NULL)
- {
- printf("请输入新矩阵规模(M*N) -> ");
- scanf("%d*%d",&M,&N);
- getchar();
- ptr = (char *)malloc(M*N*sizeof(char));
- memset(ptr,'0',M*N*sizeof(char));
- if(ptr != NULL)
- {
- printf("%d * %d的矩阵创建成功!\n",M,N);
- }
- }
- else
- {
- printf("矩阵已经存在,是否需要重新创建?(Y/N)-> ");
- scanf("%c",&ch);
- getchar();
- if(ch == 'Y')
- {
- free(ptr);
- printf("请输入新矩阵规模(M*N) -> ");
- scanf("%d*%d",&M,&N);
- getchar();
- ptr = (char *)malloc(M*N*sizeof(char));
- memset(ptr,'0',M*N*sizeof(char));
- if(ptr != NULL)
- {
- printf("%d * %d的矩阵创建成功!\n",M,N);
- }
- }
- }
- return ptr;
- }
- char *ins2(char *ptr)
- {
- char num;
- printf("请输入一个数字:");
- scanf("%c",&num);
- getchar();
- memset(ptr,num,M*N*sizeof(char));
- return ptr;
- }
- char * ins3(char *ptr)
- {
- int row,col;
- char num;
- printf("请输入要修改的位置(行,列)-> ");
- scanf("%d,%d",&row,&col);
- getchar();
- printf("请输入一个数字:");
- scanf("%c",&num);
- getchar();
- //ptr[(row-1)*8+(col-1)] = num;
- ptr[(row - 1) * N + (col - 1)] = num;
- return ptr;
- }
- void ins4(char *ptr)
- {
- int row,col;
- printf("请输入要读取的位置(行,列)-> ");
- scanf("%d,%d",&row,&col);
- getchar();
- //printf("第%d行,第%d列的数字是:%c\n",row,col,ptr[(row-1)*8+(col-1)]);
- printf("第%d行,第%d列的数字是:%c\n",row,col,ptr[(row - 1) * N + (col - 1)]);
- }
- void ins5(char *ptr)
- {
- int i,j;
- for(i = 0;i < M;i ++)
- {
- for(j = 0;j < N;j ++)
- {
- //printf("%c ",ptr[i+j]);
- printf("%c ",ptr[i * N + j]);
- }
- putchar('\n');
- }
- }
复制代码
|
-
修改后无打印
-
多处被修改
|