C++课程学习笔记

  1. 顺序结构

程序基本结构如下

#include<iostream> //调用iostream库
using namespace std; //声明使用标准命名空间
int main(){ //主函数
    cout << "Hello world!"<< endl;//endl是换行
    return 0;  //返回0,程序正常结束
    /*   为多行注释
    int a,b ; //定义变量的类型
    cin >> a >> b ; //输入
    cout << a+b << endl;//输出
    return 0;
    */
}

注意主程序内的语句都要用“;”来结尾

cin 输入和 cout 输出——#include<iostream>

scanf 输入和printf 输出——#include<cstdio>,示例:

#include<cstdio>
using namespace std;
int main()
{
    char a;
    scanf("%c", &a) ;  //%c表示该占位符的类型,%c是一个char类型字符
    printf("  %c  \n",a);
    printf(" %c%c%c \n",a,a,a);
    return 0;
}
数据类型

数据类型

描述

占用空间

int

整型,用来表示整数

4B

char

存储字符,本质是<=127的整数,但表现成一个对应的字符

1B

string

long long

超长整型,比int范围更大,表整数

8B

float

单精度浮点数,6位有效数字

4B

double

双精度浮点数,15位有效数字

8B

unsigned int

4B

unsigned long long

8B

变量类型转换:  (变量类型)变量名,如(int)a, 变量a就转换为int类型。

Ps:int类型下,使用除法会直接取整,如5/4=1,不会是小数。

占位符类型

在scanf 输入和printf 输出里使用占位符

占位符

说明

%d

一个十进制整数,一般用于int类型

%c

一个char类型的字符

%s

一个字符串

%f

读入一个float类型的浮点数/输出float或double类型的浮点数

%nf

输出一个n位小数的浮点数

%lf

读入double类型的浮点数

%nd

输出一个整数,不足n位,前面用空格补齐

%l64d(windows)/%lld

一个十进制整数,一般用于long long类型

  1. 分支结构

if、if-else和switch-case分支

  1. 单分支语句if

格式:

if(条件表达式){

语句1;

}

#include<iostream>
using namespace std;
int main(){
    int x;
    cin >> x;
    cout << "today, I ate " << x <<" apple" ;
    if (x>1){
        cout << "s" ;
    }
    //另一种写法    if (x>1)  cout << "s" ;
    cout << "." ;
    return 0; 
}
  1. 双分支语句if-else

格式:

 if (条件成立表达式){

条件成立时执行语句

}else{

条件不成立时执行语句

}

#include<iostream>
using namespace std;
int main(){
    int x;
    cin >> x;
    if (x==1){  //大括号可以省略,但是下方执行的语句只能有一条,否则会出错
        cout << "today, I ate an apple" ;
    }else{
        cout << "today, I ate " << x <<" apples" ;
    }
    cout << "." << endl ;
    return 0; 
}

  1. 多分支语句switch-case

格式:

switch(变量名){

case变量可能情况1:执行语句1;break;

case变量可能情况2:执行语句2;break;

...

default:执行语句n;

ps:case后面是变量确定的值

//判断月份天数
#include<iostream>
using namespace std;
int main(){
    int y,m;
    cin >> y >> m;
    if ((y%4==0 && y%100!=0 ) || (y%400==0)):
    switch(m){
        case 1 :
        case 3 :
        case 5 :
        case 7 :
        case 8 :
        case 10 :
        case 12 :
            cout << "31" <<endl;
            break;   //同一条件下可以合写
        case 2 :
            cout << "28" <<endl;
            break;
        case 4 :
        case 6 :
        case 9 :
        case 11 :
            cout << "30" <<endl;
            break;
        default:cout<<"worry" <<endl;
    }
    return 0;
}

  1. 循环结构

  1. for循环

适用于知道明确重复次数的。

结构如下

#include<iostream>
using namespace std;
int main(){
    int a;
    cin >> a;
    for (int i=1;i<=a;i++){  //for循环的结构
        if (i==1){
            cout << "Today , I ate an apple.\n" ;
        }else{
            cout << "Today , I ate " << i << " apples.\n" ;
        }
    }
    /*  可以省略{}
    for (i=1;i<=a;i++)
        if (i==1)  cout << "Today , I ate an apple.\n" ;
        else  cout << "Today , I ate " << i << " apples.\n" ;
    */ 
    return 0; 
}

  1. while循环

适用于不知道明确重复次数,但知道循环结束条件的。

结构如下

  1. do while循环

  1. 数组

用于存储大量数据,一次性定义多个变量,注意定义数组的数量时超过100,一般定义可比题目会出现的最大情况多10个。

定义数组 int a[110]    C++中数组的数据都是同一个类型 。定义二维数组 int a[110][110]。(数组过多元素尽量定义在main函数外,定义在全局变量下,不然可能会导致程序无法输入直接运行结束。)

初始化数组 int a[110]={1,2,3}  可以初始化前面几个元素,后面都是0,不初始化数据会取随机值。/int a[110]={0},a数组中所有变量初始化为0

循环输入数组   for(int i=0;i<n;i++)   cin >> a[i]

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[110];
    int n;
    cin >> n;
    for (int i=0;i<n;i++){
        cin >> a[i];     //输入一串用空格隔开的数字,通过此循环存入数组中
    }
    return 0; 
}

  1. 字符串

字符数组,string类型字符串

  1. 函数与结构体

各类函数

函数名称

函数介绍

sqrt(x)

对x开根号,需要在主程序外引入#include <cmath>

pow(x,y)

求x的y次方,可以用来开方

floor(x)

不大于x的最大整数,向下取整

#include <cmath>

ceil(x)

不小于x的最大整数,向上取整

#include <cmath>

ps:如果ceil(a/b),两个int型直接相除会先向下取整,ceil会失效

round(x)

四舍五入

#include <cmath>

__gcd(a,b)

求a和b的最大公约数

abs(x)

x的绝对值

setw(n)

设置字符输出的宽度为n,字符在最右侧

一些注意事项

1.变量类型的定于对于结果会有影响,代码逻辑没有问题,但是结果会不通过。

  1. 排序

bool  cmp(play x,play y){//函数体cmp的排序规则
    if (x.s!=y.s)  return x.s>y.s;//先按s进行降序排序 
    if (x.k!=y.k)  return x.k<y.k;//再按k进行升序排序 
    return 0; 
}

sort(a+m,a+n/*cmp排序规则*/); //a是数组名,m,n是排序的范围(从a[m]排到a[n])。无规则默认升序
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值