kirit @ 2021-12-05 21:11:46
本地运行输入样例后回车没反应,在网页版的编译器上就能正常输出,设备和编译器都换过了还是这样,已经提交代码了,测试结果都是AC,求大佬解惑,感谢。 代码如下
#include<stdio.h>
#include<stdlib.h>
void prt(int, int, int, int*);
int main()
{
int N,n,*np,i=0,j=0;
scanf("%d", &N);
np = (int*)malloc((N*N) * sizeof(int));
while (scanf("%d", &n) == 1) {
if (i % 2 == 0)
prt(j, j + n, 0, np);
else
prt(j, j + n, 1, np);
j += n;
i++;
}
for (int i = 0; i < N * N; i++) {
printf("%d", np[i]);
if ((i + 1) % N == 0)
putchar('\n');
}
return 0;
}
void prt(int i, int t, int n, int* np)
{
for (; i < t; i++)
np[i] = n;
return;
}
by ud2_ @ 2021-12-05 21:17:21
@kirit
while (scanf("%d", &n) == 1) {
你自己写的“如果还有整数输入,就循环”。
by comando @ 2021-12-05 21:20:23
建议控制台Ctrl+D结束输入
by _QrSn_ @ 2021-12-05 21:25:48
输入完后Ctrl+z+回车结束输入
by kirit @ 2021-12-05 21:27:01
@ud2_ 缓冲区不是就那几个数嘛,读到完以后再读的话scanf返回值不就不是1了吗?是不是我哪里理解错了?
by ud2_ @ 2021-12-05 21:29:07
@kirit scanf
不知道还会不会继续输入,所以一直在等待,直到你按上面的方法结束输入。
by kirit @ 2021-12-05 21:29:21
@ud2_ 现在明白了,看了另外几个老哥的解释,反应过来哪里的问题了,感谢解答