c++_语句块_cout和endl新的声明方法_将字符串的内容反转_逗号运算符_c风格类字符串的比较_string类字符串的比较_类型别名typedef和#define_do while 循环_c++

/* 语句块 用花括号括起来的语句 */
#include <iostream>
int main()
{
        using namespace std;
  int x = 20;
  {
    int y = 100;
    cout << x << endl; //ok
    cout << y << endl; //ok
  } //以上就是一个语句块,y变量定义在语句块里面,因此y只能在改语句块中使用,在语句块以外是不能使用的
  cout << x << endl; //ok
  //cout << y << endl; //invalid
  return 0;
}ios

/*新变量就会隐藏旧变量,另外注意cout和endl新的声明方法*/
#include <iostream>
int main()
{
using std::cout; //cout新的声明方法
using std::cin; //endl新的声明方法
using std::endl; //endl新的声明方法
char zero;
int x = 20;
{
cout << x << endl; //打印20
int x = 100;
cout << x << endl; //打印100
}
cout << x << endl; //打印20c++

cin >> zero;
return 0;
}express

/*将字符串的内容反转*/
#include <iostream>
#include <string>
void main()
{
  using namespace std;
  cout << "输入一个单词: ";
  string word; //定义一个字符串变量word
  cin >> word;
  cout <<"输入单词的个数为:"<< word.size() << endl;   //打印输入的单词的个数
  for (int i = 0, j = word.size() - 1; i < j; i++, j--)   //减1是由于数组的索引是从0开始的
  {
    char temp;
    temp = word[j]; //将输入的单词最后一个字母赋给temp
    word[j] = word[i]; //将输入的单词的第一个单词赋到单词最后一个位置上
    word[i] = temp; //将输入的单词最后一个字母赋到单词第一个位置上
  }
  cout <<"反转后的单词形式为:"<< word << endl;
  cout << "Done" << endl;
  cin >> word; //防止DOS闪退
}数组

/*逗号运算符*/
/*
01)经常使用于将两个或者更多的表达式放到一个for循环表达式中
02)逗号运算符确保先计算第一个表达式,而后计算第二个表达式(换句话说,逗号运算符就是一个顺序点)
如:i=20,j=2*i; 是安全的 先计算i=20再去计算j的值
03)逗号运算符的优先级是最低的
cata = 17,240; //cata=17 即"="的优先级比","的优先级高
cata = (17,240); //cata=240
*/安全

/* c风格类字符串的比较 */
/*
01)char word = "mate"; //数组名word只是数组的地址
word == "mate"; //用引号括起来的也是地址,因此两个地址判断是否相等,结果是确定不相等的
02)使用c风格字符串库中的strcmp()函数来比较,改函数接受两份字符串地址为参数,这意味着参数能够是指针、字符数组名或字符串常量
若是str1和str2相同,那么表达式strcmp(str1,str2)==0为true
若是str1和str2不相同,那么表达式strcmp(str1,str2)!=0和strcmp(str1,str2)均为true
若是两个字符串不相同,则该函数返回1
若是str1在str2的前面,那么strcmp(str1,str2)<0 返回1
若是str1在str2的后面,那么strcmp(str1,str2)>0 返回1
*/函数

#include <iostream>
#include <cstring> //for strcmp()spa

int main()
{
  using namespace std;
  char zero;
  char word[] = "?ate"; //定义数组,刚刚忘了在word以后加中括号致使报错
  for (char ch = 'a'; strcmp(word,"mate"); ch++) //若是word不和mate相等,那么strcmp函数返回1,循环继续进行
  {
    cout << word << endl;
    word[0] = ch; //将word数组中的第一个数用ch替换下来
  }
  cout << "最终匹配的字符串数组word是:" << word << endl;
  cin >> zero; //防止DOS闪退
  return 0;
}指针

/* string类字符串的比较 */
因为string类函数重载(重定义)了这些运算符,所以string类字符串能够使用
关系运算符进行比较
string类重载了运算符!=的方式让咱们可以使用它
#include <iostream>
#include <string> //for string classc++11

int main()
{
  using namespace std;
  string word = "?ate"; //定义string类字符串
  for (char ch = 'a'; word != "mate"; ch++) //直接用关系运算符!=进行比较
  {
    cout << word << endl;
    word[0] = ch;
  }
  cout <<"最终匹配的字符串word是:"<< word << endl;
  cin >> word;
  return 0;
}blog

/* 类型别名typedef和#define */
/*
01)使用预处理器#define
如:#define BYTE char //使BYTE成为char的别名,注意后面没有分号
02)使用关键字typedef
  如:typedef char byte; //使byte成为char的别名,注意后面有分号
         typedef char* byte_pointer; //让byte_pointer成为char指针的别名
03)在定义不少变量时,使用预处理器的方法不适用
  如:#define FLOAT_POINTER float* //让FLOAT_POINTER成为char指针的别名
         FLOAT_POINTER pa,pb; //有问题 至关于float* pa,pb;可是typedef不会出现这样的问题
04)和#define相比,typedef是一种更好的选择
05)typedef不会建立新类型,而只是在已有的类型建立一个新的名字
*/


