⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selection.cpp

📁 这我们老师对是面向对象程序设计(清华大学出版社)一书制作的PPT
💻 CPP
字号:
#include <iostream.h>


//【例2.1】输出两个数中较大者

void main2()
{
	int x=3, y=2;
	cout<<"x与y中的最大者为:";
	if (x>y)				//A
		cout<<x<<endl;				//B		
	if(x<=y)
		cout<<y<<endl;				//C
}



//【例2.2】嵌套条件语句的应用

void main2_2()
{
	int x, y;
    cout<<"输入x:";
    cin>>x;
	if(x>800)  y=500;
	  	else if(x>700)  y=600;
       		else if(x>600)  y=700;
            		else if(x>500)  y=800;
                 	else   y=0;
  	cout<<"相应的y为:"<<y<<endl;      //A
}

//【例2.3】读入3个数a、b、c,输出其中绝对值最大者。

#include<math.h>
void  main2_3()
{
	float a,b,c,max;
	cin>>a>>b>>c;
	cout<<"a="<<a<<", b="<<b<<", c="<<c<<endl;
	if (fabs(a)>=fabs(b)&&fabs(a)>=fabs(c))
       max=a;
	else if(fabs(b)>=fabs(a)&&fabs(b)>=fabs(c))
           max=b;
       else 
	max=c;
	cout<< "a, b, c中绝对值最大的数为"<<max <<endl;
}

//【例2.4】设有如下形式的函数:
//      x<0		y=-1
//	  x=0		y=0
//	  x>0		y=1
//	  编写一个程序,根据输入的x值,输出相应的y值。

//用两种方法实现

void main2_4_1()
{
	int x,y;
    cin>>x;
    if(x<0)    				//A
        y=-1;
    else  if(x==0)
        y=0;
    else
        y=1;		   	//B
    cout<<"x=" <<x<<", y=" <<y<<endl;
}

void main2_4_2()
{
	int x,y;
    cin>>x;
    if(x>=0)
        if(x>0)
           y=1;
        else
           y=0;
      else
         y=-1;
    cout<<"x=" <<x<<", y=" <<y<<endl;
}

//【例2.5】输入一个字符,判别它是否小写字母,如果是,将它转换成大写字母;否则不转换。

void main2_5()
{
    char ch;
    cin>>ch;
    ch=(ch>='a'&&ch<='z')?(ch-32):ch;
    cout<<ch;
}



//【例2.6】switch语句的应用
//	对学生成绩进行如下分类:
//  'A'或'a'等:90-100分;
//  'B'或'a'等:80-89分;
//  'C'或'a'等:70-79分;
//  'D'或'a'等:60-69分;
//  'E'或'a'等:60分以下。
//则可以用如下程序	对等级和分数范围进行转换:


void main2_6()
{
    char grade;
    cin>>grade;
	switch(grade)
    {
    case  'a':
	case  'A': cout<<"成绩在90~100之间!" <<endl; break;
    case  'b':                                            	//M
	case  'B': cout<<"成绩在80~89之间!" <<endl; break;      	//N
	case  'c':
    case  'C': cout<<"成绩在70~79之间!" <<endl; break;
    case  'd':
    case  'D': cout<<"成绩在60~69之间!" <<endl; break;
    case  'e':
    case  'E': cout<<"成绩低于60!" <<endl; break;
    default: cout<<"成绩输入错误!" <<endl;
    }
}


//【例2.7】根据输入的年、月,判断该月的天数。
//    分析:根据历法,闰年2月的天数为29天,其它年份2月为28天。闰年是指:年份能被4且不能被100整除,
//或者年份能被400整除


void main2_7()
{
	int year,month,days,flag;
	cout<<"输入年,月:";
	cin>>year>>month;
	switch(month)	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12: days=31;break;
	case 4:
	case 6:
	case 9:
	case 11: days=30;break;
	case 2:
		if(!(year%400))
			flag=1;
		else if(!(year%4)&&year%100)
			flag=1;
		else flag=0;
		if(flag) days=29;
		else   days=28;
	}
	cout<<year<<"年"<<month<<"月的天数为:"<<days<<endl;
}


//【例2.8】求自然数1~100总和:

void  main2_8()
{
	int  i=0, sum=0;
    while(i++<100)
	{
        sum+=i;        
    }
    cout<<"sum="<<sum<<endl;
}

//【例2.9】键入一个整数,然后按相反顺序输出各位数字。
//分析:要将一个整数按相反的次序输出各位数字,必须获得该整数的各位数字,由于n%10为n的个位数,
//因此可以考虑用循环语句来解决该问题。


