c++第四次打卡(数组从入门到出道)


前言

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

一、数组的知识点

  1. 数组声明: 类型 数组名[size]
    _______________________长度为size-1 : [0,1…size-1]

    #例如这样 : int a [3]
    __________ char b [5] ;

  2. 数组初始化
    __可以标明size,也可以不标
    __C++中数组超界不会报错,请小心检查

#例如:int a[5] = {1,3,5,7,9};
#或者:int b[ ] = {2,4,6,8,10};

  1. 数组下标变量( a [n] )
    下标变量可以单独赋值
    可以直接计算
    可以用cin>>输入,cout<<输出
#include<iostream>
using namespace std;
main()
{
    
    
	int a[5],i,sum;
	double avg;
	for(i=0;i<=5;i++){
    
    
		cout<<"a["<<i<<"]=";
		cin>>a[i];
	}
	cout<<endl;
	
	for(i=0;i<=5;i++){
    
    
		cout<<"a["<<i<<"]=";
		cout<<a[i]<<"\t"; 
	} 
	
	for(i=0;i<=5;i++){
    
    
		sum+=a[i]; 
	} 
	cout<<endl<<"sum="<<sum<<endl;
	
	avg=sum/5;
	cout<<"avg="<<avg<<endl;
 } 

注意:’ ’ 单引号" " 双引号用途不一样," "双引号表示字符,’ '单引号只会输出乱码!
在这里插入图片描述

二、数组的排序与查找

1.遍历法查找最大值

代码如下:

#include<iostream>
using namespace std;
main(){
    
    
int a[8]={
    
    16,47,29,65,83,56};
int max=0,i;
for(i=0;i<8;i++){
    
    
	if(a[max]<a[i]) 
	  max=i;
}	
cout<<"max="<<a[max];
}

2.二分法查找元素

代码如下(示例):

#include<iostream>//有问题的代码
using namespace std;
main()
{
    
    //程序功能 :排序并查找元素 
  int a[5],low,high,mid;
  int i,cir,count;
  	
  for(i=0;i<5;i++){
    
    
	cout<<"a["<<i+1<<"]=";
	cin>>a[i];//输入 
  }	
  
  while(count>=10)
  {
    
    
  	for(i=1;i<5;i++)
	  {
    
    
  		if(a[i]<a[i-1])
		  {
    
    
  			cout<<a[i]<<"<"<<a[i-1]<<endl;
  			cir=a[i+1];
			a[i+1]=a[i];
  			a[i]=cir;
  			cout<<endl<<"i="<<i<<endl;
  			break;
		  } 
		  count+=1; 
	  }
	  cout<<endl<<"i="<<i<<endl;
  }
  cout<<"a[0]="<<a[0]<<endl;
  cout<<"a[1]="<<a[1]<<endl;
  cout<<"a[2]="<<a[2]<<endl;
  cout<<"a[3]="<<a[3]<<endl;
  cout<<"a[4]="<<a[4]<<endl;
}

经过不断的努力和调试,我们写出了正确的代码!

#include<iostream>
#define size 5
using namespace std;
main()
{
    
    
 int a[5];
	
 //功能1:数组数据的输入和输出 
  for(int i=0;i<5;i++)
   {
    
    
	cout<<"a["<<i<<"]:\n";
    cin>>a[i];
   }
  cout<<"a:";
  for(int i=0;i<5;i++)
	  cout<<i<<":\t"<<a[i]<<endl ;
	    
	//功能2:排序(从小到大)
	int t;//t为中间变量 
  for(int i=0;i<4;i++)
   {
    
    
  	for(int j=i+1;j<5;j++)
  	 {
    
    
  	  if(a[j]<a[i])
		{
    
    
		 cout<<"a[j]="<<a[j]<<"\t";
		 cout<<"a[i]="<<a[i]<<endl;
		 //记住:是将后面的直赋值给前面,a=2 
		 t=a[j];
		 a[j]=a[i];
		 a[i]=t;
		 	
		 cout<<"change a[j]="<<a[j]<<"\t";
		 cout<<"change a[i]="<<a[i]<<endl;
			}	
	  }
    }	 
   for(int i=0;i<5;i++)
	cout<<i<<":\t"<<a[i]<<endl ;
	
 //排序完毕,开始二分查找
 int low,high,mid;
 int value,find;
 low=0,high=size;
 mid=(high+low)/2;
 
 cout<<"value=";
 cin>>value;
 
 while(low<=high&&find==0)
  {
    
    
   	mid=(high+low)/2;
   	
   	cout<<endl<<"high=\t"<<high<<endl;
   	cout<<"low=\t"<<low<<endl;
   	cout<<"mid=\t"<<mid<<endl;
   	cout<<"a[mid]\t"<<a[mid]<<endl;
   	cout<<"value=\t"<<value<<endl;
   	cout<<"find=\t"<<find<<endl;
   	if(a[mid]==value)
   	find=1;
   	
   	else if(a[mid]>value)
   	 {
    
    
   	  high=mid-1;
	 }
	 
	else if(a[mid]<value)
	 {
    
    
	 	low=mid+1;
	  } 
  } 
   
  if(find==1)
    cout<<"找到了!目标值在"<<mid<<"位上\n";
  else
    cout<<"找不到QAQ"<<"\n";  
	  
}

总结

这里对文章进行总结:
这一次我们进行数组的入门,因为二分查找是我们遇到的一个算法。所以希望大家课后能依靠自己的力量再写一遍(因为二分查找真的好难啊QAQ)
下一次打卡内容:指针变量。敬请期待!

猜你喜欢

转载自blog.csdn.net/m0_53590279/article/details/115464210