c语言吧scanf读进for,用scanf读入多行数据

问题描述:

在做在线笔试的时候,给出的输入样例是这样的:

3 4 //输入第0行,表示 接下来要输入n 行 m 列数据

1 2 3 4 //输入第1行

11 12 13 14 //输入第2行

21 22 23 24 //输入第3行

其中,每行元素以空格隔开,行间以回车符隔开。若在dos下采用这种方式输入数据,怎样才能将这部分数据无误的读入到程序呢?

问题解决:将输入的数据存放在二维数组中为例

int n = 0, m = 0;

int **pArray = NULL;

int i, j;

1. c++中,用cin

cin >> n >> m;

pArray = (int **)malloc( n * sizeof(int*) );

for( i=0; i

{

pArray[i] = (int*)malloc( m * sizeof(int) );

for( j=0; j

cin >> pArray[i][j];

}在c++中比较容易实现,需要注意的是添加对应的头文件

#include

using namespace std;

2. c语言中,用scanf

scanf("%d %d", &n, &m );

pArray = (int **)malloc( n * sizeof(int*) );

for( i=0; i

{

pArray[i] = (int*)malloc( m * sizeof(int) );

for( j=0; j

{

scanf("%d", pArray[i] + j );

}

}

特别注意:此处for循环中的scanf中的%d后面千万不用加空格。

输出测试:输出和输入的是否一致

printf("============ 输入数据测试 ============\n");

for( i=0; i

{

for( j=0; j

{

printf("%d ", pArray[i][j] );

}

printf("\n");

}

小结:

代码看起来很简单,但是笔者在写这段代码的时候还是犯了个比较大的错误。第0行的数据元素个数是固定的,即按照数据输入的方式来读数据:scanf("%d %d", &n, &m ), 两个%d间是以空格隔开的,能够正确读入数据。然后笔者想当然的认为在for循环下也是采用这种空格方式,结果不管怎么样输入,结果不对或者不理想。当不用空格的时候,这个问题居然意外的解决了,哇哦,原来是这样的!天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值