数组
一维数组
构造的数据类型之一,由若干数据类型相同的元素组成。其中数组名是地址常量不可修改,所以不能赋值操作,sizeof(数组名)求总内存空间。
特点:数组不赋初始值,随机生成
static修饰,默认位0
部分赋值,其余默认为0
//验证以上
#include <iostream>
using namespace std;
int main()
{
int a[5];
static int b[8];
int c[6]={3,3,2};
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
for(int i=0;i<8;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;
for(int i=0;i<6;i++)
{
cout<<c[i]<<" ";
}
cout<<endl;
return 0;
}
以上是输出结果
//对一组数据进行冒泡排序
#include <iostream>
using namespace std;
int main()
{
int arr[8]={3,76,99,34,6,78,46,77};
cout<<"排序前数据为:";
int n = sizeof(arr)/sizeof(int);//求个数
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
int temp;
//开始冒泡排序
for(int i=0;i<n-1;i++)//第一层只用到n-1
{
for(int j=0;j<n-1-i;j++)//第二层再减i
{
if(arr[j]>arr[j+1])//大的数往后冒,只比较j和j+1
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
cout<<"排序后数据为:";
for(int i=0;i<n;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
以上是输出结果
二维数组
[行] [列],其中元素个数=行数*列数,永远是行序优先
特点:连续存储
数组名是地址常量,可以用sizeof求总空间
只能省略行不能省略列
//验证以上
#include <iostream>
using namespace std;
int main()
{
int a[3][2]={{5,3},{1,2},{7,6}};
int b[][3]={{3,2},{2,1}};
int n = sizeof(a)/sizeof(int);
cout<<"元素个数是:"<<n<<endl;
cout<<"二维数组a首地址是:"<<&a<<endl;
cout<<"a[0]首地址是:"<<&a[0]<<endl;
for(int i=0;i<3;i++)
{
for(int j=0;j<2;j++)
{
cout<<&(a[i][j])<<endl;//打印地址体现顺序存储
}
}
cout<<"b数组行数是:"<<sizeof(b)/sizeof(b[0])<<"列数是:"<<sizeof(b[0])/sizeof(int)<<endl;
cout<<"b数组元素"<<endl;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
cout<<b[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
return 0;
}
以上是输出结果
//打印杨辉三角前十行
#include <iostream>
using namespace std;
#define Max 10//可以随意打印前任意行
int main()
{
int a[Max][Max]={0};//先初始化为0
for(int i=0;i<Max;i++)
{
a[i][0]=1;//定义列全部为1
for(int j=1;j<=i;j++)
{
a[i][j] = a[i-1][j-1]+a[i-1][j];//当行元素是上一行前两个之和
}
for(int j=0;j<=i;j++)//输出要从0开始
{
cout<<a[i][j]<<"\t";
}
}
return 0;
}
以上是输出结果
**字符数组 **
整型0 = 字符型’\0’ = NULL
其中由’\0’结束的字符数组可以称为字符串
//对字符数组的认识,这里是想看没有定义大小的1和已经定义大小的3的区别
//但是好像有点问题后面再改
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char arr1[]= {'a','b','c'};
char arr2[6]= {'b','c','d'};
char arr3[2]= {'e','e','d'};
int n = strlen(arr1);
int m = strlen(arr2);
int k = strlen(arr3);
cout<<"arr1地址排序:"<<endl;
for(int i = 0;i<n;i++)
{
cout<<(&arr1[i])<<endl;
}
cout<<"arr2地址排序:"<<endl;
for(int i = 0;i<m;i++)
{
cout<<(&arr2[i])<<endl;
}
cout<<"arr3地址排序:"<<endl;
for(int i = 0;i<k;i++)
{
cout<<(&arr3[i])<<endl;
}
return 0;
}
//将输入的字符串逆序输出
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char ch[100],temp;
cout<<"input string:";
cin>>ch;
int n = strlen(ch);//求字符个数
for(int i = n-1;i>=0;i--)
cout<<char(ch[i]);//直接逆序输出
cout<<endl;
int i= 0,j=n-1;
while(i<j)//首尾交换i+j-直到相遇
{
temp = ch[i];
ch[i] = ch[j];
ch[j] = temp;
i++;
j--;
}
for(int i = 0;i<n;i++)
cout<<char(ch[i]);
cout<<endl;
return 0;
}
输出结果如上
//关于多维数组再写一个找最大值的例子
#include <iostream>
using namespace std;
int main()
{
int a[2][3] = {{2,4,78},{5,56,88}};
int row=0;
int col=0;
for(int i = 0;i<2;i++)
{
for(int j = 0;j<3;j++)
{
if(a[row][col]<a[i][j])
{
row = i;
col = j;
}
}
}
cout<<"最大值是:"<<a[row][col]<<endl;
return 0;
}
比较常用的字符串函数
头文件<string.h>
strlen():得到字符串长度,\xhh 十六进制 \ddd八进制
strcpy(1,2): 拷贝字符串1是复制结果要足够大,‘\0’也有拷贝
strcat(1,2):链接字符串2接在1后面,注意1的’\0’要取消,新串最后加
ctrcmp(1,2):比较是否相对,一个一个对比不等结束,遇到’\0’结束(正负表示两个串的大小不过意义不大)
strncpy(1,2,n):指定长度复制
strncat(1,2,n):指定2的长度接在1后面
strncmp(1,2,n):自动位数比较
strcasecmp(1,2):忽略大小写比较
strchr(p,c):查找单个字符返回地址
strrchr(p,c):反向查找
strstr(p,c):查找字符串
判断数据类型的函数
头文件<ctype.h>
isalpha():判断字母
isupper():判断大写
islower():判断小写
isdigit():判断数字
toupper():转大写
tolower():转小写
#include <iostream>
#include <stdio.h>
#include <ctype.h>
using namespace std;
int main()
{
cout<<"请输入成绩:";
int score;
cin>>score;
while((score = getchar())!= EOF)
{
if(isdigit(score))
break;
if(isalpha(score))
{
cout<<"请输入成绩:";
cin>>score;
}
}
return 0;
}
标签:std,main,cout,int,数组,字符串,using,include
From: https://blog.csdn.net/qq_45080494/article/details/143027370