【学习轨迹】C语言学习(5)

【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;
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值