c++算法(数组)

一、引子

        很久很久以前,森林里有一只猴子,一天她的妈妈(猴妈)叫他用电脑存一组数据:1,7,9,96,48,38,40,29、、、、、75,90;这只小猴天生对数学不感兴趣,于是他开始写:

#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,f,g、、、、;
int main(){
    cin>>a>>b>>c>>d>>e>>f>>g>>、、、;
	return 0;
}

但这样始终太慢了,这是他的朋友聪聪来了,交给他了一封信,写道:

                                                 数组

二、认识数组

一般来说,像小猴的情况就要使用数组,接下来我为大家讲解;

1.数组是有名称和下标组成的;

a[数组大小](数组大小即a[]中的数字就是a数组所能够储存的数字的多少)

如:a[5]就只能存五个数字;

2.实质: 如图:

在图中,a所对应的下标分别对应着一个数;

假设想取某一个数 只需要:

cout<<a[某一个数];就可以;

当然,这样的输入也很简单,像这样;

#include<bits/stdc++.h>
using namespace std;
int a[100000];
int main(){
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        cout<<a[i];
    }
	return 0;
}

或者像这样:

#include<bits/stdc++.h>
using namespace std;
int a[100000]={1,2,3,4,5,6,7,8,9,10,9879,、、、};
int main(){
    for(int i=1;i<=n;i++){//n代表总个数;
        cout<<a[i];
    }
	return 0;
}

 辨析:

a[10]={1,2,3,4,5,6,7,8,9,10};与for(int i=1;i<=10;i++) cin>>a[i];是等价的;

这就是最基础的数组;

三、上题目

首先读完题目,就知道是一个基本的对比题;

首先思考!!思路:

进行一个一个的对比;OK;上代码!

#include<bits/stdc++.h>
int n,a,b,c[34],d[8];//a数组代表小明彩票号码,b数组代表中奖号码,d数组代表中N等奖个数 
using namespace std;
int main()
{
	cin>>n;
	for(int i=1;i<=7;i++){//7个号码 
		cin>>b;//输入中奖彩票号码
		c[b]=1; 
	}
	for(int i=1;i<=n;i++){//小明买了n张彩票 
		int sx=0;
		for(int j=1;j<=7;j++){ 
			cin>>a;//输入小明彩票号码 
			if(c[a]==1)sx++;
		} 
		d[7-sx+1]++;//中7-sx+1等奖的计数器+1
	} 
	for(int i=1;i<=7;i++){
		cout<<d[i]<<" ";//输出数组 
	}
	return 0; 
}

四、二维数组;

对比:

这是一个二维数组,用b[][]表示;一共存储n*m个数据;

 int b[1010][1010];

for(int i=1;i<=n;i++){

        for(int j-1;j<=m;j++){

                cin>>a[i][j];

        }

}//输入;

接下来,话不多说上题目!!! 

                               先思考,在做题!! 

#include<iostream>
using namespace std;
int n,m;
int a[105][105];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cout<<a[j][i]<<" ";
		}
		cout<<endl;
	}
	return 0;
}

OK,解决了!

最后就是上期的答案;

#include<bits/stdc++.h>
using namespace std;
int n,s=0;
int main()
{
    cin>>n;
    while(n) s=s*10+n%10,n/=10;
    cout<<s;
    return 0;
}

课后小题: 

再见!!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值