小樽C++ 单章① 基础核心内容(入门至循环)

目录

1.认识C++ —— 初窥门径

一、C++程序框架(8分) 

二、语言规范(16分)

三、DEV-C++软件(下载链接)

四、计算机快捷键

五、输入输出的应用

2.变量与赋值 —— 脚踏实地

2.1 变量类型

2.2 变量类型与变量名

2.3 变量的命名规则

3.运算——孜孜不倦

3.1算术运算符:

3.2 比较运算符:

3.3逻辑运算符:

3.4赋值运算符:

3.5练 变量赋值运算

算术运算

逻辑运算&&关系运算

布尔应用

三目运算

4.数位分离 —— 道法自然

5.求时间—— 斗转星移

6.类型与转换 —— 默转潜移

6.1类型范围

7. if条件判断语句 —— 登高望远

7.1 条件判断语句 

7.2条件判断应用

7.3 if嵌套语句

8. 字符ASCII —— 独具慧眼

9.while循环——千回百转

9.3 break与continue

 10.for循环—— 循序渐进

10.1 for循环初认识

10.2 for循环应用

1.字符与循环

2.数与循环


1.认识C++ —— 初窥门径

一、C++程序框架(8分) 

1、导入库                                    

2、使用标准命名空间                               

3、主函数                                        

4、程序结束                                    

二、语言规范(16分)

1、单行注释                    全部注释(快捷键)                  

2、多行注释                  

3、输出语句                 

4、换行语句                  

5、输入语句                 

6、代码缩进按键名字                             

7、程序文件名的后缀                             

8、编译运行后产生的应用程序文件名后缀            


三、DEV-C++软件(下载链接)

https://pan.baidu.com/s/1Q37eWfmsAWersprPylRFEA?pwd=poruhttps://pan.baidu.com/s/1Q37eWfmsAWersprPylRFEA?pwd=poru

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行一样的功能

  1. 输出"hello world"并换行:                                                                          
  2. cout输出8.0*2的运算并换行:                                                                              
  3. cout<<"5+2="<<3+4<<endl; 运行结果输出:                                                          
  4. cout<<91/2; 运行结果输出:                                                                                 
  5. 假设a变量已经定义,请完成输入a值的操作                                                            
  6. 假设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.变量名要贴近英文、中文拼音,做到见名知意。


  1. 请写出常用的变量类型                                          
  2. 变量名/标识符名 由                                    组成
  3. 字母是区分                   
  4.           不能做变量名/标识符
  5. 整数6686赋值给变量a                     
  6. 双精度浮点数3.14赋值给变量d                           
  7. 字符A赋值给变量c                                      
  8. 布尔值false赋值给变量b                                
  9. 字符串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值          

三目运算

  1. int a=10, b=5, c;  c = (a>b)?a:b; c值        
  2. 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;
} 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐樽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值