1、 编译原理实验 《添加新的程序语句》 学生姓名 徐超、吕吉龙、陈浩 张小龙、 刘涛、 王闪闪 所属学院 信息工程学院 专 业 计算机科学与技术 班 级 12-2 、 12-3 指导教师 史召峰 塔里木大学教务处制 1.实验目的 掌握另一种添加语句功能的方法。 2. 实验要求 通过深入的了解语句的内在功能,利用等价的方法实现语句的编译过程。 3. 实验内容 将repeat语句等价变换用while语句实现repea
2、t语句。本次实验利用C++语言实现。
4. 实验程序
#include "stdafx.h"
#include
3、 \n"; cout<<"-------------------------1:Guess my favorite number -----------------------\n"; cout<<"-------------------------2:Guess my name---------------------------------- \n"; cout<<"-------------------------3:生成~1000以内的完全数-------------------------\n"; cout<<"---------
4、4:计算n的阶乘-------------------------------------\n"; cout<<"-------------------------5: Enter q to quit---------------------------------"; int choose; while(cin>>choose) { switch(choose) { case 1: guess_number(); break; case 2: guess_name(); break; case 3:
5、
wqnum();
break;
case 4:
cout< 6、 -----------------------\n";
cout<<"-------------------------2:Guess my name---------------------------------- \n";
cout<<"-------------------------3:生成~1000以内的完全数-------------------------\n";
cout<<"-------------------------4:计算n的阶乘-------------------------------------\n";
cout<<"---------- 7、5: Enter q to quit---------------------------------";
}
return 0;
}
void guess_number()
{
const int N=7;
int n;
do
{cout<<"please enter my favorite number: ";
cin>>n;} //将括号里的内容标记为S
while(n!=N);//n和N相同时标记为B
cout<<" Good lucky! "< 8、
<<"Bye!";//标记该语句为C
}
//则上面的语句相当于执行S语句,直到有B语句才执行C语句
void guess_name()
{
char name[20];
do
{
cout<<"Please guess what's my name: ";
cin>>name;
} //将括号里的内容标记为S
while(strcmp(NAME,name));//标记字符NAME和name相同时为B
cout<<" Yeah! You got it!\n";//该语句标记为C
//则上面的语句相 9、当于执行S语句,直到有B语句才执行C语句
}
int factorial()
{
cout<<"Please enter the number: ";
int n;
cin>>n;
int result=1;
int i=1;
do {
result=result*i;
i=i+1;
}
while(i<=n);//标记i>n语句为B语句
return result;
//则上面的语句相当于执行S语句,直到有B语句返回result,并结束该函数
}
void wqnum()
{
int i,s,k;
i=1;
10、cout<<"1~1000以内的完全数\n";
do
{
s=0;
for(k=1;k1000为B语句
//则上面的语句相当于执行S语句,直到有B语句才结束该函数
}
完全数,又称完美数或完备数,是一些特殊的自然数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4 + 7 + 14=28。后面的数是496、8128。
5. 实验结果
实验分析见实验内容的程序。
6. 实验总结
本实验主要运用了C++中的do-while语句。






