不要给定的数组,要求能够用户输入数组,用c语言
时间: 2024-10-20 11:05:12 浏览: 19
如果你需要让用户输入一个整数数组,你可以使用`scanf`函数从标准输入读取。这里有一个简单的例子,展示了如何在C语言中获取用户输入的数组并计算最长单调递增子序列的长度:
```c
#include <stdio.h>
#include <stdlib.h> // 引入malloc函数用于动态内存分配
#define MAX_SIZE 100
int get_input(int* arr, int& size) {
size = 0;
while (size < MAX_SIZE) {
int num;
scanf("%d", &num);
if (num == -1) break; // 用户输入-1表示结束输入
arr[size++] = num;
}
return size;
}
int lengthOfLIS(int arr[], int n) {
// ... (之前最长递增子序列的计算代码)
}
int main() {
int size;
int* input_arr = malloc(MAX_SIZE * sizeof(int)); // 动态分配内存
printf("Enter numbers separated by spaces (input -1 to stop): ");
if (get_input(input_arr, size) <= 0) {
free(input_arr); // 释放内存,如果用户未输入任何数字
printf("No elements entered.\n");
} else {
int max_len = lengthOfLIS(input_arr, size);
printf("Length of the longest increasing subsequence is %d\n", max_len);
free(input_arr); // 一定要记得释放动态分配的内存
}
return 0;
}
```
在这个程序中,首先询问用户输入数字,直到他们输入-1停止。然后将输入的数值存储在一个动态分配的数组中,并传递给`lengthOfLIS`函数。结束后,别忘了用`free`函数释放动态分配的内存。
阅读全文