【C语言自学轨迹】
Part 3.1 函数
初见函数
函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数.
在 C 语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:
- **返回类型:**一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
- **函数名称:**这是函数的实际名称。函数名和参数列表一起构成了函数签名。
- **参数:**参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
- **函数主体:**函数主体包含一组定义函数执行任务的语句。
Part3.2 数组
引例
在之前的学习中,我们知道了如何使用循环计算平均数,但此时并没有记录下每一个数据,如果我们需要在计算平均数后输出大于平均数的数据,此时我们就不得不记录下数据,那如何实现记录这一动作呢?
下面我们引入数组的概念。
首先需要定义数组类型和变量名称,方括号中的数即为该数组中包含元素的数量,我们可以将方括号当作一个下标,若我们需要读取这个数组中第i个数据,则可以用
printf("%d",grade[i]);
来读取此数据,其意思为在grade数组中的第i个数。
代码块
#include<stdio.h>
int main()
{
int x;
double sum=0;
int count=0;
int i=0;
int number[100];
printf("请输入需要计算平均数的数");
scanf_s("%d",&x);
while(x!=-1)
{
number[count]=x;
sum=sum+x;
count++;
scanf_s("%d",&x);
}
double average=0;
average=sum/count;
printf("这些数的平均数为%lf\n",average);
//遍历数组
for(i=0;i<count;i++)
{
if(number[i]>average)
{
printf("%d\t",number[i]);
}
}
return 0;
}
ATTENTION
在定义总和sum和平均数average时需要用double进行定义。
统计个数
代码块
#include<stdio.h>
int main()
{
int const NUMBER=10
int x;
int count[NUMBER];
int i=0;
for(i=0;i<NUMBER;i++)
{
count[i]=0;
}
printf("请输入数量不确定的[0,9]范围内的数,以-1表示结束");
scanf_s("%d",&x);
while(x!=-1)
{
if(x>=0&&x<=9)
{
count[x]++;
}
scanf_s("%d",&x);
}
for(i=0;i<NUMBER;i++)
{
printf("%d出现的次数为%d\n",i,count[i]);
}
return 0;
}
数组集成初始化
对数组赋值的一些方法
int a[13]={2};
int b[]={1,2,4,5,6,7,8,8};
int c[6]={[0]=1,[2]=3,4};
第一种赋值的结果是除了数组中的第一个数是2外其他都是0;
所以初始化数组可以用该方法。
第二种赋值的结果是数组按大括号中的数排序;
第三种赋值的结果是数组第一位的数为0,第三位第四位分别是3和4,其他位数均为0。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iXfc5NA3-1648448533912)(D:\学习C语言\数组集成初始化.png)]
用sizeof计算数组中的元素个数
int a[]={1,3,5,7,8,2,7,9,5,3};
printf("%lu",sizeof(a)/sizeof(a[0]));
定位
函数与数组混合
做一个简单的查询,输入数字查询这个数在程序中的第几位。
代码块
#include<stdio.h>
//一个简单的搜索程序
int main(void)
{
int a[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13};
int x;
printf("请输入需要查找位置的数字");
scanf_s("%d", &x);
int position = 0;
position = search(x, a, sizeof(a) / sizeof(a[0]));
if (position != -1){
printf("%d在第%d位", x, position + 1);
}
else{
printf("这个数不存在");
}
return 0;
}
int search(int key, int a[], int length)
{
int ret = -1;
int i = 1;
for (i = 0; i < length; i++)
{
if (a[i] == key) {
ret = i;
}
}
return ret;
}
二维数组
int a[3][5]={
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5}
}
这里我们定义了一个三行五列的数组,就相当于在一个3×5的矩阵里放进以上的数据。
二维数组的遍历
for(i=0;i<length1;i++){
for(j=0;j<length2;j++){
a[i][j]=i*j;
}
}