/*
第一章
程序:完成事物的既定方式和过程
C语言是结构化和模块化的语言,面向过程。未完全实现解决软件设计危机的目标。
C++保留了C语言原有的所有优点,增加了面向对象的机制。
增加了面向对象机制
对C语言的功能做了扩充
变量的定义可以出现在程序中的任何行、提供了标准输入输出流对象cin, cout、用const定义常变量、
函数重载、函数模板、带默认值的函数、引用类型、单目作用域运算符、string类型字符串、使用
new和delete代替malloc和free函数等
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
以 # 开头的语句称为预处理器指令
#include语句不是必须的,但是如果一旦
程序中有该语句,就必须将它放在程序的
开始处
*/
#include <iostream>//标准输入输出函数库
#include <cmath>//数学函数库
using namespace std;//使用标准命名空间
int main()//主函数
{
double root (double x, double y);//root函数求x-y的平方根
{ if (x >= y) return sqrt(x - y); //只有在x>=y时 计算x-y的平方根
else return 0;
}
double a, b;// 定义两个浮点型变量
cin >> a >> b;
cout << root(a, b) << endl;
return 0
}
二、
#include <iostream>
using namespace std;
int main2()
{
cout << "Hello world!" << endl;
return 0;
}
/**********************************
//hello word
#include <iostream>
using namespace std;
int main()
{
cout << "HelloWorld!" << endl;
return 0;
}
**********************************/
/**********************************
//cout:输出对象
#include <iostream>
using namespace std;
int main()
{
//cout:输出对象
cout << "英雄名称:寒冰射手·艾希\n";
cout << "伤害:56\t\t攻击距离:600\n"
<< "护甲:15.5(+3.4)\t魔抗:30(+0.0)\n"
<< "生命值:395(+79)\t生命回复:0.9(+0.11)" << endl;
return 0;
}
**********************************/
/*
int num1 = 5, num2 = 2;
//cout << num1 / num2 << endl;
//cout << num1 % num2 << endl;
//取模的场景
//1、取某个数字的个位 5 % 10
//2、45天是1个月零几天 45 % 30
double num3 = (double)num1 / num2;
cout << num3 << endl;
/*
double attack1 = 272;
double attack2 = 250;
double attack3 = 240;
cout << left;
cout << setfill('*');
cout << setw(8) << attack1 <<
setw(8) << attack2 <<
setw(8) << attack3 << endl;
/**
//string 是字符串类型
string str = "你好,我是";
cout << str << endl;
//为数据类型起别名
typedef int zhengxing;
zhengxing num1 = 90;
int num2 = 90;
cout << '\a' << endl;
int num;
char ch1, ch2, ch3;
cout << "请输入一个数字:";
cin >> num; //scanf("%d", &num);
cin >> ch1 >> ch2 >> ch3;
//ch1 = cin.get();
//ch2 = cin.get();
cout << num << "\t" << ch1 << '\t' << ch2 << '\t' << ch3 << endl;
//cout << (char)('A' + ' ') << endl;
//cout << CHAR_MIN << '\t' << CHAR_MAX << endl;
//cout << UCHAR_MAX << endl;
//打印德玛西亚之力
//SetConsoleTitle("示例:打印德玛西亚之力的详细信息");
/** 伤害 */
// double value_attack = 57.88;
/** 伤害成长值 */
//double value_attack_growth = 4.5;
/** 攻击距离 */
//double value_attack_distance = 172;
/** 护甲值 */
//double value_defence = 27.54;
/** 护甲成长值 */
//double value_defence_growth = 3.0;
//cout << "名称:德玛西亚之力" << endl;
//cout << "伤害:" << value_attack << "(+" << value_attack_growth << ")\t"
// << "攻击距离:" << value_attack_distance << endl;
/*
//演示单精度浮点型和双精度浮点型精度问题
float numFloat = 10 / 3.0;
double numDouble = 10 / 3.0;
cout << fixed;//让浮点型固定以数字的方式显示
cout << setprecision(2);//控制显示的小数位数 printf("%.2lf", xxx);
cout << "numFloat = " << numFloat * 100000000 << endl;
cout << "numDouble = " << numDouble * 100000000 << endl;
/*
//sizeof 用来测量数据类型的长度
cout << sizeof(double) << endl;
cout << sizeof(long double) << endl;
cout << sizeof(3.14f) << endl;
/*
cin.get();
getchar();//得到用户输入的单个字符
//固定以小数方式显示,并保留小数点后2位
cout << fixed << setprecision(2);
cout << "|"<< setw(8) << 3.14 << setw(8) << "|" << endl;
float floatNum = 10.0 / 3.0; //单精度浮点型数字
double doubleNum = 10.0 / 3.0; //双精度浮点型数字
const float million = 1000000; //设置100w为常量
cout << "floatNum = " << floatNum << endl;
cout << "100w * floatNum = " << million * floatNum << endl;
cout << "1000w * floatNum = " << 10 * million * floatNum << endl;
cout << "\ndoubleNum = " << doubleNum << endl;
cout << "100w * doubleNum = " << million * doubleNum;
//控制cout的显示精度
//1.强制以小数的方式显示
/*
cout << fixed ;
//2.控制显示的精度
cout << setprecision(2);
//输出double类型数据
double doubleNum = 100.0 / 3.0;
cout << doubleNum * 1000000 << endl;
/*
//已知圆柱体的半径和高,求圆柱体的体积
const float PI = 3.14f; //定义了一个float类型的常量
float radius = 4.5f;
float height = 90.0f;
double volume = PI * pow(radius, 2) * height;
cout << "体积是:" << volume << endl;
/*
float num = 12345.12345678;
cout << num << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
//强调下if的大括号
int num = 5;
cout << sizeof(num++) << endl;
cout << num << endl;
//输出的num为5
/*
//判断某月有几天
int month = 12;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout << "31天" << endl;
break;
case 2:
break;
//.......
}
/*
int choice = 12345;
switch(choice)
{
default:
cout << 998 << endl;
case 1:
cout << 1 << endl;
case 2:
cout << 2 << endl;
break;
case 3:
cout << 3 << endl;
case 4:
cout << 4 << endl;
}
/**
double flowerPrice; //花的单价
//打印剧情
cout << "黎明前的黑暗渐渐退去,海天之间透着一抹亮光,像是点燃的火把。。。。。" << endl;
cout << "小男生给小女生送花,小女生问:这花多少钱啊?" << endl;
cout << "小男生:";
cin >> flowerPrice;
if(flowerPrice >= 50000)
{
cout << "马上去扯证!" << endl;
}
else if(flowerPrice >= 10000 && flowerPrice < 50000)
{
cout << "" << endl;
}
else if()
{
}
else
{
}
/*
//购物车
double price_louis = 35000.0;
double price_hemes = 11044.5;
double price_chanel = 1535.0;
double total = 0; //总价
double zhekou = 0; //折扣
total = price_chanel + price_hemes + price_louis;
//如果购买的三种商品有一种商品单价大于1000
//或三种商品总金额大于5000,折扣率为30%,
//否则没有折扣
if(price_chanel > 1000 || price_hemes > 1000 || price_louis > 1000 || total > 5000)
{
//折扣0.3
}
//如果总价大于5w就打七折,否则打九折
if(total > 50000)
{
//total *= 0.7;
zhekou = 0.7;
}
else
{
//total *= 0.9;
zhekou = 0.9;
}
total *= zhekou;
cout << "最终付款:" << total << endl;
/*
//使用程序判断用户输入的字符是否是合法的硬盘盘符
char pan = '\0'; //默认值设置为空字符
cout << "请输入一个字符,我来判断是否合法:";
cin >> pan;
// 'A' ~ 'Z'
//if(pan >= 65 && pan <= 65 + 25)
if(pan >= 'A' && pan <= 'Z')
{
cout << "是合法盘符!" << endl;
}
else
{
cout << "不是合法盘符!" << endl;
}
/*
cout << sizeof("") << endl;
/*
//C语言中,0表示假,非0表示真
//C++中,引入了布尔类型 bool
bool flag = true; //false
cout << boolalpha;
cout << "15 > 88 吗?" << (15 > 88) << endl;
cout << "16 < 99 吗?" << (16 < 99) << endl;
int num = 1024;
//演示复合运算符
num += 90;// <==> num = num + 90;
num *= 90;
num /= 90;
num -= 90;
num %= 90;
cout << num << endl;
return 0;
}
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
//王健林以10%的单利投资了100万元(每年的利润都是投资额的10%);
//马云以5%的复利投资了100万元(利息是当前存款包括获得的利息)的5%。
//以此类推,计算多少年后,马云的投资价值才能超过王健林?并分别显示两人的投资价值。
//单利:利息 = 0.1 * 原始存款
//复利:利息 = 0.05 * 当前存款
//1、定义变量:马云和王健林的投资款以及年份
double money_w = 100.0; //王爸爸的投资款
double money_m = 100.0; //马云爸爸的投资款
int year = 0; //年份,初值为0
//2、通过循环,计算复利超过单利的年份
while (money_w >= money_m)
{
year++;
//单利公式:
money_w = money_w + 0.1 * 100.0;
//复利公式:
money_m = money_m + 0.05 * money_m;
}
cout << "经过" << year << "年后,马云的投资价值超过王健林!" << endl;
cout << "王健林:" << money_w << "\t马云:" << money_m << endl;
/*
//将用户输入的数字反转后打印
//1.定义变量,用来保存用户输入的数字
int num;
int tempNum;
//2.接收用户的输入
cout << "请输入一个数字,我来翻转:" ;
cin >> num;
tempNum = num;//类似克隆人的感觉
//3.将数字的每一位取出来并打印
cout << "用户输入的数字是:" << num << endl;
while(tempNum > 0)
{
cout << tempNum % 10;
//卸磨杀驴!!杀掉个位!!
tempNum /= 10;//num = num / 10;
}
cout << "\n原数字是:" << num << endl;
//取个位
//cout << "个位:" << num % 10 << endl;
//cout << "十位:" << num / 10 % 10 << endl;
*/
三、
/*
//某宝双十一2015年的交易额为800亿,每年递增25%
//问:按此速度哪年交易额达到2000亿?
//1、寻找循环变量 初值、判断、更新
//年 交易额 递增比
double money = 800.0;
int year = 2015;
while(money < 2000){
year++;
money = money * (1 + 0.25);
}
cout << "到" << year << "年,营业额达到" << money << "亿!" << endl;
/*
//使用循环实现三次密码输入错误退出系统
//并没有真正满足题意,请自行修正!!!
string password; //密码
int i = 0; //循环变量,用来控制循环的次数
while(i < 3)
{
cout << "请输入密码:" << endl;
cin >> password;
cout << "您输入的密码是:" << password << endl;
i++;
//判断用户输入的是否正确
if(password != "12345678")
{
if(i == 3){
cout << "3次密码输入错误,系统强制退出!" << endl;
exit(123456);
}
}
}
/*
//使用循环计算1-100的累加和
//需要循环变量
//需要累加和变量
int num = 1; //用来控制循环次数的变量
int sum = 0; //用来保存累加和的变量
while(num <= 100){
//cout << num << endl;
//sum = sum + num; //累加1-100的值,结果保存在变量sum中
sum += num;
//为了让循环退出,要让循环变量进行更新
num++;
}
cout << "1-100的累加和为:" << sum << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
//3、查找输入的数字在数组中的下标,没有找到则下标为-1
int nums[]{ 8, 4, 2, 1, 23, 23, 344, 12 };
int numsLen = sizeof(nums) / sizeof(int); //计算出数组的长度
int sum = 0;
for (int i = 0; i < numsLen; i++)
{
cout << nums[i] << '\t';
}
cout << endl;
//累加操作
for (int i = 0; i < numsLen; i++)
{
sum += nums[i]; //累加值
}
cout << "数列的和为:" << sum << "\t平均值为:" << sum / numsLen << endl;
//1、求数组中的最大值和最小值 - 打擂台 you can you up! no can no bibi!
int max = nums[0]; //假设第一个元素是最大值
int maxIndex = 0; //最大值的下标
for (int i = 1; i < numsLen; i++)
{
if (nums[i] > max)
{
max = nums[i]; //留下买路钱
maxIndex = i; //记录下最大值的下标
}
}
cout << "最大值是:" << max << '/' << nums[maxIndex] << endl;
cout << "最大值的下标是:" << maxIndex << endl;
//2、求出奇数个数和偶数个数
int jCount = 0, oCount = 0;
for (int i = 0; i < numsLen; i++)
{
if (nums[i] % 2 == 0)
{
oCount++;
}
else
{
jCount++;
}
}
cout << "奇数个数:" << jCount << '\t' << "偶数个数:" << oCount << endl;
//3、查找输入的数字在数组中的下标,没有找到则下标为-1
int searchNum; //用户要查找的数字
int searchIndex = INT_MIN; //用户查找数字的下标
cout << "请输入要查找的数字:";
cin >> searchNum;
//使用循环查找
for (int i = 0; i < numsLen; i++)
{
if (nums[i] == searchNum)
{
searchIndex = i;//记录下查找到元素的下标
break;
}
}
if (searchIndex == INT_MIN)
{
cout << "数组中没有这个数字!" << endl;
}
else
{
cout << searchNum << "在数组中的下标为:" << searchIndex << endl;
}
/**
//动态地从键盘录入信息并赋值
const int N = 5;
int nums[N];
cout << "数组的大小:" << sizeof(nums) / sizeof(int) << endl;
for(int i = 0; i < sizeof(nums) / sizeof(int); i++)
{
cout << "请输入第" << (i+1) << "个数组元素:";
cin >> nums[i];
}
for(int i = 0; i < N; i++)
{
cout << nums[i] << endl;
}
/*
char shap = 'A';
//外层循环控制行(行数,换行)
//内层循环控制列(列数,列的图形)
for(int i = 0; i < 4; i++)
{
for(int j = 0; j <= 2 - i; j++)
{
cout << " ";
}
for(int j = 0; j <= 2 * i; j++)
{
cout << (char)shap;
}
shap++;
cout << endl;
}
//图形的下半部分
for(int i = 0; i < 3; i++)
{
for(int j = 0; j <= i; j++)
{
cout << " ";
}
for(int j = 0; j <= 4 - 2 * i; j++)
{
//在j是极值的情况下打印星号,否则打印空格
if(j == 0 || j == 4 - 2 * i)
cout << "*";
else
cout << ' ';
}
cout << endl;
}
/*
int a = 5;
int num1 = ++a + a++;
cout << num1 << endl;
//选择排序:从数组中选择最小的同第一个值交换,再从剩下的部分中选择最小的与第二个交换,往复下去
int num[] = {45, 32, 56, 90, 21};
int min, minIndex;
for(int i = 0; i < 4; i++){
min = num[i];
minIndex = i;
for(int j = i + 1; j < 5; j++){
if(num[j] < min){
min = num[j];
minIndex = j;
}
}
//min和minIndex就是在内循环中找出来的剩下数字的最小值及索引
num[minIndex] = num[i];
num[i] = min;
}
for(int i = 0; i < 5; i++){
cout << num[i] << endl;
}
/*
//求1-100之间的偶数和
int sum = 0;
for(int i = 1; i <= 100; i++){
//跳过所有的奇数情况
if(i % 2 == 1)
continue;
sum += i;
}
cout << "1-100之间的偶数和为:" << sum << endl;
/**
//循环输入5个玩家的消费,统计消费额低于500的玩家数量
double money; //玩家的消费
int playerCount = 0; //低于500玩家的数量(计数器)
//for(int i = 0; i < 5; i++){
int i = 0;
do{
i++;
cout << "请输入当前玩家的消费额:";
cin >> money;
//跳过500以上的情况
if(money >= 500)
continue;
playerCount++;
}while(i < 5);
cout << "消费低于500的玩家数量是:" << playerCount << endl;
/*
//幸运53猜商品价格游戏
//根据猜的次数给予不同的奖励
//1次:iPhone8S Plus Plus 土豪金
//2-3次:小米移动电源
//5次以内:VR眼镜
const double PRICE = 5000.0; //要猜的商品价格,可以是随机数字
double guessPrice; //用户猜的商品价格
int guessCount = 0; //用户猜测的次数
//游戏实际上就是一个死循环
for(;;){
//每猜一次,猜测的总次数+1
guessCount++;
cout << "请输入神秘商品的价格:" ;
cin >> guessPrice;
if(guessPrice > PRICE){
cout << "大了!" << endl;
}else if(guessPrice < PRICE){
cout << "小了!" << endl;
}else{
cout << "恭喜,猜对啦!!" << endl;
break;
}
}
if(guessCount == 1){
cout << "幸运53狂人,中了大奖:iPhone8 ++ 土豪金 256G" << endl;
}else if(guessCount >= 2 && guessCount <= 3){
cout << "幸运53小超人,中了二等奖:小米移动电源" << endl;
}else if(guessCount >= 4 && guessCount <= 5){
cout << "幸运53小钢炮,中了三等奖:杂牌VR眼镜" << endl;
}else{
cout << "幸运53幸运草,中了安慰奖:老九君的拥抱*3" << endl;
}
/*
int age;
//while(true/1)
for(;;){
cout << "请输入玩家年龄:";
cin >> age;
if(age < 0){
cout << "输入的数据非法!!!" << endl;
break;
}
}
cout << "这是强制退出后的代码!!" << endl;
*/
/*
#include <iostream>
using namespace std;
int main3()
{
//1.通过观察,每个月第一天要打印\t用来表示1号是周几
//因为7月1号是星期2,所以应该打印1个\t 得出的规律:
//\t的数量 = 星期几-1 = dayOfWeek - 1
int day = 31;
int dayOfWeek = 2; //星期二
for(int i = 0; i < dayOfWeek - 1; i++){//非常纯洁:打印\t
cout << '\t';
}
//第二个for循环用来打印日期,因为7月有31天,所以循环31次
for(int i = 0; i < 31; i++){
//每次循环打印当前的日子
cout << i + 1 ;
//经过观察,我们发现打印\t和\n是有规律的
//规律:星期日就\n,其他日子就\t
if((dayOfWeek + i) %7 == 0){//星期日
cout << '\n';
}else{
cout << '\t';
}
}
return 0;
}
*/