【项目1- 阅读程序】阅读下列程序,写出程序的运行结果。上机时运行程序,与你的预期进行对照、理解。如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解。
(1)阅读下面两个有静态局部变量的程序,阅读中画出其中各变量的变化过程,以掌握静态变量的存储特征,对照实际运行结果检验学习成果。必要时记得看书及课件。
#include
using namespace std;
int f(int n);
int main()
{
cout<
预计运行结果是:__________________
#include
using namespace std;
int func (int a, int b)
{
static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
int main()
{
int k=4, m=1, p;
p=func(k, m);
cout<
预计运行结果是:__________________
#include
using namespace std;
int a=3, b=5;
int max(int a, int b)
{
int c;
c=a>b? a:b;
return c;
}
int main()
{
int a=8; //若无这一句,又将如何?
cout<
预计运行结果是:__________________
#include
using namespace std;
void cude();
int main()
{
extern int x;//去掉extern及本行全删除会怎样?
x=5; //去掉这一句呢?
cude();
cout<
预计运行结果是:__________________
#include
using namespace std;
void f(int);
int main()
{
int i=1234;
f(i);
return 0;
}
void f(int n)
{
if(n==0)
return;
else
{
f(n/10);
cout<
预计运行结果是:__________________
#include
using namespace std;
int sub(int);
int main()
{
int i=5;
cout<
预计运行结果是:__________________
#include
using namespace std;
const double pi=3.1415926;
float area(float r=6.5);//指定r的默认值为6.5
float volume(float h,float r=6.5); //指定r的默认值为6.5
int main( )
{
cout<
① 去掉第4行的“=6.5”试试,出错的原因是____________________;
#include
using namespace std;
template //模板声明,其中T为类型参数
T max(T a,T b,T c) //定义一个通用函数,用T作虚拟的类型名
{
if(b>a) a=b;
if(c>a) a=c;
return a;
}
int main( )
{
int i1=185,i2=-76,i3=567;
double d1=56.87,d2=90.23,d3=-3214.78;
long g1=67854,g2=-912456,g3=673456;
cout<<"i_max="<
提示1:在单步执行中,采用step into后,可以将T像待观察的变量一样,放在watch窗口中进行察看,如图所示,可以发现T取不同的类型。
提示2:若这个程序编译时出错,原因是命名空间std中已经定义过了max,从而产生了冲突。修改的方法有两种:(1)将程序中的max函数名改为mymax,避免这种冲突;或者(2)取消using namespace std;一行,但需要在程序中,将cout、cin、endl前加上std::,如std::cout<<...<<....<A: 求N组数的最大公约数
Description
计算一组数的最大公约数
Input
第一行是数据的组数N,从第二行是N组由两个整数(a和b)构成的输入,a和b之间用空格隔开,每组输入单独占一行
Output
每组的两个整数(a和b)的最大 公约数,每个结果独占一行
Sample Input
3
98 72
80 36
12 144
Sample Output
2
4
12
B:分离正整数中的各位数
Description
输出正整数的各位数
Input
若干个用空格隔开的正整数(输入个数不确定,键盘输入时,以CTRL-Z结束)
Output
每个正整数的各位数字,个位数在前,十位数紧随,最高位在最后,每位数后面有一个空格。每个正整数对应的输出占一行。
Sample Input
123 9523 89
Sample Output
3 2 1
3 2 5 9
9 8
C:刑警的射击成绩
Description
刑警培训结束,进行了射击科检验。教官要对学员射击的成绩进行分析,得出各分数段人数统计。
Input
输入若干个0-10间的整数(最高10环,脱靶为0)表示成绩,人数不确定,输入以一个0-10以外的数作为。
Output
各分数段(A:9环以上,B:7环以上,C:5环以上,D:不足5环)的人数,每项成绩占一行
Sample Input
9 7 3 5 8 5 6 7 9 10 0 6 99
Sample Output
A:3
B:3
C:4
D:2
#include
using namespace std;
int fib(int n);
int main(){
cout<
(5)输入一个整数n,要求输出对应的二进制形式,请用递归函数实现。
#include
using namespace std;
int main()
{
int n;
cout<<"请输入一个整数:";
cin>>n;
cout<
提示:二进制整数n转换为二进制的方法是“除2取余法”,即将n除以2后得到的余数,由后到前“串”起来,得到对应的二进制数,如图。
int main()
{
move(4,'A','B','C');
return 0;
}
//有n个盘子,
void move(int n, char A, char B,char C)
{
}
任务2——引入函数改善程序结构
1、数据
仍然只支持一位用户,所以用户帐号不必存储。
要用全局变量存储:(1)用户密码(由于支持改密码功能,所以用变量,暂先用整型,声明时赋初值);(2)帐户余额(用浮点数表示,声明时赋初值)
2、在输入密码环节,实现有限次密码输入的限制,如果三次都没有输入正确,程序将直接退出,不允许用户继续操作。
查验密码功能做成一个函数。例如:
bool pass()
{
int 次数=0;
bool 是否密码正确=false; //先假设密码不正确,以便能进入do-while循环
do{
输入密码;
次数++;
if(相符)是否密码正确=true;
}while(密码不正确且尝试次数不足3次);
return 是否密码正确; //上面密码正确为true,反之……
}
3、main()函数的结构将如下所示,work函数用于处理业务。
main()
{
……
if(pass())
work();
else
输出“请到柜台办理密码查询后再来”。
return 0;
}
4、办理业务的函数work的结构如下:
void work()
{
//循环显示功能菜单:1.查询、2.取款、3.存款、4.转帐、5.改密、0.退出
//选择后办理各种业务,再显示菜单,直到选择了0。
}
其中,各项业务分别编制一个函数完成。提示功能菜单(1.查询、2.取款、3.存款、4.转帐、5.改密、0.退出)后,由用户输入功能选择,用switch多分支完成对应的功能(有的功能依然只输出一句话提示即可)。图示给出建议(鼓励在合理范围内别出心裁):
任务3——将程序用多文件组织
将任务2中的代码,涉及密码、帐户的函数放在一个文件中,完成各项功能的函数放在另一个文件中,main函放也单独一个文件。
============== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏 贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》 ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 ===== |