第24课动动手第1题
以下是我个人的思路#include <stdio.h>
#define MAX 1024
int main()
{
int count = 0;//计算输入了多少个数
int a = {0};
printf("请输入数字\n");
int i;
int j;
int row;//矩阵的rank
for (i = 0; i < MAX; i++)
{
if (getchar() != '\n')
{
a = getchar();
count++;
}
else
{
break;
}
}
printf("总共输入%d个数字\n", count);
for(j = 0; j*j <= count; j++)
{
row = j;
}
printf("矩阵是%dx%d的\n", row, row);
printf("矩阵如下\n");
int m, n;
int k = 0;
for(m = 0; m <row; m++)
{
for(n = 0; n < row; n++)
{
printf("%d", a);
k++;
}
printf("\n");
}
return 0;
}
试了两个输入,结果很奇怪
输入1
1 2 3 4 5 6 7 8 9
总共输入9个数字
矩阵是3x3的
矩阵如下
323232
323232
323210
这里要按两次回车才会继续执行程序
输入的总数和矩阵的大小是正确的,但是最后矩阵的输出不符合预期
输入2
请输入数字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
总共输入19个数字
矩阵是5x5的
矩阵如下
3232323232
3232323248
4932504932
524932540
00000
虽然只要按一次回车就够了,但是输出都是错误的
也试了其他输入都不如人意 代码很乱,看了很纠结
#include <stdio.h>
#define MAX 1024
int main()
{
int count = 0;//计算输入了多少个数
int c;
int a = {0};
int i;
int row;//矩阵的rank
printf("请输入数字\n");
while((c=getchar()) != '\n')
{
if (c!=32) // 不是空格
{
a = c; // 存入数组
count++;
}
}
printf("总共输入%d个数字\n", count);
for(i = 0; i*i <= count; i++)
{
row = i;
}
printf("矩阵是%dx%d的\n", row, row);
printf("矩阵如下\n");
for(i = 0; i<count; i++)
{
printf("%c ", a);
if ((i+1)%row == 0)
{
printf("\n");
}
}
return 0;
} ba21 发表于 2019-5-2 22:06
代码很乱,看了很纠结
我先研究下你改过的代码{:10_285:}
请问针对我这种代码很乱的情况有什么改善的建议吗?
页:
[1]