C语言程序设计之数组篇

数组应用

(1)统计个数——写一个程序,统计数量不确定的【0,9】范围内的整数,统计每一种数字出现的次数,输出-1表示结束。

#include<stdio.h> 
int main(){
	const int num = 10;		//数组大小 
	int count[num];		//定义数组	//count[0]表示 0这个数字出现了多少次,类似于计数器 
	int i;
	int x;	//随机输出0-9内的数字 
	for(i = 0;i < num; i++){
		count[i] = 0;
	}			//for循环初始化数组 
	scanf("%d",&x);
	while(x != -1){
		if(x >= 0 && x <= 9){
			count[x] ++;	//数组参与运算	//用读入的数作为数组的下标,让计数器+1 
			scanf("%d",&x);		//循环结束后,不要忘记再次读入 x 
		}
	}
	for(i = 0;i < num; i++){
		printf("%d:%d\n",i,count[i]);
	}		//遍历数组输出 
	return 0;
}

(2)搜索——在一组给定的数据中,如何找出某个数据是否存在

数组的大小(sizeof 的应用:给出整个数组所占的内容的大小,单位是字节)

sizeof(a)/sizeof(a[0])

/*sizeof(a[0])给出数组的单个元素的大小,于是相除就得到了数组的单元个数*/

好处:这样的代码,一旦修改数组中初始数据,无需修改遍历的代码。

***数组比较特殊,很多情况下都要用到遍历(比如两个数组间进行赋值)
int a[]={1,2,3,4,4,5,5,6};
int b[];
for( i=0; i<length; i++){
    b[i] = a[i];
}

***关于遍历数组,常见情况

#include<stdio.h> 
//参数key——在数组a中的位置;参数a——要寻找的数组;参数length——要寻找的数组的长度
//如果找到,返回其在a中的位置;如果找不到,返回-1。 
int search(int key,int a[],int length);		//数组作为函数参数时,不能直接给出数组大小(a[]),必须要用另一个参数(length)来传入数组大小 
int main(){
	int a[]={2,4,6,4,9,7,8};	//集成初始化数组 
	int x;
	int loc;
	printf("请输入一个数字:"); 
	scanf("%d",&x);
	loc	= search(x,a,sizeof(a)/sizeof(a[0]));	//计算数组的长度 
	if( loc != -1){
		printf("%d在第%d位置上\n",x,loc); 
	}else{
		printf("%d不存在\n",x);
	}
	return 0;
}
int search(int key,int a[],int length){
	int i;
	int ret = -1;
	for(i = 0;i < length; i++){
		if(a[i] == key){
			ret = i;
			break; 
		}
	}	//自定义查找函数 
	return ret;
}

(3) 数组中的素数

回顾(求素数思路——先排除除2以外的所有偶数,再从3走到sqrt(x),间隔为2)

int isPrime(int x){
    int ret = 1;
    int x;
    if(x == 1 ||(x % 2 == 0 && x != 2))
        ret = 0;
    for( i=3; i<sqrt(x); i+=2){
        if(x % i == 0){
            ret = 0;
            break;
        }
    }
    return ret;

(4)在有序数组中插入元素

一维数组的使用——开关灯问题

#include<stdio.h>
#define N 1001
int main(){
	int lamp[N],i,j,n,k;
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;i++){
		lamp[i]=0;
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=k;j++){
			if(i%j==0){
				lamp[i]=!lamp[i];
			}
		}
	}
	for(i=1;i<=n;i++){
		if(lamp[i])
		printf("%d ",i);
	}
	return 0;
} 

  • 0
    点赞
  • 3
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页
评论

打赏作者

小唐学姐

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值