程序:算法+數據
C++語言的數據:
1、基本類型: 整型,浮點型,字符型,bool類型
2、變量:此塊空間的內容可改變
類型 變量名;//分配空間:以類型
初始化變量:在定義變量同時賦初值
引用:通過名字引用變量的內容
整型變量:
類型 變量名;
常量:(空間不能改)不可以改變的量
整型常量 :
十進制199 (權10 每一位[0 9])
八進制: 0100 (權8 ,每一位[0,7])
十六進制:0x12 (權16 每一位[0,...,9,a,b,c,d,e,f)
3、運算符:
1、插入流 <<
2、輸入流 >>
4、作用域:能被引用的區間
局部變量:在函數內定義的變量
作用域:在函數內
全局變量:在函數外定義的變量
注:局部變量優先
5、引用作用域的內容:
空間名::變量名;
6、指針:就是空間在內存所在空間的地址編號
指針變量:存放指針的變量
7、取別名:給變量名取別名
規則: 類型名& 別名=變量;
int a=100;
8、重載:C++允許同名的函數,調用函數時由函數與形參共同來決定調用。
C語言規定:同一作用域下不允許出現同名現象(函數名、變量)
調用函數:函數名和形參
注:1、typedef只能對類型取別名 typedef int Intgerr
2、取別名一定要指向
9、函數模板
在同族函數內,過程一致,只是數據不一致。將函數定義定義爲一個通用的模型。
template<typename T> 或 template<class T>
T add(T a,T b)
{
}
#include<iostream>
using namespace std;
//判斷一個字符是否存在一個字符串中
//折半(二分)查找:整型數組
short finder(int buf[],int ilen,int key)
{
int mid=0;
int left=0,right=ilen-1;
while(left<=right)
{
mid=(left+right)/2;
if(buf[mid]>key)
right=mid-1;
else if(buf[mid]<key)
left=mid+1;
else
return mid;
}
}
short finder(char buf[],int ilen,int key)
{
int mid=0;
int left=0,right=ilen-1;
while(left<=right)
{
mid=(left+right)/2;
if(buf[mid]>key)
right=mid-1;
else if(buf[mid]<key)
left=mid+1;
else
return mid;
}
}
//對整型 浮點型 字符型 實現冒泡排序
template<typename T>
T finder(T ilen,T temp)
{
int i,j;
int buf[100]={1,2,5,4,3,8,7};
for(i=0;i<ilen;i++)
{
j=i;
for(j=i+1;j<ilen;j++)
{
if(buf[i]<buf[j])
{
temp=buf[j];
buf[j]=buf[i];
buf[i]=temp;
}
}
}
for(i=0;i<ilen;i++)
{
cout<<buf[i]<<" ";
}
cout<<endl;
}
short finder(float buf[],int ilen)
{
int i,j;
double temp;
for(i=0;i<ilen;i++)
{
j=i;
for(j=i+1;j<ilen;j++)
{
if(buf[i]<buf[j])
{
temp=buf[j];
buf[j]=buf[i];
buf[i]=temp;
}
}
}
for(i=0;i<ilen;i++)
{
cout<<buf[i]<<" ";
}
cout<<endl;
}
short finder(char buf[],int ilen)
{
int i,j;
char temp;
for(i=0;i<ilen;i++)
{
j=i;
for(j=i+1;j<ilen;j++)
{
if(buf[i]<buf[j])
{
temp=buf[j];
buf[j]=buf[i];
buf[i]=temp;
}
}
}
for(i=0;i<ilen;i++)
{
cout<<buf[i]<<" ";
}
cout<<endl;
}
int main()
{
char buf[100]="abcdefg";
float buf2[100]={1.2,2.5,6.7,4.6,8.4,3.5};
char buf3[100]="adghctsg";
// cout<<finder(buf1,7,8)<<endl;
// cout<<finder(buf,7,'c')<<endl;
finder(7,0);
// finder(buf2,6);
// finder(buf3,8);
return 0;
}
work: 重載 選擇排序
#include<iostream>
#include<string.h>
using namespace std;
//重載:在同一作用域下允許同名函數
template<typename T>
void swap(T* a,T* b)
{
T temp;
temp=*a;
*a=*b;
*b=temp;
}
template<typename T>
void selectsort(T buf[],int ilen)
{
//選擇排序:每一次從未排序中選擇最值(監哨值),並依次存放
int listen;
int i=0,j;
for(i=0;i<ilen-1;i++)
{
listen=i;
for(j=i+1;j<ilen;j++)
{
if(buf[j]>buf[listen])
listen=j;
}
if(i!=listen)//listen=9
{
swap(buf+i,buf+listen);
}
}
}
int main()
{
char buf[100]="qzadfdgtggetrvjtr";
selectsort(buf,strlen(buf));
cout<<buf<<endl;
return 0;
}