思想重要,背代码没有用;理解重要,灵活会用才能成为大佬。
一、一维数组
形式为:arrayName[index]
备注:
(1)int a[4];定义了一个长度为4的整型数组,名字是a;
(2)单独的 a[4]表示数组中的第5个元素。
从简单开始
/*
求两个数之和
*/
#include<stdio.h>
int main(){
int a;
int b;
a=5,b=8;
printf("%d",a+b);//注意输出得类型
return 0;
}
求平方和
#include <stdio.h>
int main(){
int a[20];
int i;
for(i=0;i<20;i++){
a[i]=i*i;
printf("%d\n",a[i]);
}
return 0;
//或者单独打印输出也可以
// for(i=0;i<20;i++){
// printf("%d\n",a[i]);
// }
}
求两元素之和:
#include <stdio.h>
int main(){
int a[20],b[10];
int i,sum;
for(i=0;i<20;i++){
a[i]=i*i;
b[i]=i*i-2;
sum=a[i]+b[i];
printf("%d\n",sum);
}
return 0;
//或者单独打印输出也可以
// for(i=0;i<20;i++){
// printf("%d\n",a[i]);
// }
}
二、二维数组(可以理解为数学中的矩阵)
二维数组定义的一般形式是:
dataType arrayName[length1][length2];
其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。
#include <stdio.h>
int main(){
int a[10][10];
int i,j;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
a[i][j]=i+j;
printf("%5d", a[i][j]);
}
printf("\n");//输出完一行以后换行形成矩阵
}
return 0;
}
运行结果:
image.png
下面改写为手动输入矩阵元素,这里把元素个数降低一下进行测试
#include <stdio.h>
int main()
{
int a[4][4];
int i, j;
printf("请输入16个元素:\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
printf("%5d", a[i][j]);
}
printf("\n");//输出完一行以后换行形成矩阵
}
return 0;
}
执行结果:
image.png
求元素与对角线元素分别加和:
#include <stdio.h>
int main()
{
int a[4][4];
int i, j,sum1=0,sum2=0;
printf("请输入16个元素:\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
sum1=sum1+a[i][j];//元素加和
printf("%5d", a[i][j]);
}
printf("\n");//输出完一行以后换行形成矩阵
}
//计算对角线
for (i = 0; i < 4; i++)
{
sum2=sum2+a[i][i];//元素加和
printf("对角线的第%d行%d列的元素为:%5d", i+1,i+1,a[i][i]);
printf("\n");//输出完一行以后换行形成矩阵
}
printf("所有元素之和为:%5d\n", sum1);
printf("对角线元素之和为:%5d", sum2);
return 0;
}
执行结果:
image.png
计算数组个数及对应值
# include <stdio.h>
int main()
{
int a[10]={1,34,5,6,8,2,-5,-5,0,66};
int cnt = sizeof(a) / sizeof(a[0]);
int i=0;
printf(" 元素个数为|a[i]| = %d\n", cnt);
for(i=0;i<10;i++){
printf("a[%d] = %d\n", i,a[i]);
}
return 0;
}
执行结果:
image.png
遍历2维数组及对应值
#include <stdio.h>
int main()
{
int i = 0, j = 0;
int arr[4][4] = { { 11,-12,3,1 },{ 2,-3,4,-4 },{ -3,4,5,0 },{ 4,5,-6,9 }};
//遍历2维数组
for (i = 0;i<4;i++) {
for (j = 0;j<4;j++)
{
printf("arr[%d][%d] = %d ", i+1, j+1, arr[i][j]);
}
printf("\n");
}
return 0;
}
执行结果:
image.png
判断数组中是否包含某个元素(通过索引判断)
#include <stdio.h>
//通过索引查询一维数组
int main()
{
int nums[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int i, num, index=-1 ;
//这里的-1是用来判断输入负号的情况,也可设置其他
printf("请输入一个整数: ");
scanf("%d", &num);
for(i=0; i<10; i++)
{
if(nums[i] == num)
{
index = i;
break;
}
}
if(index < 0 || index>10)
{
printf("很遗憾,%d不在数组中!\n", num);
}
else
{
printf("太棒了,%d在数组中, 在数组中的位置为%d.\n", num, index);
}
return 0;
}
执行结果:
image.png
三、字符数组
打印字符型
#include <stdio.h>
#include <string.h>
int main(){
char str[30];
char c;
int i;
for(c=97,i=0; c<=122; c++,i++){
str[i] = c;
}
printf("%s\n", str);//以数字生成字符型 ,通过ASCII 码表可知
long len = strlen(str);
printf("这个字符数组的长度为 %ld.\n", len);
return 0;
}
执行结果:
image.png
字符串连接函数 strcat()
strcat 是 string catenate 的缩写,意思是把两个字符串拼接在一起,语法格式为:
strcat(arrayName1, arrayName2);
arrayName1、arrayName2 为需要拼接的字符串。
strcat() 将把 arrayName2 连接到 arrayName1 后面,并删除原来 arrayName1 最后的结束标志'\0'。这意味着,arrayName1 必须足够长,要能够同时容纳 arrayName1 和 arrayName2,否则会越界(超出范围)。
strcat() 的返回值为 arrayName1 的地址。