void main2_9()
{
     int n, r;
     cout<<"输入一个整数:\n";
     cin>>n;
     cout<<"n为:" <<n<<endl;
     cout<<"将n的各位数的次序颠倒后为:";
     while(n!=0)
     {
          r=n%10;     //求n的个位数
          cout<<r;
          n=n/10;        //截去n的个位数
     }
     cout<<endl;
}

//【例2.10】输入数据(包括空格和换行符),并将这些数据按输入的顺序输出,直到输入数字0时停止输入,
//用两种方法实现。

void  main2_10_1()
{
	char ch;
	cout<<"请输入(输入0时停止):"<<'\n';
	cin.get(ch);
	do
	{
		cout<<ch;
		cin.get(ch);
	}while(ch!='0');
	cout<<endl;    
}


void  main2_10_2()
{
	char ch;
	cout<<"请输入(输入0时停止):"<<'\n';
	cin.get(ch);
	while(ch!='0')
	{
		cout<<ch;
		cin.get(ch);
	}
	cout<<endl;    
}

//【例2.11】输入整数n,计算1!+2!+ … +n!的值(n!表示n的阶乘)

void  main2_11()
{
	int n;
	long fac,sum=0;
	cout<<"请输入一个整数:";
	cin>>n;
	for(int i=1;i<=n;i++)          		//A
	{
		fac=1;
		for(int j=1;j<=i;j++)          	//嵌套循环,计算i的阶乘
			fac*=j;
		sum+=fac;
	}
	cout<<"1!+2!+...+"<<n<<"!="<<sum;
}


//【例2.12】从键盘上输入若干个整数,若输入0则终止输入,输出输入整数的个数以及它们的总和。
// 分析:要输入多个整数,可用循环语句实现,但由于输入整数的个数不确定,即循环的次数不确定,
//对这类情况可用if语句和break语句来决定何时退出循环。


void main2_12()
{
	int num;
	cout<<"请输入一个整数(若输入0,则结束输入):"<<endl;
	for(int sum=0, counter=0; ;counter++)
	{
		cin>>num;
		if(num==0)
			break;          //当输入0时,退出循环
		sum+=num;
	}
	cout<<"输入整数(非0)的个数为:"<<counter<<'\t'
		<<"输入整数的总和为:"<<sum<<endl;
}

//【例2.13】把1~100之间不能被3整除的数输出。
//分析:用循环语句实现。循环变量i的范围为1~100,对i进行判断,当不能被3整除时输出i,否则不输出。


void main2_13()
{
	int outCounter=0;
	for(int n=1;n<=100;n++)
    {
      if(n%3==0)
         continue;        		//A  若n能被3整除,则退出本次循环
      cout<<n<<'\t';
      if(!(++outCounter%6) )   	//该if语句的作用是使每行输出6个数
         cout<<'\n';         
    }
    cout<<'\n';
}

//【例2.14】设计一个菜单程序,即根据输入特定的值,决定采取何种操作。
//分析:可用exit()或abort()函数实现功能"当输入某个值时退出程序"。


#include<stdlib.h>
void main2_14()
{
	char ch;
	do {
		cout<<"1. 拼音检查\n";
		cout<<"2. 改正拼音错误\n";
		cout<<"3. 显示拼音错误\n";
		cout<<"Q. 结束"<<endl;
		cout<<"请选择:";
		cin>>ch;
     switch(ch)
     {
        case '1': cout<<"进行拼音检查…\n\n";  //当输入1时,调用相应的函数
			break;
        case '2': cout<<"改正拼音错误…\n\n";  break;
        case '3': cout<<"显示拼音错误…\n\n";  break;
        case 'q':
		case 'Q': cout<<"退出程序\n"; exit(0); //当输入'q'或'Q'时,退出程序
		default: cout<<"输入错误!\n\n" ;
     }
   }while (1);
}


//【例2.15】设计一个程序,求下列数列的前20项:
//	y(n)=0     n=0
//	y(n)=1     n=1
//	y(n)=2     n=2
//	y(n)=y(n-1)+2y(n-2)+y(n-3)   n>2


#include <iomanip.h>
void main2_15()
{
	long int y1=0,y2=1,y3=2,y;
	cout<<setw(12)<<y1<<setw(12)<<y2<<setw(12)<<y3;
	for(int i=3;i<20;i++)
	{
		y=y1+2*y2+y3;        //A  递推公式
		y1=y2;               //B
		y2=y3;               //C
		y3=y;                //D
		cout<<setw(12)<<y;
		if((i+1)%6==0)         //每行输出6个数
			cout<<'\n';
	}
	cout<<'\n';
}


