1. C语言数组的概述
C语言中的数组是一种数据结构,它可以存储一系列具有相同数据类型的元素,并通过一个编号来访问每个元素。数组在C语言程序中具有重要的地位,经常用于存储和处理大量的数据。
//定义一个整型数组a,长度为10
int a[10];
1.1 数组的定义
在C语言中,数组的定义一般包括两个部分:数组的类型和数组的名称,还可以在方括号中指定数组的长度。
例如,下面是一个定义整型数组的例子:
int a[10]; //定义一个长度为10的整型数组
这里的“int”表示数组的元素类型是整型,方括号中的“10”表示数组的长度,即它可以存储10个整数。
1.2 数组的初始化
数组的初始化是指在定义数组的同时给数组赋初值。为数组赋初值可以用花括号{}括起来的一组值,用逗号分隔。例如:
int a[5] = {1, 2, 3, 4, 5}; //定义并初始化一个长度为5的整数数组
如果没有提供足够的初始值,未指定的元素将自动初始化为0。例如,下面的定义中,数组的第2到第4个元素的值将被初始化为0:
int a[5] = {1}; //定义并初始化一个长度为5的整数数组,第一个元素为1,其余元素为0
2. C语言数组的输入
数组是一种可以存储多个数据的数据类型,因此输入数组的方式会比较特殊,下面将介绍两种常见的输入数组的方式。
2.1 用数组下标依次输入
用数组下标依次输入是一种常见的输入数组的方式,其基本原理是用循环结构和scanf函数逐个输入数组元素,示例代码如下:
#include <stdio.h>
int main()
{
int a[5], i;
printf("请依次输入数组a中的5个元素:\n"); //提示语句
for (i = 0; i < 5; i++) //输入循环
{
scanf("%d", &a[i]);
}
printf("数组a的元素依次为:\n"); //提示语句
for (i = 0; i < 5; i++) //输出循环
{
printf("%d ", a[i]);
}
return 0;
}
解析:
以上代码首先定义了一个数组a和一个循环计数变量i,然后用for循环逐个输入a中的元素,并通过printf函数输出a中的每个元素。具体来说,scanf函数依次向数组a的每个元素中输入一个整数,输入过程中需要提醒用户输入的元素编号。最后通过for循环输出数组a中的元素。
注意:在输入数组的时候需要使用取地址符“&”,因为数组变量本身就是指向数组首元素的指针。
2.2 用字符串输入并解析
用字符串输入并解析是一种比较常用的方式,其基本原理是用fgets函数从键盘读入一行字符串,然后用sscanf函数解析字符串,将解析结果存到数组中,示例代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char buffer[1000], *amp;p;
int a[5], i = 0;
printf("请输入5个整数,以空格分隔:\n"); //提示语句
fgets(buffer, sizeof(buffer), stdin); //从键盘读入一行字符串
p = strtok(buffer, " "); //用空格分割字符串
while (p != NULL) //循环处理
{
sscanf(p, "%d", &a[i]); //将解析结果存到数组中
i++; //循环计数器加1
p = strtok(NULL, " "); //指向下一个分割字符串的位置
}
printf("数组的元素依次为:\n"); //提示语句
for (i = 0; i < 5; i++) //输出循环
{
printf("%d ", a[i]);
}
return 0;
}
解析:
以上代码使用了两个库函数,分别是fgets和strtok。fgets函数用于从文件中读取一行字符串,它的第一个参数是一个字符数组,第二个参数是字符数组长度,第三个参数是一个文件指针。在这里,我们把标准输入文件(stdin)作为参数传递给了它。
strtok函数用于分割字符串,第一个参数是被分割的字符串,第二个参数是分割字符串的分隔符。它返回分割后的一个子串,并用一个指针指向下一个分割字符串的位置。在我们的代码中,我们用空格作为分隔符,然后不断循环处理各个子串,将它们分别解析为整数,最终将解析结果存到数组中。
注意:在用sscanf函数解析字符串的时候,也需要使用取地址符“&”。
3. 总结
本文主要介绍了C语言数组的概述和输入方法。数组是C语言中的一种重要数据结构,它可以存储一系列具有相同数据类型的元素。在输入数组的时候,我们可以使用数组下标依次输入或者用字符串输入并解析来实现。具体实现方法可以根据实际需要选择,有的时候,我们也可以将两种输入方法结合起来使用。