第2章 C++简单程序设计
2-25 编写一个完整的程序,实现功能:向用户提问“现在正在下雨吗?”,提示用户输入Y 或N。若输入为Y,显示“现在正在下雨。”;若输入为N,显示“现在没有下雨。”;否则继续提问“现在正在下雨吗?”。
#include<iostream>
using namespace std;
int main()
{
char i;
while(1){
cout<<"现在正在下雨吗?"<<endl;
cout<<"请输入Y或N:";
cin>>i;
if(i=='Y'){
cout<<"现在正在下雨。"<<endl;
break;
}
else if(i=='N'){
cout<<"现在没有下雨。"<<endl;
break;
}
}
return 0;
}
2-26 编写一个完整的程序,运行时向用户提问“你考试考了多少分?(0~100)”,接收输入后判断其等级显示出来。规则如下:
#include<iostream>
using namespace std;
int main()
{
int score;
cout<<"你考试考了多少分?(0 ~ 100)"<<endl;
cin>>score;
if(score>=90&&score<=100)
cout<<"优"<<endl;
else if(score>=80&&score<90)
cout<<"良"<<endl;
else if(score>=60&&score<80)
cout<<"中"<<endl;
else if(score>=0&&score<60)
cout<<"差"<<endl;
return 0;
}
2-27 实现一个简单的菜单程序,运行时显示“M enu:A (dd) D(elete) S(ort) Q (uit), Select one:”提示用户输入。A 表示增加,D 表示删除,S 表示排序,Q 表示退出。输入为 A、D、S时分别提示“数据已经增加、删除、排序。”,输入为Q 时程序结束。
(1)要求使用 if…else 语句进行判断,用 break,continue 控制程序流程。
(2)要求使用 switch 语句。
//(1) if-else 语句
#include<iostream>
using namespace std;
int main()
{
char c;
while(1){
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>c;
if(c=='A'){
cout<<"数据已经增加"<<endl;
continue;
}
else if(c=='D'){
cout<<"数据已经删除"<<endl;
continue;
}
else if(c=='S'){
cout<<"数据已经排序"<<endl;
continue;
}
else if(c=='Q'){
break;
}
}
return 0;
}
//(2)switch 语句
#include<iostream>
using namespace std;
int main()
{
char c;
while(1){
cout<<"Menu:A(dd) D(elete) S(ort) Q(uit),Select one:";
cin>>c;
switch(c){
case 'A':
cout<<"数据已经增加"<<endl;
break;
case 'D':
cout<<"数据已经删除"<<endl;
break;
case 'S':
cout<<"数据已经排序"<<endl;
break;
case 'Q':
exit(0);
break;
}
}
return 0;
}
2-28 用穷举法找出 1~100 间的质数并显示出来。分别使用 while,do…while,for循环语句实现。
//while
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i=2,j,k,flag;
while(i<=100){
flag=1;
j=2;
k=sqrt(i);
while(j<=k){
if(i%j==0){
flag=0;
break;
}
j++;
}
if(flag)
cout<<i<<endl;
i++;
}
return 0;
}
//do-while
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i=2,j,k,flag;
do{
flag=1;
j=2;
k=sqrt(i);
while(j<=k){
if(i%j==0){
flag=0;
break;
}
j++;
}
if(flag)
cout<<i<<endl;
i++;
}while(i<=100);
return 0;
}
//for
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
for(int i=2;i<=100;i++){
int flag=1;
for(int j=2;j<=sqrt(i);j++){
if(i%j==0){
flag=0;
break;
}
}
if(flag)
cout<<i<<endl;
}
return 0;
}
2-30 声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
#include<iostream>
using namespace std;
struct shijian{
int year,mouth,day,hour,min,second;
};
int main()
{
shijian s;
cout<<"请输入年、月、日、小时、分、秒的值:";
cin>>s.year>>s.mouth>>s.day>>s.hour>>s.min>>s.second;
cout<<s.year<<"年"<<s.mouth<<"月"<<s.day<<"日"<<" "<<s.hour<<":"<<s.min<<":"<<s.second;
return 0;
}
2-31 在程序中定义一个整型变量,赋予 1~100 的值。要求用户猜这个数,比较两个数的大小,把结果提示给用户,直到猜对为止。分别使用 while,do…while语句实现循环。
//while
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int x;
srand(time(0)); //设置随机种子
int num=rand()%100+1; //随机生成一个1~100之间的数
cout<<"请猜一下这个数为多少: ";
while(cin>>x)
{
if(x!=num)
{
if(x<num)
{
cout<<"小了"<<endl;
}
else
{
cout<<"大了"<<endl;
}
}
else
{
cout<<"猜对了!"<<endl;
break;
}
}
return 0;
}
//do-while
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int main()
{
int x;
srand(time(0)); //设置随机种子
int num=rand()%100+1; //随机生成一个1~100之间的数
cout<<"请猜一下这个数为多少: ";
cin>>x;
do{
if(x!=num)
{
if(x<num)
{
cout<<"小了"<<endl;
}
else
{
cout<<"大了"<<endl;
}
}
else
{
cout<<"猜对了!"<<endl;
break;
}
}while(cin>>x);
return 0;
}
2-32 口袋中有红、黄、蓝、白、黑 5 种颜色的球若干个。每次从口袋中取出 3 个不同颜色的球,问有多少种取法?
#include<iostream>
#include<iomanip> //这个头文件是来设置输出格式的,比如设置输出占几个字符宽度的setw()
using namespace std;
enum color{red,yellow,blue,white,black}; //枚举类型
void print(int n)
{
switch(n)
{
//left表示左对齐
case red: cout<<left<<setw(10)<<"red"; break; //字符串输出,左对齐,占位符10位
case yellow:cout<<left<<setw(10)<<"yellow"; break;
case blue: cout<<left<<setw(10)<<"blue"; break;
case white: cout<<left<<setw(10)<<"white"; break;
case black: cout<<left<<setw(10)<<"black"; break;
default: break;
}
}
int main()
{
int i,j,k,p;
int n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{
for(k=red;k<=black;k++)
if(k!=i&&k!=j)
{
n++;
cout<<left<<setw(6)<<n; //左对齐,占位符为6位
print(i); print(j); print(k); //调用print函数打印输出
cout<<endl;
}
}
cout<<"total:"<<n<<endl;
return 0;
}
好了,今天的分享就到这。
本专栏为本人大二C++课程的习题作业和一些学习经验的分享,供大家参考学习。如有侵权请立即与我联系,我将及时处理。
参考书籍为:C++语言程序设计 第五版 -清华大学出版社- 郑莉,董渊、C++语言程序设计 第五版 -清华大学出版社- 郑莉,董渊(学生用书)
编译环境:Visual Studio 2019、Dev-C++
欢迎关注我的微信公众号,分享一些有趣的知识:程序猿的茶水间