网站分享对联广告,专业制作网站公司吗,ps做网站首页怎么运用起来,前端开发语言C Day1 第一个C程序C中的输入输出输出操作coutcin练习 命名空间使用方法自定义命名空间冲突问题 C对字符串的扩充C风格字符串的使用定义以及初始化C风格字符串与C风格字符串的转换C风格的字符串的关系运算常用的成员变量输入方法 布尔类型C对堆区空间使用的扩充作业 第一个C程序… C Day1 第一个C程序C中的输入输出输出操作coutcin练习 命名空间使用方法自定义命名空间冲突问题 C对字符串的扩充C风格字符串的使用定义以及初始化C风格字符串与C风格字符串的转换C风格的字符串的关系运算常用的成员变量输入方法 布尔类型C对堆区空间使用的扩充作业 第一个C程序
#include iostreamusing namespace std;
//命名空间的声明语句
//using:使用命名空间的关键字
//namespace:命名空间的关键字
//std:标准命名空间系统提供的所有名字都放放入到该命名空间中int main() //默认无参的主程序
{cout Hello World! endl;//使用iostream中的类对象cout输出数据hello world// :插入运算符不是左移运算C重载的运算符与cout搭配用于输出// endl:end line,结束该行即换行return 0;
}
C中的输入输出
输出操作
cout
在C中 向终端输出数据使用的是ostream提供的一个类对象 cout搭配插入运算符使用cout输出数据时不需要使用格式控制符会自动识别要输出的数据的数据类型cout输出数据时可以级联输出数据级联输出时需要使用多个插入运算符
cin
在C中输入使用的是istream提供的一个类对象 cin搭配提取运算符使用cin输入的时候也不需要使用格式控制符会自动识别
练习
使用cout输出斐波那契数列前20项
#include iostreamusing namespace std;int main()
{//初始化斐波那契数列前两项int numb[20] {1 ,1};int i 0;//后面的项均为前两项的和for( i 2; i 20; i){numb[i] numb[i - 1] numb[i - 2];}//循环输出for( i 0; i 20; i){cout numb[i] \t;}cout endl;return 0;
}命名空间
命名空间是防止在多人协同开发过程中出现命名冲突的问题相当于给定义的变量名函数名等标识符取一个“姓氏”
使用方法
使用时单独标注命名空间为单个标识符声明声明后将不需要为这个变量标注他的命名空间直接声明整个命名空间声明后每一个标识符都不需要再单独标志的了 #include iostreamint main()
{//方法1std::cout hello std::endl;//方法2using std::cout;cout hello std::endl; //此处cout已经声明不需要标注命名空间而endl需要//方法3using namespace std;cout hello endl; //整个空间均被声明都可以直接使用return 0;
}自定义命名空间
//定义格式
namespace 空间名 {... //各种定义
}同一作用域下可以定义多个重名的命名空间他们都将会是同一空间里面的变量名等不允许相同
冲突问题
如果不加命名空间标识的话当声明的命名空间之中或者和局部变量以及全局变量有冲突的时候就不能使用后两种方法来访问了只能用方法1标识此时使用的到底是哪个命名空间里面的变量 本文件中的局部变量和全局变量都默认放入匿名命名空间中
#include iostreamnamespace EKKO {int num 520;
}
using namespace std;int main(void)
{int num 1314;using namespace EKKO;//此后有两个num使用是必须标注命名空间cout EKKO::num endl; //输出520cout ::num endl; //输出1314return 0;
}C对字符串的扩充
C语言中没有字符串类型所有字符串的操作都是使用字符数组进行的 C中也支持这种字符串并且扩充了字符串类型string使用时需要引入头文件 string
C风格字符串的使用
定义以及初始化
#include iostream
#include stringusing namespace std;int main(void)
{//定义字符串string s1; cout s1 endl; //默认是空串//定义并初始化字符串string s2 HELLO;//C风格的字符串支持使用直接赋值//下面是其他的初始化方法string s3 {HELLO};string s4(HELLO);string s5(5, A); //该串的内容为AAAAA//赋值操作s1 与众不同;//可以直接赋值s1 s2s3; //将会把s3拼接到s2后面并赋值给s1//注意使用字符串的加法操作时必须有一个是字符串变量如果两个都是字符串常量的话将会报错return 0;
}
C风格字符串与C风格字符串的转换
#include iostream
#include string
#include cstring //同#include string.h
using namespace std;
int main(void)
{char str[20] Hello;//C风格可以直接转换为C风格string s str;//C风格转换到C风格则需调用成员函数strcpy( str, s1.c_str());strcpy( str, s1.data());//两个成员函数的返回值都是 char *类型指向字符串的开头这样才符合C风格的使用方法//本质上而言就是C风格的函数无法识别string类需要一个char *类型的参数return 0;
}
C风格的字符串的关系运算
C风格的字符串可以直接使用关系运算符 即可完成以前strcmp的功能
常用的成员变量
size()或者length():求该字符串的实际长度访问字符串的成员 使用成员函数 at() 完成会进行下标越界检查使用中括号运算符完成不进行下标越界检查 判空empty(),如果字符串为空则返回真否则返回假清空clear() 将当前字符串清空尾插push_back() 在字符串尾部插入一个字符尾删pop_back() 删除字符串尾部的那个字符
输入方法
不带空格的字符串可以直接使用cin输入带空格的字符串需要使用函数getline()来完成
布尔类型
C添加的新类型是基本数据类型 bool类型的值只有两个true、false 以上三个单词均为C新添加的关键词 默认输入时bool类型只会输出0或者1使用boolalpha关键字来修改cout可以设置为单词输出输出为true或者false使用noboolalpha来取消 bool类型占一个字节
C对堆区空间使用的扩充
引入了两个新的关键字来申请和释放堆区空间 new 和 delete 申请方法
//数据类型 *指针名 new 数据类型; new是基于数据类型大小来申请的而不是malloc的根据字节数来申请
int *p new int;
//申请并且初始化
double *dptr new double(3.13);
float *fptr new float{33.33};//连续空间的申请
int *ptr new int[5];
//连续申请并且初始化
int *sptr new int[5]{1,2,3,4,5};//释放堆区空间
delete p;
p NULL;
delete dptr;
dptr NULL;
delete fptr;
fptr NULL;
delete [] ptr;
ptr NULL;
delete [] sptr;
sptr NULL;
作业
要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数
#include iostream
#include stringusing namespace std;int main()
{//空间申请int *ptr new int[5];//信息提示cout 请输入学生的成绩:;//循环输入for(int i 0; i 5; i) {cin ptr[i];}//冒泡排序for(int i 0; i 5; i){for(int j 1; j 5-i; j){if(ptr[j] ptr[j-1]){int temp ptr[j];ptr[j] ptr[j-1];ptr[j-1] temp;}}}//输出成绩for(int i 0; i 5; i){cout ptr[i] ;}cout endl;//释放堆区空间delete [] ptr;ptr NULL;return 0;
}