//【例2.16】 编写一个程序,打印n阶杨辉三角形,要求n由用户输入,且不大于12。
//分析:杨辉三角形为如下形式(n=5):
//                          1
//						  1	   1
//                      1    2    1
//                    1   3     3    1
//                 1    4    6    4    1
//在杨辉三角形中,第i行第j列的元素的值为组合  ,设为com(i,j)。则com(i,j)具有如下的迭代关系:
//   com(i,j)=i!/(j!*(i-j)!)
//    com(i,0)=1    (i=0,1,…)
//    com(i, j)=com(i, j-1)*(i-j+1)/j     (j=1,2,…,i)
//可见,这也是一个递推问题,


void main()
{
  int com,n,k;
  cout<<"输入一个整数:\n";
  cin>>n;  
  if(n>12)
	  cout<<"输入的数太大!";
  else
  {   
	  cout<<setw(26)<<n<<"阶杨辉三角形为:\n";
	  for(int i=0;i<n;i++)
	  {
		  for(k=1;k<18-i;k++)
			  cout<<"  ";    //输出2个空格
		  com=1;
		  cout<<com<<"   ";     //输出3个空格
		  for(k=1;k<=i;k++)
		  {
			  com=com*(i-k+1)/k;
			  if(com<10)
				  cout<<com<<"   ";    //输出3个空格
			  else if(com<100)
				  cout<<com<<"  ";     //输出2个空格
			  else
				  cout<<com<<" ";       //输出1个空格
		  }
          cout<<'\n';
	  }
  }
}

//【例2.17】 验证歌德巴赫猜想:任何一个大于6的偶数都可以表示为两个奇素数之和。
//要求输入一个整数,验证小于这个整数且大于6的所有的偶数都满足歌德巴赫猜想。
//分析:对一个偶数,要验证它是否满足歌德巴赫猜想,首先将它分解为两个整数之和,
//然后验证这两个整数是否为素数。


void main2_17()
{
	long int m,n;
	int k;
	cout<<"输入一个大于6的整数:";
	cin>>n;
	for(int i=6;i<n;i+=2)     //对小于n的每一个偶数进行验证
	{
		for(m=2;m<=i/2;m++)         //循环A,将i分解成m和i-m之和
		{
			for(k=2;k<=sqrt(m);k++)     //循环B,判断m是不是素数
				if(m%k==0)
					break;            //如果m不是素数,则退出循环B        
			if(k<=sqrt(m)) 
				continue;   //如果m不是素数,则结束循环A的本次循环
			for(k=2;k<=sqrt(i-m);k++)    //循环C,判断i-m是不是素数
				if((i-m)%k==0)break;     //如果i-m不是素数,则退出循环C
			if(k>sqrt(i-m))break;	//如果i-m是素数,则退出循环A	
		}
		if(m==i/2+1)       //如果对任何m<i/2,m、i-m不都是素数,则歌德巴赫猜想不成立
		{
			cout<<"偶数i不能表示为两个素数之和!\n";
		    break;
		}
		else
			cout<<i<<"="<<m<<"+"<<i-m<<'\t';
		if((i-4)%10==0)       //一行输出5个等式
			cout<<'\n';
	}
  cout<<'\n';
}

//【例2.18】 模拟出题、改题系统。要求自动给出100以内的整数的加、减、乘运算题,
//并根据给出的答案进行打分,做完10题后给出总分。
#include<time.h>

void main2_18(void)
{
	int i,left,right,sum=0;
	int op,c,d;
	srand(time(NULL));
	for(i=0;i<10;i++)
	{
		cout<<"第"<<i+1<<"题:";
		left=rand()%100;       //随机产生0~99之间的整数
		right=rand()%100;
		op=rand()%3;          //随机产生0~2之间的整数
		switch(op)        // 出题
		{
		case 0:
			cout<<left<<'+'<<right<<'=';
			c=left+right;
			break;
		case 1:
			cout<<left<<'-'<<right<<'=';
			c=left-right;
			break;
		case 2:
			cout<<left<<'*'<<right<<'=';
			c=left*right;
		}
		cin>>d;         //给出答案
		if(d==c)        //判断答案是否正确
		{
			cout<<"正确,得10分!\n";
			sum+=10;
		}
		else cout<<"不正确,不得分!\n";
	}
    cout<<"共答对:"<<sum/10<<"题\t"<<"总分:"<<sum<<'\n';
}
















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -