1.实现一个简单的菜单程序,运行时显示"Menu:A(dd) D(elete)S(ort) Q(uit),Select one:"提示用户输入。A表示增加,D表示删除,S表示排序,Q表示退出。输入为A,D,S时分别提示“数据已经增加、删除、排序。”输入为Q时程序结束。
(1)(if else)
#include<iostream> using namespace std; int main() { cout << "Menu:A(dd) D(elete) S(ort) Q(uit),Select one" << endl; char a; while (cin >> a) { if (a == 'A') cout << "数据已经增加" << endl; else if (a == 'D') cout << "数据已经删除" << endl; else if (a == 'S') cout << "数据已经排序" << endl; else if (a == 'Q') break; else cout<<"无此选项,请输入其他选项"<<endl; cout << "Menu:A(dd) D(elete) S(ort) Q(uit),Select one" << endl; } system("pause"); return 0; }
(2)(switch)
#include<iostream> using namespace std; int main() { cout << "Menu:A(dd) D(elete) S(ort) Q(uit),Select one" << endl; char a; while (cin >> a) { switch (a) { case 'A':cout << "数据已经增加" << endl; break; case 'D':cout << "数据已经删除" << endl; break; case 'S':cout << "数据已经排序" << endl; break; case 'Q':system("pause"); return 0;default:cout<<"无此选项,请输入其他选项"<<endl; } cout << "Menu:A(dd) D(elete) S(ort) Q(uit),Select one" << endl; } system("pause"); return 0; }
2.用穷举法找出1~100间的质数并显示出来。
(1)(for)
#include<iostream> #include<cmath> using namespace std; int main() { int i , j, n = 1; double k; for(i=2;i<=100;i++) { k = sqrt(i*1.0); for (j = 2; j <= k; j++) if (i%j == 0)break; if (j > k) { if (i < 10) { cout << i << " "; } else { cout << i << " "; } n = n + 1; if (n == 5) { cout << endl; n = 1; } } else continue; } cout << endl; system("pause"); return 0; }
(2)(while)
#include<iostream> #include<cmath> using namespace std; int main() { int i=2, j, n = 1; double k; while (i <= 100) { k = sqrt(i*1.0); for (j = 2; j <= k; j++) if (i%j == 0)break; if (j > k) { if (i < 10) { cout << i << " " ; } else { cout << i << " "; } i = i + 1; n = n + 1; if (n == 5) { cout << endl; n = 1; } } else { i = i + 1; continue; } } cout << endl; system("pause"); return 0; }
(3)(do while)
#include<iostream> #include<cmath> using namespace std; int main() { int i = 2, j, n = 1; double k; do { k = sqrt(i*1.0); for (j = 2; j <= k; j++) if (i%j == 0)break; if (j > k) { if (i < 10) { cout << i << " "; } else { cout << i << " "; } i = i + 1; n = n + 1; if (n == 5) { cout << endl; n = 1; } } else { i = i + 1; continue; } } while (i<=100); cout << endl; system("pause"); return 0; }
#include<iostream> using namespace std; #include<cstdlib> #include<time.h> #define random(x)(rand()%x) int main() { srand((int)time(0)); int n,a,k=0; n=random(100); cout<<"猜猜这个数0_0,范围是0~100"<<endl; cin>>a; while(a-n) { if((a-n)>0) { cout<<"猜错了。比你这个数小,再猜猜。"<<endl; k++; cin>>a; } if((a-n)<0) { cout<<"猜错了。比你这个数大,继续。"<<endl; k++; cin>>a; } } switch(k) { case 0:cout<<"秀啊,一次就对emmmm."<<endl;break; case 1: case 2:cout<<"还行吧,对了。"<<endl;break; default:cout<<"终于对了,不太行啊."<<endl;break; } system("pause"); return 0; }
(2)(do while)
#include<iostream> using namespace std; #include<cstdlib> #include<time.h> #define random(x)(rand()%x) int main() { srand((int)time(0)); int n, a, k = 0; n = random(100); cout << "猜猜这个数0_0,范围是0~100" << endl; cin >> a; do { if ((a - n) > 0) { cout << "猜错了。比你这个数小,再猜猜。" << endl; k++; cin >> a; } if ((a - n) < 0) { cout << "猜错了。比你这个数大,继续。" << endl; k++; cin >> a; } } while (a - n); switch (k) { case 0:cout << "秀啊,一次就对emmmm." << endl; break; case 1: case 2:cout << "还行吧,对了。" << endl; break; default:cout << "终于对了,不太行啊." << endl; break; } system("pause"); return 0; }
4.口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中取出3个不同颜色的球,共有多少种取法。
(1)(无序)
#include<iostream> using namespace std; int main() { int n,m; cout<<"m个颜色不同的球里,每次取出n个不同颜色的球(1<=n<=m).请输入"<<endl; cin>>m>>n; int i,a=1,b=1; for(i=1;i<=n;i++) { a=a*i; } for(i=m;i>=m-n+1;i--) { b=b*i; } cout<<b/a<<endl; system("pause"); return 0; }
(2)(有序)
#include<iostream> using namespace std; int main() { int n,m; cout << "m个颜色不同的球里,每次取出n个不同颜色的球(1<=n<=m).请输入m,n" << endl; cin >> m>>n; int i, a = 1, b = 1,c=1; for (i = 1; i <= n; i++) { a = a * i; } for (i = m; i >= m - n + 1; i--) { b = b * i; } for (i = 1; i <= n; i++) c = c * i; cout << b/a *c<< endl; system("pause"); return 0; }
实验感想:
1.原来以为自己c语言基础掌握的不错,但是做了这些题才发现原来自己只是掌握了其中的一两个循环或分支结构如(for ,while,if else)还有其他的不常用,所以写起来并不顺手。(知道了自己并没有全部掌握循环和分支结构)
2. 对于第三题的随机数,我大一上并没有学习过,这是自己的原因。所以一开始不会用随机数就用固定的常数代替。后来查了关于随机数的库函数和相应的资料,初步了解了一点随机数。是用rand()在#include<cstdlib>的库函数里。但是只是这样取得的随机数每次都是一样的。需要用 srand((int)time(0))具体的情况还没有了解清楚(若有大佬可以教教我)。这样每次运行是取得的随机数都不一样。(随机数的程序暂时只能知道怎么用而不知道原理)
3.对于第四题。我不大清楚需不需要排序所以做了两种情况。但是这两种情况只有答案。并没有将取球的各种情况列出来(因为我觉得我不会写?)。
4.我觉得实验的题可以加一丢丢难度= ̄ω ̄=。