复杂信息的表达与处理
一维数组
定义方法
语句格式:<类型> <标识符>[<大小>]
举例:double length[30],width[30];
const int N=100,M=20;int score[N*M];
初始化方法
语句格式:<类型> <数组名> [<表达式常量>] ={<表达式1>,<表达式2>,...}
初始化方法:
- 全部元素
double room[]={401,402,403,404};
- 部分元素
double average[30]={21.0,2020,a*b,7.5+2.3};
使用方法
语句格式:<数组名>[<下标>]
举例:
int length[10],width[10]; //定义数组
length[0]=1; //给数组元素赋值,正确
sum=length[0]*2; //数组元素参与运算,正确
cin>>length[0]; //输入数组元素,正确
cout<<length[0]; //输出数组元素,正确
cin>>length; //对整型数组整体输出,错误
cin>>length[10]; //数组下标超界,错误
width=length; //数组整体赋值,错误
cout<<length; //整型数组整体输出,错误
例 将单词小写字母转换为大写
#include<iostream>
using namespace std;
int main(){
char str[10];
int i=0;
cin>>str;
while(str[i]!='\0'){
str[i]=str[i]-32;
i=i+1;
}
cout<<str<<endl;
return 0;
}
二维数组
定义方法
语句格式 : <类型> <数组名>[<常量表达式1>][<长量表达式>]
例如: int score[60][3]
行标列标不能是变量
初始化方法
语句格式: <类型> <数组名>[<行数>][<列数>]={<表达式1>,<表达式2>...}
例如:
int A[3][3]={1,2,3,4,5,6,7,8,9};
int B[3][3]={1,2,3};
使用方法
语句格式: <数组名>[<行标>][<列标>]
例如:
int A[2][2];
A[0][0]=5;
多维数组
例如: int A[5][4][3];
结构体
结构体类型定义方法
语句格式:
struct <结构体名>{
类型名1 成员名表1;
类型名2 成员名表3;
... ...
};
例如:
struct Date{
int year,month,day;
};
同一结构体的成员不能同名,但可与其他变量名同名。
结构体变量声明方法
语句格式:struct <结构体名> <变量列表>;
声明时机:
- 定义结构体类型后声明
struct Date today;
- 定义结构体类型同时声明,可以省略结构体名
struct Date{int year,month,day;}today;
结构体变量初始化方法
语句格式: struct <结构体名> <变量1>={<数据列表>},<变量2>={<数据列表>},...;
例如: struct Date today={2015,2.20};
结构体变量使用方法
语句格式: <结构体名>.<成员名>
举例:
today.year=2015
today.month=2
today.day=20
结构体所占内存大小
语句格式 :sizeof(类型名)或者sizeof(变量名)
举例:
struct SHAPE1 {char name;int x;int y;char classification}
sizeof(SHAPE1) //4*4=16
struct SHAPE2 {char name;double x;int y;char classification}
sizeof(SHAPE2) //8*2+4*2=24
struct SHAPE3 {char name;double x;double y;char classification}
sizeof(SHAPE3) //8*4=32
结构体数组定义方法
语句格式: struct <结构体名> <结构体数组名>[<数组大小>];
例如: struct Date manydates[30];
结构体数组初始化方法
语句格式: struct <结构体名> <结构体数组名>[<数组大小>]={<结构体类型值列表>};
例如: struct Date manydates[30]={{2015,1,1},{2015,2,17},{2015,3,8}}
结构体数组使用方法
语句格式: <结构体数组名>[<整型表达式>]
例如: 给第 i 个赋值
manydates[i].year=2015
manydates[i].month=2
manydates[i].day=20
枚举
枚举类型定义方法
语句格式: enum <枚举类型名>{枚举常量表};
例如: enum Week{Sun,Mon,Tes,Wed,Thu,Fri,Sat}; //Sun=0,Mon=1,Tes=2,Wed=3,Thu=4,Fri=5,Sat=6
枚举变量声明方法
语句格式:enum <枚举类型名> <枚举变量列表>;
声明时机:
- 定义枚举类型后声明
enum COLOR background,foreground;
- 定义枚举类型时同时声明
enum Week {Sun=7,Mon=1,Tes,Wed,Thu,Fri,Sat} begin,end;
枚举变量的使用方法
例如:
enum Week {Sun=7,Mon=1,Tes,Wed,Thu,Fri,Sat} begin,end;
cin>>background;
//直接输入枚举变量,错误begin=1;
//整数赋给枚举变量,错误begin=Mon;
//将枚举常量赋给枚举变量,正确end=Sun;
begin=end;
//相同类型的枚举变量赋值,正确begin=(Week)1;
//整型强制类型转换后赋给枚举变量,正确int a=begin;
//将枚举变量赋给整型变量,正确int b=Sun;
//将枚举常量赋给整型变量,正确cout<<begin;
//直接输出枚举变量,正确cout<<end-begin;
//枚举变量可以参加数学运算,正确
实例
冒泡排序
用户从键盘输入N,然后输入N个实数,使用冒泡排序方法对这N个元素排序,输出排序后的数据。
#include<iostream>
#include<cmath>
using namespace std;
int main(){
double a[100];
int N;
int i=0,j=0;
cin>>N;
for(i=0;i<N;i++){
cin>>a[i];
}
for(i=0;i<N-1;i++){
for(j=0;j<N-1-i;j++){
if(a[j]>a[j+1]){
int tmp;
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
for(i=0;i<N;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
文字信息统计
C++中提供了一些字符串处理的库函数,方便字符串操作。
常见的有:
int srtlen(char *s);
//求字符串s的长度char *strcpy(char *destin,char *source);
//将字符串source复制到destin中int strcmp(char *string1,char *string2);
//比较string1和string2char *strcat(char *desting,char *source);
//将source连接到destin末尾char *strlwr(char *string);
//string转换为小写char *strupr(char *string);
//string转换为大写
字符串的末尾标志为'\0'
字符标识其结束,在VS2008及以上调用strcpy
、strcat
等函数是由于安全原因会提示警告,解决方法:#define _CRT_SECURE_NO_WARNINGS
Comments | NOTHING