欢迎光临散文网 会员登陆 & 注册

C++

2022-09-14 15:22 作者:讽刺派数学家  | 我要投稿

//3.4  switch语句

//

//【例3.20】一个最简单的计算器支持+,-,*,/四种运算。输入只有一行:两个参加运算的数和一个操作符(+,-,*,/)。输出运算表达式及结果。考虑下面两种情况:

//(1)如果出现除数为0的情况,则输出:Divided by zero!

//(2)如果出现无效的操作符(即不为+,-,*,/之一),则输出:Invalid operator!

//default :cout<<"非法字符";

#include<iostream>

using namespace std;

 

int main()

{

         int a,b;

         char c;

         cin>>a>>c>>b;

         switch(c)

         {

         case '-'  :cout<<a-b;break;

         case '+'  :cout<<a+b;break;

         case '*'  :cout<<a*b;break;

         case '/'  :

         if (b==0)  cout<<"Zero!";

         else  cout<<a/b;break;

         default  :cout<<"非法字符";break;     

         }

         return 0;

}

 

 

//用循环计算1+2+3...+99+100 的值

#include<iostream>

#include<algorithm>

using namespace std;

int main()

{

         int a;//定义新变量

         for(int i=0;i<=100;i++)

         {

         a=a+i;//累加   

         }

         cout<<a;

         return 0;

}

 

 

日本一位中学生发现一个奇妙的定理,请角谷教授证明,而教授无能为力,于是产生了角谷猜想。猜想的内容:任给一个自然数,若为偶数则除以2,若为奇数则乘3加1,得到一个新的自然数后按上面的法则继续演算。若干次后得到的结果必为1。请编写代码验证该猜想:求经过多少次运算可得到自然数1。

#include<iostream>

using namespace std;

int main()

{

         int a=0,c=0;

         cin>>a;

         while(a!=1)//a!=1时循环

         {

                   if(a%2==0)

                   {

                   a=a/2;

                   }else{

                   a=a*3+1;

                   }

                   c++;

         }

         cout<<c;

         return 0;

}

 

 

所谓水仙花数,就是指各位数字立方之和等于该数的数;a^3称为a的立方,即等于a×a×a的值。例如:因为153=1^3+5^3+3^3,所以153是一个水仙花数。

#include<iostream>

using namespace std;

int main()

{

         for(int i=1;i<=9;i++)//拆分后输入

         for(int j=0;j<=9;j++)

         for(int k=0;k<=9;k++)

         {

                   if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)

                   {

                            cout<<i<<j<<k<<endl;

                   }

         }

         return 0;

}

 

 

期末考试结束,王老师想知道这次考试中成绩优秀的同学有多少人(考试成绩大于或等于90表示成绩优秀),请你编程帮助王老师来计算出成绩优秀的人数。

输入格式

第一行,一个整数n代表有n个人的成绩(n<=100)
第二行,n个人的成绩,用空格隔开

输出格式

成绩优秀的同学的总人数

#include<iostream>

using namespace std;

int main()

{

         int n,a[101],ans=0;//a【】数组

         cin>>n;

         for(int i=1;i<=n;i++)

         cin>>a[i];

         for(int i=1;i<=n;i++)

         {

                   if(90<=a[i])

                   {

                            ans++;

                   }

         }

         cout<<ans;

         return 0;

}

 

 

 

在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?

输入格式

第一行为整数m,表示输入的整数个数。( 3<= m <=100 ) 第二行为m个整数。

输出格式

若干个支撑数,每行一个。

#include<iostream>

using namespace std;

int main ()

{

         int a[101],b,c=0;

         cin>>b;

         for(int i=1;i<=b;i++)

         {

         cin>>a[i];

         }

         for(int i=2;i<=b-1;i++)

         {

                   if(a[i]>a[i-1]&&a[i]>a[i+1])

                   {

                            cout<<a[i]<<endl;

                   }

         }

}

 

 

找找谁的身高超过全家的平均身高。全家n口人,输入输出数据如下: (平均身高保留一位小数)

输入格式

第一行有一个整数n( 1 < n < 11 )。第二行是n个整数,用空格隔开。

输出格式

第一行为全家的平均身高(保留一位小数);第二行有若干个数,为超过平均身高的人的身高厘米数。

