如何使用C语言接收指定行数的多个数字(空格隔开)?
前言
刷题中经常碰到输入困难的情况,接收数字的时候,如果面临一个n行数,但是每一行未知个数的输入如何解决呢?
这里有两种方法
自定义函数
在这个问题上首先我们不能确定每一行到底输入了多少个,这里我们可以使用一个换行符来界定,但是每一行数据应该接收后存储到哪里呢?如果是每一行数据存一个数组,那么我们需要定义n个数组,所以我们应改使用一个数组进行追加存储。
定义一个函数void read_line(int arr[], int* last)我们每一次统计数组的最后下标last,这样在外部传入一个整数指针即可循环追加。
代码实现
#include<stdio.h>
void read_line(int arr[], int* last) {
char ch;
int n;
do
{
scanf_s("%d", &n);
++(*last);
arr[*last] = n;
ch = getchar();
} while (ch != '\n');
}
int main() {
int i, length, arr[1024] = { 0 }, last = -1;
scanf_s("%d\n", &length);
for (i = 0; i < length; i++)
read_line(arr, &last);
for (i = 0; i < last; i++)
printf("%d ", arr[i]);
printf("%d", arr[i]);
return 0;
}
测试样例
2
11 12 13 14
15 16 17 18
运行结果
11 12 13 14 15 16 17 18
按任意键关闭此窗口. . .

浙公网安备 33010602011771号