一、第一个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::coutstd::cinstd::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;
}
编译运行如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/4ea2160b94522ee17e648d493e255688.png)
提示:当
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;
}
编译运行如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/376dba5001c052356e8d60cb6407f412.png)
四、作业
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;
}
}