/* do while 循环*/
/*
01)句法:
  do
    body
  while(test-expression); //注意这里是有一个分号的
02)先执行循环体body,再去判断test-expression是否成立,若成立,则再次执行循环体body;不然跳出循环
03)
*/
#include <iostream>
int main()
{
  using namespace std;
  char zero;
  int i; //不能定义在循环体内,不然在while的条件判断中i是不可用的
  do
  {
    cout << "请输入一个数字:" << endl;
    cin >> i;
  }

  while (i != 7);    //若是输入的数字是7那么退出循环,注意这里是有一个分号的
  cout << "my favorate number is:" << i << endl;
  cin >> zero; //防止DOS闪退
  return 0;
}

/* c++11:基于范围的for循环 */

#include <iostream>

void main()
{
  char zero;
  double prices[] = {4.99,10.99,6.87,7.99,8.79}; //建立一个double型数组,可是这样建立的数组怎么样去算数组中数据的个数不太简单
                      //sizeof()和strlen()用于字符串字符串
                      //可以使用vector和array等容器,使用size()函数获得元素的个数
  std::cout << "数组占的字节数数为:" << sizeof(prices) << std::endl;
  for (double x : prices)
    std::cout <<"原始数据为:"<< x << std::endl; //打印prices数组中的元素
  for (double &x : prices)
    x = x * 0.8; //改变数组中的值 每一个值都乘以0.8
  for (int i = 0; i < 5; i++)
    std::cout << "乘上0.8后的数组数据为:" << prices[i] << std::endl;

  std::cin >> zero; //防止DOS闪退
}

/* 循环和文本输入 */
//01原始的cin输入
#include <iostream>
void main()
{
  using namespace std;
  int count = 0; //初始化初始计数值
  cout << "请输入字符,以#号结束,并按回车发送给cin:";
  char ch,zero;
  cin >> ch; //能够这样输入seek run# wwdd而后按下回车,此时会将s赋给ch剩余的字符将会保存在输入流中,等待着下次的cin
  while (ch != '#')
  {
    cout << "输入的字符为:" <<ch; //这里不加换行符,那么就能够完整的打印出#号前的单词,且无空格
    count++; //计算输入的字符数 ++count也能够
    cin >> ch; //cin在读取全部类型的数据时,会自动忽略回车和空格****** 因此上面打印的时候不会显示空格
  }
  cout << count << "chracters read" << endl;

  cin >> zero; //防止DOS闪退
}

/* 循环和文本输入 */
02cin.get(char)函数输入(这样输入不会忽略空格)
/*
注意:因为c++支持被称为函数重载的OOP特性,因此cin.get()、cin.get(char)和cin.get(name,Arsize)是不同的函数
OOP特性(函数重载)容许建立多个同名函数,条件是他们的参数列表是不同的
如:使用cin.get(name,Arsize)函数,那么编译器就会找到使用char*和int做为参数的cin.get()函数版本
使用cin.get(char)函数,那么编译器就会找到使用char做为参数的cin.get()函数版本
使用cin.get()函数,那么编译器就会找到不使用参数的cin.get()函数版本
*/
#include <iostream>
void main()
{
  using namespace std;
  char ch,zero;
  int count = 0;
  cout << "请输入字符,以#号结束,并按回车发送给cin:";
  cin.get(ch);
  while (ch != '#')
  {
    cout <<ch;   //这里不加换行符,那么就能够完整的打印出#号前的单词,且因为是cin.get()方法输入,因此有空格
    cin.get(ch);
    count++;
  }
  cout <<endl<< count << "chracters read" << endl; //这里也会把空格算上
  cin >> zero; //防止闪退
}

 

/* 二维数组 */
//int maxtemps[4][5]=
//{
  // {96,100,87,85,65},
  // {100,85,96,87,98},
  // {97,101,91,95,94},
  // {87,89,98,56,98}
//}; //定义并初始化一个4行5列的二维数组,注意最后的分号勿忘
#include <iostream>
const int Cities = 5;
const int Years = 4;    //定义两个不可修改的变量
int main()
{
  using namespace std;
  const char* cities[Cities] =     //定义指针数组,存储5个字符串的地址,使用指针数组的方法和使用普通数组方法是同样的
  {               //若是不用指针数组,那么须要这样定义:const char cities[25]={"..."} 这样的意思是将每一个字符串的最大长度限制为24个字符
    "Gribble City",     //每一个都须要占用25个字符的位置,5个就是125个字符的空间,所以指针数组更节省空间一些
    "Gribbletown",     //固然使用 const string cities[Cities]={"..."}也是比较节省空间的
    "New Gribble",
    "San Gribble",
    "Gribble Vitle"
  };   //使用const的意思是数组内容不可修改
  int maxtemps[Years][Cities]=
  {
    {96,100,87,85,65},
    {100,85,96,87,98},
    {97,101,91,95,94},
    {87,89,98,56,98}
  };    //定义并初始化一个4行5列的二维数组,注意最后的分号勿忘、
  cout << "Maximum tempratures for 2008-2010\n\n";
  for(int city=0; city<Cities; city++)
  {
    cout << cities[city] << "\t";    //指针数组的使用方法和普通数组的使用方法是同样的*****
    for (int year = 0; year < Years; year++)
    {
      cout << maxtemps[year][city] << "\t";    //\t表示水平制表 使数据比较整齐
    }
    cout << endl;
  }
  cin.get();    //防止DOS闪退
}

效果以下:

相关文章
相关标签/搜索