C++:输入输出--命名空间

一、第一个C++程序

提示:c++ 程序文件的后缀名 xxx.cpp

gcc 编译器 , 编译 C 语言代码,不能编译 C++ 代码。
g++ 编译器,编译 C++ 代码,肯定可以,因为 C++ 兼容
C
#include <iostream>

int main()
{
    std::cout << "hello world" << std::endl;
    return 0;
}

编译运行:

C++源程序分析:

二、C++中的输入与输出

cout 标准输出
cin 标准输入
endl: 换行, 刷新缓存区
------------------------------
这三个接口都在 标准 std 命名空间中
使用时
std::cout
std::cin
std::endl
cout 输出
#include <iostream>

int main()
{
    int a=10086;
    char b='A';
    float c=3.14;
    std::cout << a;
    std::cout << b;
    std::cout << c;
    //优点:会自动检测数据的类型进行输出。
    return 0;
}

编译运行:

cin输入

#include <iostream>

int main()
{
    int a;
    char b;
    float c;
    std::cin >> a;
    std::cin >> b;
    std::cin >> c;
    //优点:会自动检测数据类型进行数据的获取!
    return 0;
}

编译运行:

cout的注意事项

#include <iostream>

int main()
{
    int a = 10;
    char b = 'A';
    float c = 3.14;
    char buf[1024] = {"hello"};

    //因为 cout 会自动检测类型,进行输出
    std::cout << &a << ":" << a << std::endl;    //&a -> int *

    std::cout << (void *)&b << ":" << b << std::endl;    //&b -> char *
    //&b -> char *  检测为char *认为用户需要输出字符串,所以把b地址上的所有内容当做字符串输出
    //检测的类型与用户想要输出的类型不一致。通过强制转换为用户想要的类型即可。

    std::cout << &c << ":" << c << std::endl;    //&c -> float *
    std::cout << &buf << ":" << buf << std::endl;    //&buf -> char **

    return 0;
    

}
编译运行如下所示:
提示:当 cout 输出的数据类型不是用户需要的,需要进 行强制转换

三、命名空间

为了确保程序中的全局实体的名字不会与某些库中声明的全局实体名冲突,引入了命名空间。

作用:解决变量名冲突的问题

命名空间定义语法

namespace 空间名
{
    //变量名,函数...
}

//例子
namespace MY_Space
{
    int a;
    float b;
}

例子

#include <iostream>

//定义一个新的空间名叫 MY_Space
namespace MY_Space{
    //全局变量 存储在 数据段
    int a = 1;
    float b = 1;
}

//定义一个新的空间名叫 MY_Space1
namespace MY_Space1{
    //全局变量 存储在 数据段
    int a = 2;
    float b = 2;
}

int main()
{
    //局部变量 存储在 栈空间中
    //变量名是可以一样的,只要它的存储空间不一样就不会出现变量名冲突报错!
    int a = 0;
    float b = 0;

    std::cout << "a:" << a << std::endl;
    std::cout << "MY_Space a:" << MY_Space::a << std::endl;
    std::cout << "MY_Space1 a:" << MY_Space1::a << std::endl;

    return 0;
}
编译运行如下所示:

四、作业

1、编写一个代码输出 0~100 以内的所有素数。

#include <iostream>

//判断一个数据是否为 素数
//素数,又称质数,指在一个大于1的自然数中,除了1和此整数自身外,
//不能被其他自然数(不包括0)整除的数。
int  Prime(int date)
{
    if(date == 0 || date == 1)
    {
        return -1;  
    }

    for(int i=2;i<date;i++)
    {
        if(date%i==0)  //不是素数 
        {
            return  -1;
        }
    }

    return  date; 
}


int main()
{

   for(int i=0;i<=100;i++)
   {
       int tmp=Prime(i);
       if(tmp != -1)
       {
           std::cout << "素数" << tmp << std::endl;
       }


   }

    return  0;
}

2、利用c++ 编写一个代码输出 所有"水仙花数"。

        水仙花数是指一个 3 位数,它的每个位上的数字的 3 次 幂之和等于它本身。
#include <iostream>

int main()
{
    //遍历所有的三位数 
    for(int i=100;i<1000;i++)
    {
         int g = i%10;  //得到个位  
         int s = (i/10)%10;// 得到十位 
         int b =  i/100;//得到百位  

        if(g*g*g+s*s*s+b*b*b == i)
        {
            std::cout << "水仙花数" << i << std::endl;
        }
    }
}

3、利用c++ 编写一个代码根据用户输入,输出对应的 棱形

例如输入 3
输出
    *
   ***
  *****
   ***
    *
#include <iostream>

int main()
{

    std::cout << "请输入行号" << std::endl; 

    int n=0; 
    std::cin >> n; 

    //输出行数 
    for(int i=1;i<=n;i++)
    {
        //输出空格 
        for(int k=0;k<n-i;k++)
        {
            std::cout << "  ";
        }


        //输出⭐  
        for(int x=0;x < i*2-1;x++)
        {
            std::cout << "⭐";  
        }

        std::cout << std::endl; //输出换行
    }

    //输出下半部 
    for(int i=n-1;i>0;i--)
    {
        //空格  
        for(int k=0;k<n-i;k++)
        {
            std::cout << "  ";
        }

       //⭐ 
       for(int x=0;x < (i*2)-1;x++)
       {
            std::cout << "⭐";  
       }

        std::cout << std::endl; //输出换行
    }

}

4、利用 c++ 编写一个代码根据用户输入的字母输出对应的 字母三角形

输入 C
输出
    A
  ABA
ABCBA
#include <iostream>

int main()
{
    
    std::cout << "请输入一个字母A-Z" << std::endl;
    char c; 
    std::cin >> c; 

    if( c < 'A' || c > 'Z')
    {
        std::cout  << "输入错误" << std::endl; 
        return -1; 
    }




    //输出行数 
    for(int line=0;line <= c -'A';line++)
    {
        //输出空格 
        for(int k=0;k<c -'A'-line;k++)
        {
            std::cout << " ";
        }

        //输出 前半部 字母 
        int  i='A';
        for(;i<='A'+line;i++)
        {
            std::cout << (char)i;
        }

       //i='C'
        //输出 后半部 字母 
        for(i=i-2;i >= 'A' ;i--)
        {
            std::cout << (char)i;
        }



        std::cout << std::endl; 
    }



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值