目前的内容中,一个变数在同一个时间只能储存一个资料,如果有多笔资料就需要有多个变数
如果要计算三个数的总和,必须要宣告三个变数来储存输入的数值
#include<stdio.h>
#include<stdlib.h>
int main(){
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
printf("%d\n", x+y+z);
return 0;
}
但如果今天要输入几十个、甚至是几百个、几千个数值该怎麽办?难道真的要帮这一千个数想一千个名字?
而且程序中变数的数量是固定的,在这编写程序码时就决定了,但在现实生活中,输入数值的数量常常不是固定的,今天可能有一百笔资料,明天有一万笔,後天却只有十来笔
以上的问题都可以用阵列解决,阵列是一种可以用一个变数储存多个同型别资料的资料类型,可以想成是数列或是表格的概念
阵列中的一笔资料称为一个元/元素(Element)
宣告阵列的语法是
<型别> <名称>[<阵列大小>]
阵列大小(长度)表示这个阵列可以储存几个数值
宣告一个大小为5的一维整数阵列
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[5];
return 0;
}
阵列中元的性质和一般的变数相同,以 <变数名>[<索引>]
表示
指派阵列中第一个元的数值,并显示到萤幕上
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[5];
arr[0]=10;
printf("%d\n", arr[0]);
return 0;
}
这个阵列的长度是5,但索引只到4(因为从0开始,所以第五个元的索引是4)
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[5];
arr[0]=10;
arr[1]=10;
arr[2]=20;
arr[3]=20;
arr[4]=30;
printf("%d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
return 0;
}
透过键盘输入值
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[5];
scanf("%d%d", &arr[0], &arr[1]);
printf("%d %d\n", arr[0], arr[1]);
return 0;
}
用 {}
可以在 宣告的时候 指派阵列中的多个值,值的数量不能超过阵列的大小
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[10]={10, 10, 20, 20, 30};
printf("%d %d %d %d %d\n", arr[0], arr[1], arr[2], arr[3], arr[4]);
return 0;
}
索引可以用变数表示
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[5]={10, 10, 20, 20, 30};
int i;
scanf("%d", &i);
printf("%d\n", arr[i]);
return 0;
}
结合回圈,可以快速地设定、使用阵列的内容
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[100], n;
scanf("%d", &n)
for(int i=0; i!=n; i++)
arr[i]=i;
for(int i=0; i!=n; i++)
printf("%d ", arr[i]);
return 0;
}
版本较旧的C语言在宣告阵列时阵列大小不能用变数表示,所以常会先宣告一个较大的阵列
下面例子中的 n
表示数字的数量,第一个回圈会执行 n
次 sacnf()
,所以可以输入 n
个数值
第二个回圈中的 if()
会在 i
不为0时才显示+,因为 i
为0时视窗上还没有数字,所以不需要显示+
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[1000], n;
scanf("%d", &n);
int sum=0;
for(int i=0;i<n;i++){
scanf("%d", &arr[i]);
sum+=arr[i];
i++;
}
for(int i=0;i<n;i++){
if(i!=0)
printf("+");
printf("%d", arr[i]);
i++;
}
printf("=%d\n", sum);
return 0;
}
较新版本的C语言在宣告阵列时,可以用变数当作阵列长度
#include<stdio.h>
#include<stdlib.h>
int main(){
int n;
scanf("%d", &n);
int arr[n], i=0, sum=0;
while(i!=n){
scanf("%d", &arr[i]);
sum+=arr[i];
i++;
}
i=0;
while(i!=n){
if(i!=0)
printf("+");
printf("%d", arr[i]);
i++;
}
printf("=%d\n", sum);
return 0;
}
初始化阵列时,如果省略阵列长度,会自动将阵列长度设为述职的数量
下面例子中,arr
的长度是3
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[]={1, 2, 3};
return 0;
}
如果要让阵列全部为0,可以指派 {0}
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[10]={0};
for(int i=0; i!=10;i++)
printf("%d ", arr[i]);
return 0;
}
挖坑清单:
main()
前面的 int
,和最後一行的 return 0;
\0
在字串、字元中的意思
<<: #25 JS: HTML DOM Events - Part 3(Start Over Version)
>>: Day 11 用 Context 来组织你的测试区块
日常我们在使用 Mac 机时,总是很容易重复下载一些档案或图片,例如 复制整理档案或移动档案时,很容...
Day31 Golang Protobuf 介绍与使用 Protobuf 介绍 Protobuf 是...
上篇説到传统函式This指向基本原则:呼叫时前面的物件是谁,和怎麽定义无关,但箭头函式的This指向...
前言 今天要来讲说 Helm 这个工具 因为 Helm 版本会不断推陈出新, 因此在今天的内容着重再...
读取键盘输入 input函数 读取和写入标准输入和输出 开启的txt档案会写入 程序中的"...