C语言——数组01(课堂知识点及题目)

文章介绍了数组与循环的基本使用,包括计算数组元素个数、求平均值以及查找特定数值。示例代码展示了如何计算斐波那契数列的前10个数并格式化输出,以及在数组中查找给定数的最小下标。此外,文章还讨论了`flag`变量在查找算法中的作用。
摘要由CSDN通过智能技术生成

以下内容来自课堂总结:

总结的内容都是自己写代码时 没想到的 或者个人感觉比较重要的。如有误解,还请见谅。

一、知识点总结

1、数组和循环

for(i=0;i<n;i++)
	printf("%d",a[i]);

分析:数组下标作为循环变量,通过循环,逐个处理数组元素。

2、数组元素的使用方法

scanf("%d",&a[i]);
sum=sum+a[i];
printf("%d",a[i]);
在这里插入代码片

3、计算数组元素个数

char arr1[3]={'a','c','z'};
int len1=sizeof(arr1)/sizeof(char);
printf("%d",len1);

int arr2[5]={1,22,33,44,5};
int len2=sizeof(arr2)/sizeof(int);
printf("%d",len2);
在这里插入代码片

二、问题,程序代码及运行结果
问题一:

1,问题:输入10个整数,计算这些数的平均值,再输出大于平均值的数。

2、程序代码

#include<stdio.h>
int main()
{
	int i,sum=0;
	double average;
	int arr[10];
	printf("enter ten numbers:");
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
		sum = sum + arr[i];
	}
	average = sum / 10;
	printf("average=%.2f\n", average);
	for (i = 0; i < 10; i++)
	{
		if (arr[i] > average)
			printf("arr[%d]=%d\n", i, arr[i]);
	}
	printf("\n");
	return 0;
}
在这里插入代码片

3、运行结果(图片展示)
应该是因为系统升级,调试界面变成黑色的了,还没找到解决办法,只能凑合着看咯
问题二:
1、问题:用数列计算斐波那契数列的前10个数,并按每行打印5个数的格式输出。
分析:斐波那契数列前几项为1,1,2,3,5,8,13,······
用数组计算并存放斐波那契数列的前10个数
f[0]=f[1]=1
f[i]=f[i-1]+f[i-2] 2 <= i <= 9

2、程序代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	int i;
	int f[10] = { 1,1 };

	for (i = 2; i < 10; i++)
		f[i] = f[i - 1] + f[i - 2];
	for (i = 0; i < 10; i++)
	{
		printf("f[%d]=%d  ",i,f[i]);
		if ((i + 1) % 5 == 0)
			printf("\n");
	}
	return 0;

在这里插入代码片

3、运行结果(图片展示)
在这里插入图片描述

问题三:
1、问题:在数组中查找一个给定的数。
输入五个整数,将他们存入数组a中,再输入一个数x,如果找到,输出相应的最小下标,否则,输出 “NOT FOUNT”。

2、程序代码

#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS

int main()
{
	int a[5];
	int i, x,flag;
	printf("enter five numbers:");
	for (i = 0; i < 5; i++)
		scanf("%d", &a[i]);
	printf("enter x:");
	scanf("%d", &x);
	flag = 0;
	/*
	for (i = 0; i < 5; i++) 
	{
		if (a[i] == x)
			printf("lndex = %d\n", i);
	}   这段for循环可写可不写
	*/
	for (i = 0; i < 5; i++)
		if (x == a[i])
		{
			printf("Min lndex is %d\n", i);
			flag = 1;
			break;
		}
	if (flag == 0)
			printf("NOT FOUNT");
		return 0;
			
}
这里思考一下flag的作用(下面会解答)

3、编译运行结果
例子,如下:
输入:2 9 8 1 9
9
输出:1
输入:2 9 8 1 6
7
输出:NOT FOUNT

在这里插入图片描述
在这里插入图片描述
#解答flag的作用:如输入的x时数组中的数字,flag其实就是为了跳过下面的if语句,如果输入的不是数组内的数字就是为了执行下面的if语句。

#如果去掉 break 会出现什么样的情况呢?
还以上面的数字为例:


其实就是在输出Min lndex is 1,后还会再进行循环。
#也可以思考 break 有什么作用。

问题四:

1,问题:在数组中查找最小值,及其下标。
输入x(x<10), 再输入x个数, 输出最小值和它所对应的下标,用index记录最小值对应的下标 , a[index]就是最小值。

2、程序代码

#include<stdio.h>

int main()
{
	int x,i,index;
	int a[10];
	printf("enter x:");
	scanf("%d", &x);
	printf("enter  numbers:");
	for (i = 0; i < x; i++)
		scanf("%d",&a[i]);
	index = 0;  
	for (i = 1; i < x; i++)
	{
		if (a[index] > a[i])
			index = i;
	}
	printf("min is %d ,index is %d",a[index],index);

	return 0;
}
在这里插入代码片

3、编译运行结果
例子,如下
enter x:6
enter numbers:2 9 -1 8 1 6
min is -1, index is 2
在这里插入图片描述
后面还会出关于数组相关题型解题思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值