利用scanf将数字存入数组
时间: 2024-10-12 16:17:58 浏览: 7
在C语言中,`scanf()` 函数常用于从标准输入(通常是键盘)读取数据,并将其存储到指定的位置。如果你想把用户输入的数字存入数组,你需要首先定义一个数组并确定你想获取多少个数字。下面是一个简单的例子:
```c
#include <stdio.h>
int main() {
int size, i;
printf("请输入数组的大小:");
scanf("%d", &size); // 获取用户输入的数组长度
// 确保数组大小大于0
if(size <= 0) {
printf("错误:数组大小必须大于0.\n");
return 1;
}
int numbers[size]; // 创建一个大小为size的数组
printf("请输入%d个数字:\n", size);
for(i = 0; i < size; i++) {
scanf("%d", &numbers[i]); // 逐个读取并将数字存入数组
}
printf("你输入的数字是:");
for(i = 0; i < size; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
在这个示例中,程序先让用户输入数组的大小,然后根据这个大小创建一个数组。接着,它会提示用户输入指定数量的数字,并将每个数字分别存储到数组中。
相关问题
将自己学号后10个同学的学号(学号最后两位)存入数组(for循环实现,直接在程序中赋值,不用scanf读入),并将其逆序输出(for循环实现)。将第5个数与第9个数交换(用数组实现);将第6个数与第2个数交换(用指针实现)。
以下是使用C语言完成您提出的任务的示例代码:
```c
#include <stdio.h>
int main() {
// 假设学号后10位的数字从1到10
int student_ids[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int temp; // 用于交换的临时变量
// 逆序输出学生学号
printf("逆序输出学号:");
for (int i = 9; i >= 0; i--) {
printf("%d ", student_ids[i]);
}
printf("\n");
// 交换第5个数(下标为4)与第9个数(下标为8)
temp = student_ids[4];
student_ids[4] = student_ids[8];
student_ids[8] = temp;
// 使用指针交换第6个数(下标为5)与第2个数(下标为1)
int *ptr1 = &student_ids[5];
int *ptr2 = &student_ids[1];
temp = *ptr1;
*ptr1 = *ptr2;
*ptr2 = temp;
// 再次逆序输出交换后的学生学号
printf("交换后的逆序输出学号:");
for (int i = 9; i >= 0; i--) {
printf("%d ", student_ids[i]);
}
printf("\n");
return 0;
}
```
这段代码首先定义了一个包含10个学号的数组,然后使用for循环逆序输出这些学号。接着,通过下标直接交换数组中的第5个和第9个学号,再利用指针交换第6个和第2个学号的值。最后,再次逆序输出交换后的学号数组。
数组 十进制转二进制
数组是一种数据结构,它可以存储多个相同类型的数据。在C语言中,数组可以用来存储一组数字或字符等数据。而十进制转二进制是一种常见的数值转换方法,可以将十进制整数转换为二进制整数。除了前面提到的“除2取余,逆序排列”法和基本写法,还可以利用数组来实现。
具体做法是,先将十进制整数不断除以2,将每次得到的余数存储到数组中,直到商为0为止。然后将数组中的元素倒序输出,即为该十进制整数对应的二进制整数。
下面是一个示例代码:
```
#include <stdio.h>
int main() {
int b, i, c = 0, a[30] = {0};
scanf("%d", &b);
if (b == 0) {
printf("0");
return 0;
}
while (b != 0) {
i = b % 2;
a[c] = i;
c++;
b = b / 2;
}
c--; //因为c代表存入数据的长度而下表范围是0~c-1
for (; c >= 0; c--) { //倒序输出即为这个数字对应的二进制
printf("%d", a[c]);
}
return 0;
}
```