1.问题:对不同成绩给予对应评语
思路:1.输入成绩
2.判断是否为有效成绩
3.分类(按成绩),对应输出
代码:#include
using namespace std;
int main()
{
int score;
cout<<"input score:";
cin>>score;
if(score<0||score>100)
cout<<"invalid score!"<
{
switch(score/10)
{
case 10:
cout<<'A'<
case 9:
cout<<'B'<
case 8:
cout<<'C'<
case 7:
cout<<'D'<
case 6:
cout<<'E'<
default:
cout<<'F'<
}
}
解释:1.控制结构(流程控制)(flort control)
1.顺序
2.选择:if{...};if{...}else{...}
3.分支(多路选择):switch(){case:...}
4.循环:for(){...};while(){...};do{...}while()
2.结构:
1.switch( 结果为整数的表达式):先计算表达式
2.{...case( 整数常数:)...case( 整数常数:)}:case(可为整数、字符、枚举常量)。每个case 后的整数常数各不相同
3....break;(跳出):至少有一个分支;switch 所有的分支必须用{}括起来。
4.default; (习惯上放最后一位):至少有一个分支;switch 所有的分支必须用{}括起来。
2.问题1:以每行数*形式输出
问题2:错误代码,无限循环
思路1:无
思路2:i为字符型,不能i++运算,i的ASCII码值不变,即,一直<128
代码1:#include
using namespace std;
int main()
{
for(int i=0;i<10;i++)
{
cout< }
cout<<"bye"<
代码2:#include
using namespace std;
int main()
{
for(char i=0;i<128;i++)
cout<<"*"<
解释:for(准备;条件;调整):如果条件总为真的话,这个判断就是多余的,一直执行下去
for(准备;;调整):无条件循环就是无限循环,也就是死循环
for循环的()中任何条件都是可有可无的
for(;;) 无限次执行下面的语句,死循环
3.问题:共讲16天课,依次输出“讲第i天课”
思路:用while{}做,初始化15,减至0
代码:#include
using namespace std;
int main()
{
int days=15;
while(days>0)
{
cout<<" 讲第"<<16-days<<" 天课"<
}
cout<<" 大家解放了"<
解释:while(true)或者while(1):无限次执行下面的语句,死循环
4.问题:显示存款,取款,转账,查询选项,选中后,输出其代号;额外贴心功能:如果输入错误,重新让你选
思路:1.输入错误循环,即数<1||数>4,所以只能选while(){}或do{}while();
2.显示:用do{},选中:输入代号,是否数<1||数>4?:while(数<1||数>4)
代码:#include
using namespace std;
int main()
{
int choice;
do{
cout<<"1--存款"<
cin>>choice;
}
while(choice<1||choice>4);// 千万别忘了;号
cout<<" 您选择的是:"<
解释:如果不是考虑到额外情况,可以先输出选项,输入,然后可以if(){}else{}结构做
5. 问题:循环输入,每次输入都有序号;输入年份为0,则推出程序;输入年份<1600,为非法年份,重新输入;输入年份>=1600,判断是否为闰年还是正常年;不限制输入年份大小
思路:1.for(){}和while(){}都可以
2.属于break和continue语句范畴,但是要跳出输入的这层循环,所以用break
3.必须在循环体内一层有continue,因为还要输入
4.正常闰年算法
5.for(准备;;i++){}和while(1){初始化;...;++i}都可以
代码:#include
using namespace std;
int main()
{
int year;
for(int i=1; ;i++)
{
cout< cin>>year;
if(year==0)
break;
if(year<1600)
{
cout<<"invalid year!"<
}
if(year%4==0&&year%100!=0||year%400==0)
cout<<"leap year"<
cout<<"common year"<
}
解释:break:终止循环,跳出,只跳出一层循环(不在这层循环体内执行)
continue:用来跳过本轮循环中剩余的循环体,跳到调整部分(还在这层循环体内执行)
C++中:for( 准备;条件;调整){ } 如果和准备和调整去掉就同于while;控制结构可以随意组合,任意多层
6.问题:输入一个范围为100~500之间的整数,并列出这个数所有的约数divisors(不含本身),最后统计出个数count 和sum
思路:1.输入数,if(数<100||数>500),则非法;else{}
输入数,do{输入}while(数<100||数>500)或while(数<100||数>500) {}
2.反复对从1到这个数之前的所有整数能整除就是约数,输出:
int count=0;int sum=0;for(int i=1;i<数;i++){if(数%i==0){cout<
代码:#include
using namespace std;
int main()
{
int n;
do
{ { { 解释:按照自己思路编程,即编程思想 7.问题:对于指定某年某月,输出其天数 思路:1.输入或指定值 2.在main()函数中调计算天数子函数 3.1.考虑31天的月份(反正要进行天数初始化,直接以其中31天或以30天初始化,这样简洁) 3.2.考虑30天的月份 3.3.考虑闰年的2月份 代码:#include 解释:1.main函数是shell自动调用的,其他的不是 在main函数中调用那个函数 2.函数可以声明,也可在函数头直接写 4. 实参(值参):跟形参对应的数据 8.问题:对于指定某年某月,输出其下一天的年月日;额外要对非法的数据,重新输入 思路:1.额外的非法输入的矫正应在main(){}中体现:循环判断年,月,日是否有效(这是while(){},do{}while(),for(){}皆可选用)。即,判断日是否在1~当年当月最大天数之间 2.以算出指定年月的各有天数的方法为基础 3.日增加一: 3.2.在前两步的基础上,最后一个月(即12月)的判断,推出第二天的日期,月份,年份;如果是12月最后一天,推出1月和++年(如果月超过了12,月归一,年增加一) 代码:using namespace std; 解释:1.这次没有函数声明(上次有) 2.这次计算每月天数的返回值的方式不同,是直接返回(上次是存到变量,然后返回变量的值) 9.问题:输入数,输出数的平方 思路:计算平方的函数,由main函数调用 代码:#include 解释:在形参的名字里可以不同,但是类型和个数必须相同 10.问题:列菜单,选菜,输出代号 思路:注意无形参函数调用 代码:#include using namespace std; cout<<"3-辣子鸡丁"< cout< 解释:形参的名字里可以不写,但是类型和个数必须相同 11.问题:输出指定符号的矩阵 思路:双层for循环 代码:void print(int row,int col,char ch) 解释:无返回值函数调用 12.问题:根据性别分别输出 思路:另一种分不同情况输出的方法 代码:#include 解释:函数的重载:多个函数用同一个名字,必须让编译器能够区分出该调用哪个函数 栈:一种内存空间,系统自动管理 13.问题:有数列1,1,3,5,8,13,21,...1597,2584,4181,6765.用程序写出 思路:f(1)=1;f(2)=1;f(3)=f(3-1)+f(3-2);...f(n)=f(n-1)+f(n-2);...f(20)=f(19)+f(18). 代码:#include 解释:递归:函数(某形参)自己调用自己(另形参) 14.问题:有无存储类static,声明变量的比较 思路:无 代码:#include 解释:存储类:auto:自动变量,默认变量,无人用 15.问题:汉诺塔算法(经典递归算法)(???) 思路:1.输入盘子数 2.hano(int n,char a,char b,char c){ 代码:#include 16.问题:输出一个十进制整数,位与位之间用空格分隔 思路:1.输入数 2.1我们要的结果是数ab...cd以a,b,.....c,d的形式输出 2.2输出a(最高为取余),然后输出',';b(次高位取余),然后输出',';...c,然后输出',';d(???) 代码:#include 解释:无
cout<<" 请输入一个100~500的整数";
cin>>n;
}while(n<100||n>500);
int count=0;
int sum=0;
for(int i=1;i
if(n%i==0)
cout< ++count;
sum+=i;
}
}
cout<
using namespace std;
int daysOfMonth(int year,int month);// 函数的声明,名字不起任何作用
int main()
{
cout<<"main function"<
}
int daysOfMonth(int year,int month)// 函数名+参数表称为函数头
{//int 为返回类型;year/month 为行参;
cout<<"year="<
if(month==4||month==6||month==9||month==11)
days=30;
else if(month==2)
days=(year%4==0&&year%100!=0||year%400==0)?29:28;
return days;
}//函数体
3.形参中的数据是从那个函数之外传来的,形参本身也是变量,所以它自己会把数据保存一份
形参和函数体中的数据有什么区别:函数的形参在调用的时候才创建,而从函数返回时就释放
3.1.对于每个月最后一天的判断,推出第二天的日期,++月份(即,如果超过了当年当月最大天数,日归一,月加一)
int daysOfMonth(int y,int m)
{
if(m==4||m==6||m==9||m==11)
return 30;
if(m==2){// 这里的{}可有可无
if(y%4==0&&y%100!=0||y%400==0)
return 29;
else
return 28;
}
return 31;
}
int main()
{
int y,m,d;
do{
cout<<"input a date:";
cin>>y>>m>>d;
}while(y<1600||m<1||m>12||d<1||d>daysOfMonth(y,m));
if(++d>daysOfMonth(y,m)){ //这条判断语句很经典:两层意思
d=1;
if(++m>12){//这条判断语句很经典:两层意思
m=1;
++y;
}
}
cout<<"the next day:"<
using namespace std;
int squre(int n)
{
cout<<"n="<
cout<<"n="<
cout<<"---"<
int main()
{
int m=111;
squre(m);
cout<
int menu()// ()必须带着
{
int choice;
cout<<"---欢迎光临饭店---"<
cin>>choice;
return choice; // 因为返回类型为int,所以return 数据
}
int main()
{
{
for(int i=0;i
cout<
return;// 因为返回类型为void,所以可以省略,注意不能带0或其他数据,是不带回结果的函数
}
int main()
{
print(3,5,'*');
cout<<"--------------------"<
cout<<"===================="<
using namespace std;
void reg(string name,bool gender);
void reg(string name);
int main()
{
reg("陈东");
reg("刘哲");
reg("刘晓梅",false);
reg("杨智");
}
void reg(string name)
{
reg(name,true);
}
void reg(string name,bool gender)
{
cout<<(gender?" 帅哥":"美女")<
using namespace std;
int fib(int m) {
if(m<3)
return 1;
else
return fib(m-1)+fib(m-2);
}
int main()
{
for(int i=1;i<=20;i++)
cout<
using namespace std;
int getid()
{ //int id=1000; 每次执行getid()时,运行
static int id=1000;//第一次执行getid()时,运行。直到程序结束
++id;
return id;
}
int main()
{
cout<
extern
register
static:用于局部变量时有特殊含义,只在第一次遇到时执行,会在程序结束时才回收
volatile:不稳定
if(n>0){
hano(n-1,a,c,b);
n号从a直接移到b
hano(n-1,c,b,a);
}
}
using namespace std;
void hano(int n,char a,char b,char c)
{
if(n>0)
{
hano(n-1,a,c,b);
cout<
}
}
int main()
{
int n;
cout<<" 请输入盘子数:";
cin>>n;
hano(n,'A','B','C');
cout<<" 完毕!"<
解释:无
using namespace std;
void showdigit(int n)
{
if(n>9){
showdigit(n/10);
cout << ',';
}
cout << n%10;
}
int main()
{
int n;
cout << "input n:";
cin >> n;
showdigit(n);
cout << endl;
}