样例输入

 

7

175 160 172 158 178 162 142

 

样例输出

 

AVE=163.9

1:175 3:172 5:178

#include<iostream>

using namespace std;

int main ()

{

         int b,a[300];

         double c=0;

         cin>>b;

         for(int i=1;i<=b;i++)

         {

                   cin>>a[i];

                   c=c+a[i];

         }

         printf("AVE=%.1f\n",c/b);

         for(int i=1;i<=b;i++)

         {

                   if(c/b<a[i])

                   {

                            cout<<i<<":"<<a[i]<<" ";

                   }

         }

 

}

 

 

 

//数字48--51;小写字母97--122 ;

//大写字母65--90 ;

//把英文字母表的小写字母按顺序和倒序打印出来。(每行13个)

//输入格式

//无

//输出格式

//输出四行

//样例输出

//

//abcdefghijklm

//nopqrstuvwxyz

//zyxwvutsrqpon

//mlkjihgfedcba

//

//

#include<iostream>

using namespace std;

int main()

{

         char a=122,c=97;

         int b=0;

         for(char i=97;i<=a;i++)

         {

                   cout<<i;

                   b++;

                   if(b==13)

                   {

                            b=0;

                            cout<<endl;

                   }

                  

         }

         for(char j=122;c<=j;j=j-1)

         {

                   cout<<j;

                   b=b+1;

                   if(b==13)

                   {

                            b=0;

                            cout<<endl;

                   }

                  

         }

        

         return 0;

}

//题目描述

//n个数中最大的那个数在哪里?输出其位置,若有多个最大数则都要输出。

//输入格式

//第一行:n( 3 <= n <= 10) 第二行:空格隔开的n个数

//输出格式

//输出若干个数,表示最大数的位置,每行一个。

//样例输入

//

//5

//1 2 6 3 6

//

//样例输出

//

//3

//5

#include<iostream>

using namespace std;

int main()

{

         int a[10+10];

         int sum=0,n,ans=-99999;//定义储存最大数下标的数和最大数初始值

         cin>>n;

        

         for(int i=1;i<=n;i++)

         {

                   cin>>a[i];

                   if(a[i]>=ans)

                   {

                            ans=a[i];

                   }

         }

         for(int i=1;i<=n;i++)

         {

         if(a[i]==ans)

         {

                  

         cout<<i<<endl;

         }

                  

         }       

         return 0;

}

 

 

#include<iostream>

using namespace std;

int main()

{

         int a[10+10];

         int sum=0,n,minn=99999;

         double q=0;

         cin>>n;

         q=n;

         for(int i=1;i<=n;i++)

         {

                   cin>>a[i];

                   sum=sum+a[i];        

                   if(a[i]<=minn)

                   {

                            minn=a[i];

                   }

         }

        

         for(int i=1;i<=n;i++)

         {

                   if(a[i]==minn)

                   {

                   sum=sum-a[i];

                   q=q-1;

                   }       

         }       

         printf("%.1f",sum/q);

         return 0;

}

 

请从键盘读入一个整数n,代表有n行,输出n行的9*9乘法表。

 

比如,假设n=5,则输出如下:

 

1*1=1

2*1=2 2*2=4

3*1=3 3*2=6 3*3=9

4*1=4 4*2=8 4*3=12 4*4=16

5*1=5 5*2=10 5*3=15 5*4=20 5*5=25

输入格式

一个整数n(n<=9)

输出格式

n行的9*9乘法表

#include<iostream>

using namespace std;

int main()

{

         int n,ans=0;

         cin>>n;

         for(int i=1;i<=n;i++)//i行数

         {

                   for(int j=1;j<=i;j++)//j每行n*的数

                   {

                   cout<<i<<'*'<<j<<'='<<i*j<<' ';         

                   }

                   cout<<endl;     

         }

}

 

 

 

 

题目描述

输入n个整数的数列,请找出数列中最小数所在的位置(若有多个最小数,则选最左边的那个最小数),把它与数列的第一个数对调,其他数的位置不动,输出此数列。

输入格式

数组数的个数n (N<=200) 一行n个数,用空格分开(都<=32767)

输出格式

