向数组读入未知数量的数字并记录读入了多少数字
时间: 2023-04-01 18:00:26 浏览: 89
您好,可以使用循环结构和计数器来实现向数组读入未知数量的数字并记录读入了多少数字。具体实现可以参考以下代码:
```
#include <stdio.h>
int main() {
int nums[100]; // 假设数组最多存放100个数字
int count = ; // 计数器,记录读入了多少数字
int num; // 用于存放读入的数字
// 循环读入数字,直到输入的数字为或数组已满
while (scanf("%d", &num) == 1 && count < 100 && num != ) {
nums[count] = num;
count++;
}
// 输出读入的数字和数量
printf("读入了%d个数字:\n", count);
for (int i = ; i < count; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return ;
}
```
以上代码可以实现向数组读入未知数量的数字并记录读入了多少数字,同时输出读入的数字和数量。希望能对您有所帮助。
相关问题
c语言实现输入一个未知长度的数组
可以使用动态内存分配函数malloc()来实现。可以先定义一个初始容量比较小的数组,然后通过循环不断读入输入的数据,当数组已满时使用realloc()函数动态扩容,直到全部数据读入完成。以下是C语言示例代码:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int capacity = 10; // 初始容量为10
int *arr = malloc(capacity * sizeof(int)); // 动态分配数组空间
int size = 0; // 当前数组大小
printf("请输入一些整数(输入-1表示结束):\n");
int num;
while (1) {
scanf("%d", &num);
if (num == -1) {
break;
}
if (size >= capacity) { // 当数组已满时,动态扩容
capacity *= 2;
arr = realloc(arr, capacity * sizeof(int));
}
arr[size++] = num; // 将输入的数放入数组中
}
// 输出数组中的内容
printf("数组中的数为:");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr); // 释放动态分配的数组空间
return 0;
}
```
这个数组的长度未知,最大为20,要求以换行符号为数组输入的结束标志
对于这种未知长度且最大不超过20的数组,你可以采用动态内存分配的方式,在读入每个元素后立即释放空间,直到遇到换行符为止。以下是一个简单的Java示例:
```java
import java.util.Scanner;
public class DynamicArrayMedian {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] array = new int[20]; // 创建最多容纳20个元素的数组
int index = 0; // 当前索引,初始化为0
System.out.print("请输入数组元素,以换行符结束: ");
while (scanner.hasNextInt()) { // 读取用户输入直到遇到换行符
array[index++] = scanner.nextInt(); // 存储下一个整数值
}
scanner.nextLine(); // 吃掉换行符
sortAndFindMedian(array, index); // 计算并打印中位数
}
private static void sortAndFindMedian(int[] arr, int size) {
if (size % 2 == 0) { // 如果数组长度偶数
int medianIndex1 = size / 2 - 1;
int medianIndex2 = size / 2;
System.out.println("中位数是: (" + arr[medianIndex1] + ", " + arr[medianIndex2] + ")");
} else { // 数组长度奇数
int medianIndex = size / 2;
System.out.println("中位数是: " + arr[medianIndex]);
}
}
}
```
在这个示例中,我们使用`Scanner`读取用户的输入,并动态存储在数组中。当遇到换行符时停止读取。接着对数组进行排序,然后计算并打印中位数。