C++
//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++;
}
}