c语言从键盘输入数组
时间: 2023-11-12 18:09:02 浏览: 274
以下是两种C语言从键盘输入数组的方法:
1. 从键盘输入整型内容到整型数组(一维数组):
```c
int i, a[2];
for (i = 0; i < 2; i++) {
scanf("%d", a + i); // 这里写a+i 才是一个一个赋值。数组就是指针 a+i=a[i] //scanf("%d",&a[i]); //这么写也行
}
```
2. 从键盘输入字符类型到字符数组:
```c
char ch[100];
scanf("%s", ch); // &ch也可以
```
或者:
```c
char ch[100];
for (int i = 0; i < 3; i++) {
scanf("%c", ch + i); // 这种有个缺点,一次只能输入一个字符,输入大于1个的字符也是第1个字符而已 // &ch[i]也行
}
```
相关问题
c语言从键盘输入数组,并不知道数组长度
如果要从键盘输入数组,但是不知道数组的长度,可以使用动态内存分配函数malloc()来动态分配内存空间。具体做法如下:
1. 先输入一个较大的数n,表示数组的最大长度;
2. 调用malloc()函数动态分配n个元素的内存空间;
3. 使用scanf()等函数从键盘输入数组元素;
4. 根据输入的元素个数,重新调整内存空间大小,使其正好能够容纳输入的元素。
示例代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, i;
int *arr;
printf("请输入数组的最大长度:");
scanf("%d", &n);
arr = (int*)malloc(n * sizeof(int));
if (arr == NULL) {
printf("内存分配失败!");
exit(1);
}
printf("请输入数组元素,以0结束:");
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
if (arr[i] == 0) {
break;
}
}
arr = (int*)realloc(arr, i * sizeof(int));
if (arr == NULL) {
printf("内存重新分配失败!");
exit(1);
}
printf("您输入的数组为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
以上代码中,先通过scanf()函数输入数组的最大长度n,然后调用malloc()函数分配n个元素的内存空间,接着使用for循环从键盘输入数组元素,当输入0时,退出循环;最后使用realloc()函数重新调整内存空间大小,使其正好能够容纳输入的元素。注意,realloc()函数调整内存空间大小后,原来的内存空间会被释放,因此需要重新将arr指针指向新的内存空间。
c语言2维字符数组从键盘输入
下面是一个示例代码,可以从键盘输入一个2维字符数组:
```c
#include <stdio.h>
int main() {
char arr[3][4]; // 定义一个3行4列的字符数组
// 从键盘输入字符
printf("请输入一个3行4列的字符数组:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
scanf("%c", &arr[i][j]);
}
getchar(); // 输入完一行后需要消耗掉换行符
}
// 输出字符数组
printf("您输入的字符数组是:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%c ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
注意,在输入字符时,需要使用`scanf("%c", &arr[i][j])`,因为字符数组的每个元素都是一个字符类型。同时,在输入完一行字符后,需要使用`getchar()`来消耗掉输入时的换行符。