关于C++1

本文介绍了C++编程的基础,包括使用sort函数实现数组排序,利用for循环和条件判断判断整数是否为素数,以及输入输出、格式控制、数制转换等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>//头文件声明
#define N 10//全局常量声明
void sort(int a[],int n);//函数声明,这个要注意,向前引用声明,因为先调用函数再定义的
void print(int a[],int n);
using namespace std;//用于表明所有直接调用的函数的前缀名都是std表示这个程序为标准c++
//引入标准库的命名空间
int main()
{
    int a[N];
    cout<<"input 10 numbers:\n";//输出函数调用
    for(int i=0;i<N;i++){
        cin>>a[i];//输入函数调用
    }
    sort(a,N);
    print(a,N);
    return 0;
}
void sort(int a[],int n){//函数定义
        for(int i=0;i<N;i++){
            for(int j=0;j<N;j++){
                if(a[i]>a[j]){
                    int t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
            }
        }
}
void print(int a[],int n){
    for(int i=0;i<N;i++){
        cout<<a[i]<<"  ";
    }
    cout<<endl;//相当于\n用于输出回车符
}

判断是否是素数

#include <iostream>
using namespace std;

int main(){
    int n;
    cin>>n;//scanf("%d",n);这两种输入方式都可以
    bool p=true;
    for(int i=2;i<n;i++){
        if(n%i==0){
          p=false;
          break;
        }
    }
    cout<<p;//输出0,1,如果这里写printf会报错
    return 0;
}

关于输入:
1、cin一般代表键盘,>>是提取运算符
2、cin可以同时为多个变量输入数据,用空格作为分隔键,enter是总语句分割键

cin>>x1>>x2>>x3>>x4;

3、提取运算符>>后面只能出现变量名
4、cin具备自动识别数据类型的能力,根据变量类型自动提取输入流里对应的类型数据,没被提取的依旧保存在输入流里
5、数值型数据输入:遇到非数字字符停止

int x1;
    double x2;
    char x3;
    cin>>x1>>x2>>x3;
    cout<<x1;
    cout<<x2;
    cout<<x3;//35.4A   35  0.4  A,这个地方输出的是这三个值

关于输出:
1、cout和<<插入运算符,将变量插入输出流中
2、可以连续输出,参照上输入程序
3、若要输出换行连续输出后面多加个换行符或者endl,区别是前者可以直接加在字符串常数后面
关于输出格式控制符:
1、设置浮点数精度:setprecision(n),n代表有效位数,将所有数值的输出精度都制定为n位数,直到下一次改变数值
2、设置输出域宽:setw(n)输出数据占用屏幕宽度的字符数,默认输出按右对齐,若输出数据位数不够,左边补空;若过大则扩展,setw只对紧跟其后的输出数据有效

 cout<<"1234567812345678"<<endl
    <<setw(8)<<23.27<<setw(8)<<78<<endl
    <<setw(8)<<"Abc"<<78<<endl;

3、对齐方式:
setiosflags(long f)设置输入输出的格式,对后面一直有效直到
resetiosflags(long f)取消输入输出格式
ios::left左对齐;
ios::right右对齐;对齐常数用于当参数

cout<<"1234567812345678"<<endl
    <<setiosflags(ios::left)<<setw(8)<<456<<setw(8)<<123<<endl
    <<resetiosflags(ios::left)<<setw(8)<<123;

关于数制基数:
十进制:dec直接输入输出
十六进制:hex在要输入的数据前加0x或0X
八进制:oct输入数据前加0
设置基数后基数将一直有效,直至下一次设置

 int x=34;
    cout<<hex<<17<<" "<<x<<" "<<18<<endl;
    cout<<17<<" "<<oct<<x<<" "<<18<<endl;
    cout<<dec<<17<<" "<<x<<" "<<18<<endl;
    int x1,x2,x3,x4;
    cout<<"输入x1(oct),x2(oct),x3(hex),x4(dec)"<<endl;
    cin>>oct>>x1;
    cin>>x2;
    cin>>hex>>x3;
    cin>>dec>>x4;
    cout<<"x1="<<x1<<"\tx2="<<x2<<"\tx3="<<x3<<"\tx4="<<x4<<endl;

String的特殊用法:string s(5,‘c’);用五个c进行初始化
string可以用符号链接:+=,不用考虑是否溢出
若遇到大小比较比较的是对应位置的ASCII码
如果cin>>提取到的值与变量类型不匹配,会填入失效位,后面所有cin都没用了,只有用cin.clear();以后才行

#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1;
    string s2 = "c plus plus";
    string s3 = s2;
    string s4 (5, 's');
    return 0;
}
string s = "http://c.biancheng.net";
int len = s.length();//后面没有\0所以返回的是真实长度
cout<<len<<endl;
#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first ";
    string s2 = "second ";
    char *s3 = "third ";
    char s4[] = "fourth ";
    char ch = '@';

    string s5 = s1 + s2;
    string s6 = s1 + s3;
    string s7 = s1 + s4;
    string s8 = s1 + ch;
    
    cout<<s5<<endl<<s6<<endl<<s7<<endl<<s8<<endl;

    return 0;
}
string& erase (size_t pos = 0, size_t len = npos);//删除字符串中某元素
string& insert (size_t pos, const string& str);//插入字符串中某元素
string substr (size_t pos = 0, size_t len = npos) const;//提取字符串
size_t find (const string& str, size_t pos = 0) const;
size_t find (const char* s, size_t pos = 0) const;//字符查找
#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1, s2, s3;
    s1 = s2 = s3 = "1234567890";
    s2.erase(5);//从下标为5开始全删
    s3.erase(5, 3);//从下标为5开始删三个,不用担心越界,删到没有为止
    cout<< s1 <<endl;
    cout<< s2 <<endl;
    cout<< s3 <<endl;
    return 0;
}
#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first second third";
    string s2;
    s2 = s1.substr(6, 6);
    cout<< s1 <<endl;
    cout<< s2 <<endl;
    return 0;
}
#include <iostream>
#include <string>
using namespace std;

int main(){
    string s1 = "first second third";
    string s2 = "second";
    int index = s1.find(s2,5);
    if(index < s1.length())
        cout<<"Found at index : "<< index <<endl;
    else
        cout<<"Not found"<<endl;
    return 0;
}

当需要输入空白符号时:
1、用get()函数cin.get(char c);,若get不带参数,就用于忽略输入流中当前字符
2、cin.getline(char *c,int n,char=’\n’);
c是保存输入数据的数组,n是要提取的字符个数,指示从输入流中提取n个字符到数组c中系统会在读取的最后一个字符后面加上‘\0’,最后一块是指定默认分隔符,int如果是11,只提取10个字符最后附加‘\0’
当输入流中字符多余getline的字符数量,getline会形成失效位,使得后面的cin全部失效,先cin.clear()这个是恢复有效位,后cin.ingore()使语句正常接收数据
cin.ignore(int nCount=1;char delim=EOF);nCount是指定忽略个数,后者是结束字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值