多了一个换行怎么解决
本帖最后由 牵风 于 2021-11-29 17:08 编辑#include <stdio.h>
int main() {
int n,m;
scanf("%d %d",&n,&m);
int a,b;
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
scanf("%d",&a);
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
b=a;
for(int i=0; i<m; i++) {
for(int j=0; j<n; j++)
printf("%d ",b);
printf("\n");
}
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++)
printf("%d ",a);
printf("\n");
}
} 你是指在输入的时候多一个换行吗?
如果是的换就在scanf("%d",&a);
后面加一个:getchar();
把这个‘\n’,从输入缓冲区中读出来。 编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
3 4
1 2 3 4
5 6 7 8
9 10 11 12
1 5 9
2 6 10
3 7 11
4 8 12
1 2 3 4
5 6 7 8
9 10 11 12
D:\0002.Exercise\C>
这里面的哪个换行是多余的,请问? 你是指你的输出最后一行的结果比给的例子差了一行?
这个只是单纯地因为你输出的结果之间的间隙要比例子的间隙大一点点的;
然后这么多行,一点点的差距累加起来,所以最后一行看起来就多了一行;
并不是你代码的问题、 番杰 发表于 2021-11-29 17:16
你是指你的输出最后一行的结果比给的例子差了一行?
这个只是单纯地因为你输出的结果之间的间隙要比例子的 ...
主要oj过不了
牵风 发表于 2021-11-29 17:18
主要oj过不了
但是你这个程序确实是没有问题呀{:10_266:}
至少我是没看出来,有编译器编译也没开出来啥问题;
我没有用过OJ;也不知道它是咋进行判断的;
但是我觉得你这程序没有问题;
楼主,贴一下题目要求。过 OJ 必须得满足题目要求。 jackz007 发表于 2021-11-29 17:31
楼主,贴一下题目要求。过 OJ 必须得满足题目要求。
输入一个二维数组a,然后将改二维数组中行和列中的元素互换,存到另外一个二维数组b中,然后将b与a按一定格式分别输出
输入
测试数据由多组组成,每一组的格式如下:
第一行输入两个整数n、m(n,m<100),表示二维数组大小a
接下来有n行,每行有m个整数(第i行的第j个数表示a的值),数与数之间空格隔开(见样例输入)
输出
对于每组测试数据首先输出数组b(格式参考样例输出),每个数后面带一个空格,接着输出数组a,格式同数组b(见样例输出)
样例输入 Copy
2 3
1 2 3
4 5 6
样例输出 Copy
1 4
2 5
3 6
1 2 3
4 5 6 超时吗? 傻眼貓咪 发表于 2021-11-29 17:34
超时吗?
不是
牵风 发表于 2021-11-29 17:39
不是
就是过不了
本帖最后由 jackz007 于 2021-11-29 17:50 编辑
牵风 发表于 2021-11-29 17:43
就是过不了
试试这个呢
#include <stdio.h>
void show(int d[] , int n , int m)
{
int c , i , j ;
for(c = i = 0 ; i < n ; i ++) {
printf("%d" , d) ;
for(j = 1 ; j < m ; j ++) printf(" %d" , d) ;
printf("\n") ;
}
}
int main()
{
int i , j , n , m ;
scanf("%d%d" , & n , & m) ;
int a , b ;
for(i = 0 ; i < n ; i ++) for (j = 0 ; j < m ; j ++) scanf("%d" , & a) ;
for(i = 0 ; i < n ; i ++) for(j = 0 ; j < m ; j ++) b = a ;
show(b , m , n) ;
show(a , n , m) ;
}
编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
2 3
1 2 3
4 5 6
1 4
2 5
3 6
1 2 3
4 5 6
D:\0002.Exercise\C> jackz007 发表于 2021-11-29 17:48
试试这个呢
编译、运行实况:
还是一样
牵风 发表于 2021-11-29 17:51
还是一样
OJ 回应的错误点或原因是什么? jackz007 发表于 2021-11-29 17:55
OJ 回应的错误点或原因是什么?
就是那张图
#include <stdio.h>
int main()
{
int n, m, x;
scanf("%d%d", &n, &m);
int a;
int b;
for(size_t i = 0; i < n; i++){
for(size_t j = 0; j < m; j++){
scanf("%d", &x);
a = x;
b = x;
}
}
for(size_t i = 0; i < m; i++){
for(size_t j = 0; j < n-1; j++){
printf("%d ", b);
}
printf("%d", b);
printf("\n");
}
for(size_t i = 0; i < n; i++){
for(size_t j = 0; j < m-1; j++){
printf("%d ", a);
}
printf("%d", a);
printf("\n");
}
return 0;
} 牵风 发表于 2021-11-29 17:59
就是那张图
这就是那张图,哪个地方多出了一个换行?
D:\0002.Exercise\C>x
10 9
1 2 3 4 5 6 7 8 9
0 2 3 4 5 6 7 8 9
2 5 4 6 8 4 5 3 1
2 5 4 6 8 2 1 8 4
2 5 4 6 8 4 5 3 1
0 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 9 0
0 2 3 4 5 6 8 9 5
2 5 4 8 4 5 3 1 1
2 5 4 6 8 2 8 4 6
1 0 2 2 2 0 1 0 2 2
2 2 5 5 5 2 2 2 5 5
3 3 4 4 4 3 3 3 4 4
4 4 6 6 6 4 4 4 8 6
5 5 8 8 8 5 5 5 4 8
6 6 4 2 4 6 6 6 5 2
7 7 5 1 5 7 7 8 3 8
8 8 3 8 3 8 9 9 1 4
9 9 1 4 1 9 0 5 1 6
1 2 3 4 5 6 7 8 9
0 2 3 4 5 6 7 8 9
2 5 4 6 8 4 5 3 1
2 5 4 6 8 2 1 8 4
2 5 4 6 8 4 5 3 1
0 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 9 0
0 2 3 4 5 6 8 9 5
2 5 4 8 4 5 3 1 1
2 5 4 6 8 2 8 4 6
D:\0002.Exercise\C> jackz007 发表于 2021-11-29 18:21
这就是那张图,哪个地方多出了一个换行?
javascript:; 牵风 发表于 2021-11-29 21:55
javascript:;
就是这个
页:
[1]