第一行:最小数所在的位置(只需要输出最左边的一个的位置) 第二行:交换后的数组(一个空格隔开)

样例输入

 

3

2 6 1

 

样例输出

 

3

1 6 2

 

 

#include<iostream>

using namespace std;

int main()

{

         int n,a[220],minn=999,m=0,g;//m储存最小数位置 ,g被换位的数

         cin>>n;

         for(int i=1;i<=n;i++)

         {

         cin>>a[i];

         g=a[1];

         if(a[i]<minn)

         {

         minn=a[i];

         m=i;

         a[1]=a[i];//第一个数变为最小数(下标变)

         }

         }

         cout<<m<<endl;

         for(int i=1;i<m;i++)

         {

         cout<<a[i]<<' ';        

         }

         cout<<g<<' ';

         for(int i=m+1;i<=n;i++)

         {

         cout<<a[i]<<' ';        

         }

         return 0;

}

 

 

 

题目描述

输入某个整数,如果输入的整数在1-9范围内,则输出相对应的单词,否则输出'out'

输入格式

一行,一个整数n。

输出格式

整数n相对应的小写英文单词或'out'。

样例输入

 

1

 

样例输出

 

one

 

 

#include<iostream>

using namespace std;

int main()

{

         int a;

         cin>>a;

         switch(a)

         {

                   case 1:cout<<"one";break;

                   case 2:cout<<"two";break;

                   case 3:cout<<"there";break;

                   case 4:cout<<"four";break;

                   case 5:cout<<"five";break;

                   case 6:cout<<"six";break;

                   case 7:cout<<"seven";break;

                   case 8:cout<<"eight";break;

                   case 9:cout<<"nine";break;

                   default:cout<<"out";

         }

         return 0;

}

 

 

 

题目描述

小明夏天去买冰棍,老板说买30个及以上1元/个, 20~29个1.2元/个,10~19个1.5元/个,10个以下1.8元/个!请从键盘读入小明买冰棍的数量,计算小明应该付的价格(价格保留1位小数)!

输入格式

一个整数n代表小明购买的冰棍的数量

输出格式

小明应付的金额

样例输入

 

30

 

样例输出

 

30.0

 

#include<iostream>

using namespace std;

int main()

{

         double a,b;

         cin>>a;

         b=a/10;

         switch((int)b)//switch不支持小数,要用(int)强制转换

         {

                   case 0:printf("%.1f",a*1.8);break;

                   case 1:printf("%.1f",a*1.5);break;

                   case 2:printf("%.1f",a*1.2);break;

                   default:printf("%.1f",a*1);

         }

         return 0;

}

 

 

 

题目描述

 

输入一个正整数n,求1!-2!+3!-4!+……+N!的结果。比如:n=3,则结果 = 1-(1*2)+(1*2*3) = 5。

n! = 1 * 2 * 3 * 4 * ... * n,也就是1~n之间所有数的积,比如:5!=1*2*3*4*5=120。

 

输入格式

一个正整数n(n<=10)

输出格式

一个整数,代表运算结果。

样例输入

 

3

 

样例输出

 

5

 

#include<iostream>

using namespace std;

int main()

{

         int a,b=0,d=0,p=1;

         cin>>a;

         for(int i=1;i<=a;i++)

         {

                   int c=1*p;

                   for(int j=1;j<=i;j++)

                   {

                            c=c*j;

                   }       

         d=d+c;

         p=-p;

         }

         cout<<d;

}

 

//题目描述

//韩信有一对士兵,他想知道有多少人,他就让士兵报数,如果按照1到5报数,最末一个士兵报的数为1;按照1到6报数,最末一个士兵报的数为5;按照1到7报数,最末一个士兵报的数为4;最后再按1到11报数,最末一个士兵报的数为10,请问韩信这队士兵最少有多少人?

//输入格式

//无

//输出格式

//输出这队士兵最少有多少人

#include<iostream>

using namespace std;

int main()

{

         int i=1;

         while(i)

         {

                   if(i%5==1&&i%6==5&&i%7==4&&i%11==10)

                   {

                   cout<<i;

                   break;      

                   }

                   i++; 

         }

}


C++的评论 (共 条)

分享到微博请遵守国家法律