实验二
一.验证性实验
1 .函数声明
函数的声明是对函数调用的准备,是告诉编译器存在这么一个函数,这个函数会在后面提到,这样在便编译过程中编译器就会自动向下寻找函数。
2 .函数定义
函数定义是告知函数的类型,如果把函数的声明比作告知编译器有这么一个函数,那函数的定义就是说有一个什么样的函数,相当于提前写出该函数。
3 .函数的调用
函数的调用即将一个写好的函数带入到main函数中,执行所需的功能。
4 .形参,实参,返回值及其做用
形参可以理解为编译函数时赋予的参数,是而实参和它的字面意思一样,是在函数中实际存在的值,实际调用函数时传递给的形参,返回值就是函数运行后所得的参数。
就好像函数z=x+y,x,y就是形参,4=1+3中的1和3就是实参
5.值传递和引用传递的区别
值传递是将实参的内容复制一份赋予形参,函数结束时对原本的实参没有影响,而引用传递是说实参和形参等价,对形参的影响等价于对实参的影响。
习题2-28
#include<iostream> #include<iostream> using namespace std; int main() { char A,D,S,Q,m; cout<<"Menu A(DD) D(elete) S(ort) Q(uit),Select ont:"<<endl; cin>>m; if(m!='Q') { if(m=='A') { cout<<"数据已增加"; } else if(m=='D') { cout<<"数据已删除"; } else if(m=='S') { cout<<"数据已排序"; } } else { break; } return 0; }
#include<iostream> using namespace std; int main() { char A,S,D,Q,m; cout<<"Menu A(DD) D(elete) S(ort) Q(uit),Select ont:"; cin>>m; switch(m) { case 'A': cout<<"数据已添加"<<endl; break; case 'S': cout<<"数据已排序"<<endl; break; case 'D': cout<<"数据已删除"<<endl; break; case 'Q': return 0; break; } return 0; }
结果如图
习题2-29
for形式
#include<iostream> using namespace std; int main() { int m,n; for(m=3;m<100;m++) { for(n=2;n<m;n++) {if(m%n==0) { break; } if(n==(m-1)) { cout<<m<<"是质数"<<endl; } } } return 0; }
while形式
#include<iostream> using namespace std; int main() { int m,n; for(m=3;m<100;m++) { for(n=2;n<m;n++) {if(m%n==0) { break; } if(n==(m-1)) { cout<<m<<"是质数"<<endl; } } } return 0; } #include<iostream> using namespace std; int main() { int m=3,n; while(m<100) { for(n=2;n<m;n++) { if(m%n==0) { break; } if(n==(m-1)) { cout<<m<<"是质数"<<endl; } } m++; } return 0; }
do while 形式
#include<iostream> using namespace std; int main() { int m=3,n; do { for(n=2;n<m;n++) { if(m%n==0) { break; } if(n==(m-1)) { cout<<m<<"是质数"<<endl; } } m++; }while(m<100); return 0; }
习题2-32
while形式
int main() { int m,n,x; unsigned seed; srand((unsigned int) seed); //调用时间函数传送不同的seed值 x = 1 + rand() % 100; //生成每次不同的随机数 cout<<"请输入种子数"<<endl; cin>>seed; srand(seed); while(rand()<1&&rand()>100); { srand(seed); seed++; } cout<<"请输入猜测值"<<endl; cin>>n; while(n!=m) { if(n>m) { cout<<"n大于m"<<endl; cin>>n; continue; } else if(n<m) { cout<<"n小于m"<<endl; cin>>n; continue; } } return 0; }
do while形式
#include<iostream> #include<cstdlib> using namespace std; int main() { int m,n,x; unsigned seed; srand((unsigned int) seed); x = 1 + rand() % 100; cout<<"请输入种子数"<<endl; cin>>seed; srand(seed); while(rand()<1&&rand()>100); { srand(seed); seed++; } cout<<"请输入猜测值"<<endl; cin>>n; do { if(n>m) { cout<<"n大于m"<<endl; cin>>n; continue; } else if(n<m) { cout<<"n小于m"<<endl; cin>>n; continue; } }while(n!=m); return 0; }
习题2-34
#include <iostream> using namespace std; enum color{Red,Yellow,Blue,White,Black}; int main() { int i, j, k, n = 0; for (i = Red; i<=Black; i++) for (j = i + 1; j<=Black; j++) for (k = j + 1; k <=Black; k++) { if (i != j && j != k && k != i) cout << i << " " << j << " " << k<<endl; n++; } cout << n << endl; return 0; }
这道题有点像数学里的排列组合问题,我将袋子中的球设为一个枚举类型,将所有的可能列举出来,便得出答案。
实验总结与体会
只有在编程的过程中自己发现问题,水平才能提高。我在编程的过程中遇到了许多不懂的,不会的地方,要自己去翻书,去百度,去问同学才得到解决,虽然很麻烦,但是看着自己写出的简单的小程序,还是挺有成就感的。