目录
1.认识C++ —— 初窥门径
一、C++程序框架(8分)
1、导入库
2、使用标准命名空间
3、主函数
4、程序结束
二、语言规范(16分)
1、单行注释 全部注释(快捷键)
2、多行注释
3、输出语句
4、换行语句
5、输入语句
6、代码缩进按键名字
7、程序文件名的后缀
8、编译运行后产生的应用程序文件名后缀
三、DEV-C++软件(下载链接)
1. 新建 源代码:Ctrl+N
2. 打开文件(Open): Ctrl+O
3. 保存程序: Save Ctrl+S
4. 另存程序: Save as
5. 运行程序:
编译[F9] + 运行[F10]
编译运行[F11]
四、计算机快捷键
复制:Ctrl+C
粘贴:Ctrl+V
全选:Ctrl+A
剪切:Ctrl+X
撤销:Ctrl+Z
保存:Ctrl+S
五、输入输出的应用
cout<<"面积:"<<15*10;//输出结果不换行
cout<<"周长:"<<(15+10)*2<<endl; //输出结果换行
cout<<endl<<"---------------------"<<endl;
cout<<"周长:"<<(15+10)*2<<endl<<"面积:"<<15*10;//与上2行一样的功能
- 输出"hello world"并换行:
- cout输出8.0*2的运算并换行:
- cout<<"5+2="<<3+4<<endl; 运行结果输出:
- cout<<91/2; 运行结果输出:
- 假设a变量已经定义,请完成输入a值的操作
- 假设a,b,c变量已经定义,请完成输入三个值的操作
题1.已知长方形的长为6,宽为4,请用cout输出该面积S与周长C。
题2.请输出社会主义核心价值观,输出如下:
社会主义核心价值观:
富强、民主、文明、和谐
自由、平等、公正、法治
爱国、敬业、诚信、友善
2.变量与赋值 —— 脚踏实地
2.1 变量类型
int; long long 代表--> (长)整数类型
float;double 代表--> 单/双精度浮点数类型(实/小数)
string 代表--> 字符串类型
bool 代表--> 布尔类型
char 代表--> 字符类型
2.2 变量类型与变量名
变量:像一个盒子,用来存值的,这个值不是固定的,是可以改变的。
格式:变量类型 变量名 = 值。
怎么定义/声明一个变量?
- 变量类型 变量名; 例子:int a; a=6; cout<<a<<endl;
- 变量类型 变量名 = 变量值; 例子:float b=6.66; cout<<b;
例子:int a = 6 //一个等于号代表赋值符号,等于号左边是变量,右边是值!
int a = 10;
cout<<a; //请问a是?
a = 66;
cout<<a; //请问a是?
综上,a=66, 会覆盖掉前面的值;
- 代码的运行顺序是从上往下进行的;
- 每一次新的赋值会替换掉原来存储的值。
题1.请实现交换变量a与变量b的值。
例如a=5,b=4;
经过交换结果得:a=4, b=5。 (想下生活交换两个物品的位置,一般先拿一个在手里,另一个挪到空出来的位置即可)
核心代码:
int a=6,b=8,t;
t = a;
a = b;
b = t;
cout<<a<<endl<<b;
2.3 变量的命名规则
1.变量名只能由数字、字母、下划线组成;
2.不能以数字开头;
3.字母区分大小写、不能与关键字重名;
4.变量名要贴近英文、中文拼音,做到见名知意。
- 请写出常用的变量类型
- 变量名/标识符名 由 组成
- 字母是区分
- 不能做变量名/标识符
- 整数6686赋值给变量a
- 双精度浮点数3.14赋值给变量d
- 字符A赋值给变量c
- 布尔值false赋值给变量b
- 字符串hello赋值给变量s
题2·改: 输入两个值a,b ,并交换a,b的值。
/*
一、变量类型
1.整数类型:int、long long 长整型
2.浮点数类型(小数):float单精度浮点数、double双精度
3.字符类型:char 一个字符,只能用单引号;
4.字符串类型:string 可以多个字符连用,双引号。
5.布尔类型:true对、真 false 错、假;非0为真
*/
//二、怎么定义变量或赋值?
//1.变量类型 变量名;
//2.变量类型 变量名=值;
//ctrl+/ 一口气注释
#include<iostream> // 导入输入输出流库
#include<string> // 导入字符串库
using namespace std; //使用标准的命名空间
int main(){ // 主要的 主函数
// 1.定义整数a赋值为5
int a=555555555;
cout<<a;
// 2.定义长整数 b赋值为6666666666
long long b=6666666666666;
cout<<endl<<b<<endl;
//3.定义字符 c;
char c;
c='a'; //字母a赋值到变量c
cout<<"字符:"<<c<<endl;
//布尔类型 d,e,f三个变量
bool d,e,f; //同时定义三个变量
d=-1;
e=false;
f=0;
cout<<d<<" "<<e<<" "<<f<<endl;
//字符串类型string 变量s
//string s;
//用输入语句cin输入字符串值
//cin>>s; // 输入语句
//cout<<"字符串:"<<s;
//浮点数 单双 q,w
float q;
double w;
cin>>q>>w;
cout<< q << endl <<w << endl;
return 0; // 程序结束
}
3.运算——孜孜不倦
3.1算术运算符:
/除号 *乘号 -减号 +加号 %取余
3 / 2 = 1 //整数相除只会是整数,不会是浮点数
3.0 / 2 = 1.5
3 % 2 = 1
自增自减运算符: ++ --
例如 int x = 2;
- ++x 是先对变量x+1,在进行其他操作;
- x++ 是先对变量x进行其他操作,再把x+1;
- --x 是先对变量x-1,在进行其他操作;
- x-- 是先对变量x进行其他操作,再把x-1;
请问a值 b值 c值 。
3.2 比较运算符:
>大于 <小于 ==等于 !=不等于 >=大于或等于 <=小于或等于
cout<<(1<2)<<endl; //满足条件,结果 1
cout<<(1>2)<<endl; //不满足条件,结果 0
cout<<(1==2)<<endl; //不满足条件,结果 0
cout<<(1!=2)<<endl; //满足条件,结果 1
3.3逻辑运算符:
&&(与) ||(或) !(非)
&&: 且,和;一假则假
||: 或 ; 一真则真
!: 取反
cout<<(6 && 8);//结果 1 cout<<(6 || 8); //结果 1
cout<<(0 && 1);//结果 0 cout<<(0 || 1); //结果 1
cout<<(!(0)); //结果 1 cout<<(!(5)); //结果 0
&&(与):左右两个满足条件就输出1,只要其中一个不满足就输出0;
||(或):只要左边满足条件就输出结果1,当两个都不满足就输出 0;
!(非) :取反,如果为真1,则输出假0。
3.4赋值运算符:
= *= /= += -= %=
请问第一个输出b值 ,第二个输出b值 。
运算的优先级:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
3.5练 变量赋值运算
int a=2, b=6; a=b; b=a; cout<<a<<b; a值 ; b值
输入9 6,最后输出sum值为:
int a=4, b=8; a+=b; b*=a; 输出b值 ; a值
算术运算
1.x=(i=4, j=16,k=3); x值:
2.假设所有变量均为整型,则表达式(a=2, b=50, b++, a+b)的值是
3.int a=9;double b=1.3; (int)(a*b)的值
4.int a=7; float x=3.2, y=4.7; 表达式x+a%3*(int)(x+y)%2/4的值是
逻辑运算&&关系运算
1.a = 3 * 2 <= 2 * 2 || 1 * 2 > 1 + 1, cout<<a; a值
2.b = 3 + 5 % 2 >= 2;cout<<b; b值
3.c = 0 == 0 || 2==3 && 2 ==2; c值
布尔应用
1. double c=7.8, s=4; bool a = c*2 > s*s; 输出a值
2. int num = -1; bool f = false; f = num ; 输出f值
3. int n = -1; bool f = !(!n - 5) ; 输出f值
三目运算
- int a=10, b=5, c; c = (a>b)?a:b; c值
- int a=10, b=5, c; c = (a<b)?0:1; c值
#include<iostream>
using namespace std;
int main(){
cout<<(1<2)<<endl;
cout<<(1>2)<<endl;
cout<<(1==2)<<endl;
cout<<(1!=2)<<endl;
int a,b;
a = 5;
b = 1;
b = b + a; // 简写 b+=a
cout<<b<<endl; // 6
b *= a;
cout<<b<<endl; // b = 6*5
cout<<(6 && 8); //结果 1
cout<<(6 || 8); //结果 1
cout<<(0 && 1); //结果 0
cout<<(0 || 1); //结果 1
cout<<(!(0)); //结果 1
cout<<(!(5)); //结果 0
return 0;
}
4.数位分离 —— 道法自然
题 1:输入一个两位的整数,求它的个位数与十位数。
int a,ge,shi;
cin>>a;
ge = a % 10; //个位数6
shi = a / 10; //十位数8
cout<<ge*10 + shi<<endl; // 68
题 2:输入一个三位整数,求它的个、十、百位数。
int a,ge,shi,bai;
cin >> a;
ge = a % 10;
shi = a % 100 / 10; // a/10%10
bai = a / 100;
cout<<ge * shi * bai<<endl;
题 3:输入一个四位整数,求它的个、十、百、千位数。
int a,ge,shi,bai,qian;
cin>>a;
ge = a % 10 / 1; // 1 可忽略不写
shi = a % 100 / 10;
bai = a % 1000 / 100;
qian = a /1000;
cout<<ge<<shi<<bai<<qian<<endl;
由上 3 道题可知:
1. 个位数的获取都是取余 10 即可; 2. 最高位数是直接整除;
3. 其他位数是顺序 "补 0"。
5.求时间—— 斗转星移
1 小时(h) = 60 分(m) = 3600 秒(s)
//题 1:假如有 1h:20m:30s, 时间全部转为秒数 t 怎做?
int t = 1*3600 + 20*60 + 30; //1h*3600+20m*60+30s
cout<<t<<endl; //全部秒数:4830
//题 2:输入 4830 秒, 输出:时 分 秒
int t,s,m,h;
cin>>t;
s = t % 60; //秒
m = t % 3600 / 60; //分
h = t / 3600; //时
cout<<h<<":"<< m<<":"<<s<<endl;
//题 3:输入 22 小时 125 分钟 306 秒,转为符合进率的时间
// 1.输入时分秒值,定义变量 h, m, s
int h,m,s;
cin>>h>>m>>s;
// 2.进率转换,多的秒数转为分钟,多的分钟转为小时,多的小时去掉
m = m + s/60; // 多的秒数转为分钟,并加上原来的分钟数
s = s % 60; // 剩余的秒数
h = h + m/ 60; // 多的分钟转为小时,并加上原来的小时数
m = m % 60; // 剩余的分钟数
h = h % 24; // 剩余的小时数
cout<<h<<":"<< m <<":"<< s<<endl;
#include<iostream>
using namespace std;
int main(){
// 求个十百数位数
int n,ge,shi,bai;
cin>>n;
ge = n%10;
shi = n%100/10;
bai = n/100;
cout<<ge<<" "<<shi<<" "<<bai;
//时间 取余数:输入一个秒数4032,求时分秒
int t,h,m,s;
cout<<"秒数:";
cin>>t;
h = t/3600;
m = t%3600/60;
s = t%60;
cout<<h<<":"<<m<<":"<<s<<endl;
int h,m,s;
cout<<"时 分 秒";
cin>>h>>m>>s;
m += s/60;
s = s%60;
h += m/60;
m = m%60;
h %= 24;
cout<<h<<":"<<m<<":"<<s;
// 六个变量 h1 m1 s1 h2 m2 s2;
int h1,m1,s1,h2,m2,s2;
cout<<"两个时分秒输入"<<endl;
cin>>h1>>m1>>s1>>h2>>m2>>s2;
h1 = h1+h2;
m1 +=m2;
s1 +=s2;// 25 230 360
m1 += s1/60; //236-180
s1 = s1%60;
h1 += m1/60;
m1 = m1%60; //56
h1 %= 24;
cout<<h1<<":"<<m1<<":"<<s1;
return 0;
}
6.类型与转换 —— 默转潜移
对于不同的数据,应该用适合的类型来存储。如果用错误的类型存储了数据,可能会导致各种各样奇怪的问题。
由于不同数据类型的取值范围不同,类型在内存中占用的空间大小也有所不同。在内存中,衡量空间大小的单位是 字节(Byte)。
1字节(Byte) = 8位(bit)(二进制 0到 255 )
英文占一个字节,中文占两个字节。
1KB(千字节) = 1024B (字节)
KB< MB< GB < TB < PB < EB < ZB < YB
6.1类型范围
int 有效范围:-2*109 到2*109
long long 有效范围:-9*1018 到9*1018
double 有效范围最大
转换优先级为:double > long long > int
1、把3.5强制转为为整数:
2、把3.5强制转为为布尔值:
3、把4.5强制转为为长整型值:
2.3 + 3 = 3 + true =
转换类型格式:
7. if条件判断语句 —— 登高望远
7.1 条件判断语句
单词:if 中文:如果
单词:else 中文:否则
单词:elif 中文:否则如果
条件判断格式:如果那么...否则就...
if (判断条件){
if语句1;
if语句2;
}
else{
else语句1;
}
练1.请输入一个值,请判断这个值是单数还是双数?
核心代码:
if (n % 2 == 0){ //2 4 6 8
cout<<n<<"双数(偶数)";
}
else{
cout<<n<<"单数(奇数)";
}
练2.请输入一个值,请判断这个数是正数、负数还是非正非负数。
// 正数 >0的数 负数 <0的数 0非正非负的数
if (n > 0){
cout<<n<<"正数";
}
else if (n<0){ //elif 代表 否则如果
cout<<n<<"负数";
}
else{
cout<<n<<"非正非负数";
}
练3.输入一个两位数,判断每个数是否是6或者8,如果是就是吉利数字
练4.输入一个数字,判断这个数能否被7整除的同时不能被2整除
练5.输入一个三位数,如果它的位数上有9,就输出yes,否则输出no。
7.2条件判断应用
题1.输入一个整数值,判断能否2、3、5整除,输出结果。
题2.输入两个整数,比较它们的大小。若x>y,输出>;若x=y,输出=;若x<y,输出<。
题3.输入三个整数a,b,c,请按a,b,c的顺序从小到大的值输出。
/* 题4. 商家有A、B两种奖卷,只要满足下列三个其中一个条件就可以兑换奖品。
1.有A卷15张,B卷10张;
2.有A卷25张;
3.有B卷30张。
满足条件就输出"yes 获奖",否则输出"No 获奖" */
/* 题5.输入某学生成绩
若成绩在85分及以上,输出"A"; 若成绩在60分到85分之间,输出"P",
若成绩低于60分,输出"E"。
输入
一个成绩(整数)
输出
输出一个等级字符。*/
/* 题6.给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩<60分)
输入:输入语文成绩和数学成绩。
输出:若该生恰好有一门课不及格,输出1;否则输出0。 */
/* 题7.输入一个数字(1到7范围)代表天数,1代表星期一,7同理代表星期天;
求输入天数的后天,例如输入5,应输出7。 */
/* 题8.大乐透彩票获奖模拟
输入获奖编码和用户码,判断满足下列那个条件:
● 如果用户码的数与获奖编码完全相同,奖金为100元
● 如果用户码的所有数字匹配获奖编码的所有数字,奖金为20元
● 如果用户码的数字能够匹配获奖编码的一个数字,奖金为2元
例如,用户码54 获奖编码54 ,就奖励100;
用户码54 获奖编码45,奖20;
用户码54 获奖编码40,奖2;匹配不上,输出0。 */
/* 题9.编程题税收:国家个人所得税规定,
工资不到10000元的不用交税;
工资在 10000元至 29999 元的按总工资的3%交税;
工资在 30000元至 49999 元的按总工资的7%交税;
工资在 50000元及以上的,按照总工资减1000后的13%交税。
你的工资为 xx 元,那么他需要交多少税呢? */
7.3 if嵌套语句
题1:试编一个模拟电子门登录程序,输入正确的用户名和密码,输出欢迎语句“亲爱的小朋友欢迎你!”,否则输出“用户名不正确!”或“密码错误!”。
假设用户名与密码都是6位数,如用户名:202210,密码:123456。流程图如下:
#include<iostream>
using namespace std;
int main(){
string USER = "202210" ;
string PSW = "123456" ;
string user,psw ;
cin>>user>>psw;
if(user==USER){
if(psw==PSW){
cout<<"亲爱的小朋友欢迎您!";
}
else{
cout<<"密码错误!";
}
}
else{
cout<<"用户名不正确!";
}
return 0;
}
题2:有一个100米赛跑比赛,男女要进行分组,赛跑时间小于等于10秒就进入决赛。
编程:请输入三个字母,ASCII码,比较字母的大小,最后输出最大的字母。
编程:输入一个字符,判断是字母的话,就把原来的大写转为小写输出 或 小写转为大写输出;判断是字符数字,就变成输出是数字。
#include<iostream>
#include<string>
using namespace std;
int main(){
// 条件判断 if
// if (判断条件1){
// 语句2;
// }
// else if(判断条件2){
// 语句2;
// }
// else{
// 语句1;
// }
// 题1:判断奇偶数
// 偶数:能被2整除,请问有余数 变量%2==0
// 定义输入一个整数n。请判断n是奇数还是偶数
int n;
cin>>n;
if(n%2==0){
cout<<n<<"是偶数"<<endl;
}
else{
cout<<n<<"是奇数"<<endl;
}
// 题2:判断n是正数,负数,非正非负数。
// 定义输入n
int n;
cin>>n;
if(n>0){
cout<<n<<"是正数";
}
else if(n<0){
cout<<n<<"是负数";
}
else{
cout<<n<<"非正非负数";
}
// //题3:输入a,b的值,按从小到大输出。
int a,b;
cin>>a>>b;
if(a<b){
cout<<a<<" "<<b;
}
else{
cout<<b<<" "<<a;
}
// 题4:输入a,b,c的值,按从小到大输出。
int a,b,c,t;
cin>>a>>b>>c;
if(a>b){
t = a;
a = b;
b = t;
}
if(a>c){
t = a;
c = a;
c = t;
}
if(b>c){
t = b;
b = c;
c = t;
}
cout<<a<<" "<<b<<" "<<c;
int n;
cin>>n;
if(n==88 || n==66 || n==68 || n==86){
cout<<n<<" 是吉利数字";;
}
else{
cout<<n<<" 不是吉利数字";
}
if(n%10==9 || n%100/10==9 || n/100==9){
cout<<"yes";
}
else{
cout<<"no";
}
if(n<10000){
cout<<0;
}
else if(n>=10000 && n<30000){
cout<<n*0.03;
}
else if(n>=30000 && n<50000){
cout<<n*0.07;
}
else if(n>=50000){
cout<<(n-1000)*0.13;
}
// 1.导入字符串库<string>
// 2.先确定用户名 User,密码 Psw
// string User = "202210";
// int Psw = 123456;
// 3.输入正确的用户名name和密码 mi。
string name;
int mi;
cin>>name>>mi;
if (name == User){
if(mi == Psw){
cout<<"欢迎您!";
}
else{
cout<<"密码错误!";
}
}
else{
cout<<"用户输入错误";
}
//
// 题 2:依次输入 3 个整数 a、b、c,
// 将它们从小到大的顺序输出。
int a,b,c;
cin>>a>>b>>c; // 20 5 10
if(a>b){ // 5 20 10
swap(a,b);
}
if(a>c){ // 5 20 10
swap(a,c);
}
if(b>c){ // 5 10 20
swap(b,c);
}
// cout<<a<<" "<<b<<" "<<c;
// 题 3:有一个 100 米赛跑比赛,
// 男m 女f 要进行分组,
// 赛跑时间小于等于 10 秒就进入决赛。
float score;
char sex;
cin>>score>>sex; //输入成绩和性别
if(score <= 10){
if(sex == 'm'){
cout<<"进入男子组";
}
else{
cout<<"进入女子组";
}
}
else{
cout<<"重在参与";
}
// return 0;
int a,b,c;
cin>>a>>b>>c;
if (a+b>c && a+c>b && b+c>b){
cout<<"yes";
}
else{
cout<<"no";
}
}
8. 字符ASCII —— 独具慧眼
C++语言中默认使用了 ASCII(American Standard Code for Information Interchange,美国标准信息交换码)作为编码标准,每一个字符都对应了一个整数值。常见的一些字符和他们对应的编码值如图。这个字符的存储位置是由ASCII编码决定的!
char a=’A’; cout<<(int)a; a输出结果:
cout<<(int)'a'; 输出结果: cout<<(int)'0'; 输出结果:
在ASCII中,字符A与B的距离差距是 字符A与a的距离差距是
在ASCII中,字符A与0的距离差距是 字符0与a的距离差距是
1.导入精度的库代码: #include<iomanip>
2.cout输出5.14156并保留两位小数的值
代码: cout<<fixed<<setprecision(2)<< 5.14156;
编程题:假如班级有21人,考试结束后班主任想要统计平均成绩。如果同学们的总成绩高于1260分,就将平均分四舍五入保留两位小数输出,否则就将平均分四舍五入保留到整数输出。我们一起来帮帮他吧。
输入:班级总成绩score。
/*题1:假如班级有21人,考试结束后班主任想要统计平均成绩。
如果同学们的总成绩高于1260分,
就将平均分四舍五入保留两位小数输出,
否则就将平均分四舍五入保留到整数输出。
输入:班级总成绩score。*/
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
// 1、定义并输入成绩score double float
// 2、输入的 score与 1260比较
double score;
cin >> score;
if(score > 1260){
cout<<fixed<<setprecision(2) << score/21;
}
else{
cout<<fixed<<setprecision(0) << score/21;
}
/*
题2:输入一个字符,判断是字母的话,
就把原来的大写转为小写输出或小写转为大写输出;
判断是字符数字,就变成输出是数字。
*/
// 1.定义并输入一个字符
char a;
cin>>a;
// 2.如果字符是小写 就转为大写
if(a >= 97 && a <= 122){
a = a - 32;
cout<<a;
}
//2.如果字符是大写 就转为小写
else if(a >= 'A' && a <= 'Z'){
a = a + 32;
cout<<a;
}
//3.如果是字符数字,
else if(a >= '0' && a <= '9'){
cout<<int(a)-48;
}
else{
cout<<"请重新输入";
}
return 0;
}
9.while循环——千回百转
循环,也叫重复执行,只要满足循环的条件我们就执行循环里的语句。
格式:
whlie (判断条件) {
while语句1;
while语句2;
}
练1:数数字,请用编程实现依次输出1 2 3...98 99 100的数字。
改·练1:从大到小数数字,从50数到5为止。
练2:计算下1到100的数字和。 1+2+3+4+5...+99+100
练3:输出1到100的偶数和与奇数和
练4:判断1到100的数中,如果是7的倍数又不是3的倍数,那么就输出这个数。
练5:请输出n的阶乘(n!),例如2的阶乘=1*2 5的阶乘=1*2*3*4*5;
12的阶乘=1*2*3*....*11*12。n! = 1*2*3*...* (n-1) * n。
请编程实现下面题目
题1.实现输出n到m的值
题2.实现输出n到m的偶数值
题3.实现输出200到2的3的倍数。
题4.实现输出3到n的平方。
题5.实现输出5到50的平方和。
#include<iostream>
#include<string>
using namespace std;
int main(){
// 1.输出2022疫情加油 1000遍;
int i=1;
while(i<=100){
cout<<"2022疫情加油"<<endl;
// i+=1;
i++;
}
// 2.统计 1+2+3+..+100的和==?
// 求偶数和 2+4+6+8+..+100
int i=1;
int sum=0;
while(i<=100){
sum += i;
i++;
}
cout<<sum<<endl;
int i=100;
int sum = 0;
while(i>=1){
if(i%2!=0){
sum += i;
cout<<sum<<endl;
}
i--;
}
// 求n的阶乘
// 3! = 1*2*3
// 5! = 1*2*3*4*5
// 求n的阶乘怎么做?
int n;
cin>>n;
int i=1;
int sum=1;
while(i<=n){
sum*=i;
i++;
cout<<sum<<endl;
}
return 0;
}
9.2 while应用
题1:实现输入n = 987654321整数,把整数进行分解,每一行就输出 1 2 3 4 5 6 7 8 9。
题2:班级有n个同学,每个同学都有相应的C++的考试成绩score。请输入班级人数,班级同学的成绩,并得出成绩总分与平均分。
求“题2”的最高分和最低分的差距——极差。由上图可知,最大值98,最小值32,极差=98-32=66。
#include<iostream>
using namespace std;
int main(){
int i=2;
int sum=0;
while(i<=100){
// 求和
if(i%7==0 && i%3!=0){
cout<<i<<endl;
}
// i = i+1;
i++;
}
cout<<sum<<endl;
int i=200;
while(i>=2){
if(i%3==0){
cout<<i<<endl;
}
i--;
}
int n,i=1,score,sum=0;
int max,min;
cin>>n;
while(i<=n){
cin>>score;
sum = sum + score;
if(i==1){
max = score;
min = score;
}
else{
if(max<score){
max = score;
}
if(min>score){
min = score;
}
}
i++;
}
cout<<"总分:"<<sum<<endl;
cout<<"平均分:"<<sum/n<<endl;
cout<<"最大值:"<<max;
int cnt = 0; //一开始水仙花0
for(int i=100;i<=999;i++){
int ge,shi,bai;
ge = i % 10;
shi = i % 100 / 10;
bai = i / 100;
if(i == ge*ge*ge+shi*shi*shi+bai*bai*bai){
cout<<i<<endl;
cnt++; // 统计多少个水仙花
}
}
cout<<"水仙花数有:"<<cnt;
for(int i=1;i<3;i++){
for(int j=1;j<3;j++){
cout<<i<<"*"<<j<<"="<<i*j<<" ";
}
cout<<endl;
}
int cnt=0;
for(int i=1;i<=6;i++){
for(int j=1;j<=6;j++){
for(int k=1;k<=6;k++){
if(i+j+k==12){
cout<<i<<" "<<j<<" "<<k<<endl;
cnt++;
}
}
}
}
cout<<"可能性有:"<<cnt;
int n,a,b,t;
cin>>n;
for(int i=1;i<=n;i++){
if(i<=2){
a = 1;
b = 1;
cout<<a<<" ";
}
else{
t = a;
a = b;
b = t+a;
cout<<b<<" ";
}
}
return 0;
}
9.3 break与continue
英文:break 中文:中断、破坏 终止整个循环
英文:continue 中文:继续、再开始 终止本次循环
题break:求1到100的偶数和,如果大于偶数和1000就停止程序。
//1-100的偶数和,如果大于1000就停止程序
#include<iostream>
using namespace std;
int main(){
int i=1,sum=0;
while(i<101){
if(i%2==0){
sum+=i;
cout<<sum<<endl;
}
if(sum>1000){
// break;
return 0;
}
i++;
}
}
题continue:求1-100以内,有多少个数值不是2或3或5的倍数。输出把值和个数求出来。
//1-100以内,判断值是 2或 3或 5的倍数就跳过
//continue 只终止本次循环
#include<iostream>
using namespace std;
int main(){
int i=0;
while(i<100){
i++;
if(i%2==0 || i%3==0 || i%5==0){
continue;
}
else{
cout<<i<<endl;
}
}
return 0;
}
题--角谷猜想:输入一个整数N,如果它是偶数,就将它除以2,如果它是奇数,则对它乘3再加1。依次按这种步骤,直到最终结果得出1。
请您来用编程实现这个角谷猜想吧!
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
while(n!=1){
if(n%2==1){
cout<<n<<"*3+1="<<n*3+1<<endl;
n = n*3+1;
}
else{
cout<<n<<"/2="<<n/2<<endl;
n /=2;
}
}
cout<<"End";
return 0;
}
10.for循环—— 循序渐进
10.1 for循环初认识
循环的大佬——for循环,它是属于迭代的循环,而while 是属于条件的循环。
for循环格式:
for(循环初始化; 循环条件; 变量自增){
for语句1;
for语句2;
}
练1:请输出1到100的值。
练2:例如,我们要取从6到60的数字,并输出
练3:请用依次输出100到1的值。
练4:请实现输出n到m的值
练5:实现输出n到m的偶数值
练6:实现输出1-100的奇数和
题1:菲波那契数列,数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。1 1 2 3 5 8 13 21 34 55 ...
请输入数值n,求斐波那契数列从1到第n个数的值?
题2:老师要统计全班同学的考试成绩score。
而且老师要算出班级的平均成绩、最高分、最低分。
首先请输入班级人数,再输入班级同学的成绩,并进行编程运算。
10.2 for循环应用
1.字符与循环
题1.1:循环输出26个字母,从A-Z。
题1.2:输入某一个字母,依次输出这个字母到Z(z)的值,并统计个数。
输入格式:x 输出格式:x y z 3
或输入格式:Y 输出格式:Y Z 2
题1.3:输入某一个大写或小写字母,如果输入是大写,依次输出这个字母到Z的小写值。如果输入是小写,依次输出这个字母到z的大写值。
输入格式:x 输出格式:X Y Z
或输入格式:Y 输出格式:y z
2.数与循环
题2.1:要读入 n 个整数,统计其中正数、零、负数的个数并输出。
输入格式:
7
1 -1 0 3 5 0 -5
输出格式:
3 2 2
题2.2:所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身。
数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,是指一N位数,其各个位数之N次方和等于该数本身。现请问100-999范围内的水仙花数有哪些,请输出出来,并统计个数。
例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
题2.3:回文数,回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如12321 从哪边读都是一样的。请求出1-999范围内的回文数,并统计出来。
题3:(银行存利息问题) 农夫约翰在去年赚了一大笔钱!他想要把这些钱用于投资,并对自己能得到多少收益感到好奇。已知投资的复合年利率为R (0到20之间的整数)。约翰现有总值为M的钱(100到1,000,000之间的整数)。他清楚地知道自己要投资Y年(范围0到400)。请帮助他计算最终他会有多少钱,并输出它的整数部分。
某一年的利息 = 本金M * 年利率R%
某一年的钱 = 利息 + 本金
请你编程输入本金m,利率r,年数y;算出每一年的总钱数。
M*R%
本金=M + M*R%
题4:(猴子吃桃子问题)一群小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再吃一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。
#include<iostream>
using namespace std;
int main(){
double m,r,y;
cin>>m>>r>>y;
for(int i=1;i<=y;i++){
m += m * r / 100;
cout<<i<<"年后的本金:"<<m<<endl;
}
int n=1;
for(int i=10;i>=1;i--){
cout<<i<<"天的桃子数:"<<n<<endl;
n = (n+1)*2;
}
for(char i = 'A';i<='Z';i++){
cout<<i<<" ";
}
char n;
int cnt=0;
cin>>n;
for(char i=n;i<='Z';i++){
if(i>='A' && i<='Z'){
cnt++;
cout<<i<<" ";
}
}
cout<<cnt;
int n,a,cnt1=0,cnt2=0,cnt3=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
if(a>0){
cnt1++;
}
else if(a<0){
cnt2++;
}
else{
cnt3++;
}
}
cout<<cnt1<<" "<<cnt3<<" "<<cnt2;
return 0;
}
十一 循环嵌套--不拘一格
在循环里面又加一个循环,这样子就叫循环嵌套。
可以知道,外层循环控制行,内层循环控制列。
可以看到99乘法表是一个矩阵,我们要变成下面真正的乘法表‘三角形’样子。
图文(1)
图文(2) 对角线矩阵
图文(3) 直角三角形
把输出结果颠倒后如上图,请问如何修改?
图文(4)
图文(5) 数字矩阵
图文(6) 输入 n 行,m列数,求所有偶数的和
图文(7) 实现‘*’等腰三角形输出,如下图
11.2数学与循环——脉脉相通
题1:马克思手稿问题:有这样一道趣味数学题:男人、女人和小孩总计30个人,在一家饭店里吃饭,共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请用穷举法编程计算男人、女人和小孩各有几人,列出所有可能的组合。
题2:掷3颗骰子,请问骰子点数和为12的有哪些情况?
【分析思路】
由题意知,每个骰子都有六种可能,投掷出来的点数有6*6*6==216种可能,在216种可能中,筛选出点数和为12的所有情况;只要判断掷3颗骰子点数和等于12即可,输出各个骰子的点数;
题3:若一个口袋中放有12个球,其中有3个红球,3个白球与6个黑球,问从中任取8个共有多少种不同得颜色搭配?
#include<iostream>
using namespace std;
int main(){
//马克思手稿问题
//i代表男,j代表女,k代表孩子
int cnt = 0;
for(int i=1; i<=16; i++){
for(int j=1; j<=25; j++){
for(int k=1;k<=30;k++){
if(i+j+k==30 && i*3+2*j+k==50){
cout<<i<<" "<<j<<" "<<k<<endl;
cnt++;
}
}
}
}
cout<<"次数:"<<cnt;
// 掷骰子问题
int cnt=0;
for(int i=1;i<=6;i++){
for(int j=1;j<=6;j++){
for(int k=1;k<=6;k++){
if(i+j+k==12){
cout<<i<<" "<<j<<" "<<k<<endl;
cnt++;
}
}
}
}
cout<<"可能性有:"<<cnt;
//三色球问题
int cnt=0;
cout<<"红球 白球 黑球"<<endl;
for(int i=0;i<=3;i++){
for(int j=0;j<=3;j++){
if(8-i-j<=6){
cout<<i<<" "<<j<<" "<<8-i-j<<endl;
cnt++;
}
}
}
cout<<"共有"<<cnt<<"可能性";
return 0;
}