7-1 简单的猜数字游戏[1] (4分)
简单的猜数字游戏是预先设置一个100以内的正整数作为被猜数,用户输入一个数对其进行猜测,需要你编写程序自动对其与被猜数进行比较,并输出猜测的结果。在本题中,被猜数设置为38。
输入格式:
输入在一行中给出一个整数。
输出格式:
在一行中输出猜测的结果,分别为“Good Guess!”、“Too big!”、“Too small!”。
输入样例1:
48
输出样例1:
Too big!
输入样例2:
38
输出样例2:
Good Guess!
输入样例3:
10
输出样例3:
Too small!
include<iostream>
using namespace std;
int main()
{
int a;
cin>>a;
if (a>38) cout<<"Too big!"<<endl;
else if (a<38) cout<<"Too small!"<<endl;
else if (a=38) cout<<"Good Guess!"<<endl;
return 0;
}
7-2 奇偶分家 (5分)
给定N个正整数,请统计奇数和偶数各有多少个?
输入格式:
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。
输出格式:
在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。
输入样例:
9
88 74 101 26 15 0 34 22 77
输出样例:
3 6
include<iostream>
using namespace std;
int main()
{
int n,ji=0,ou=0,i;
int number;
cin>>n;
for(i=0;i<n;i++)
{
cin>>number;
if (number%2==0)
ou++;
else ji++;
}
cout<<ji<<" "<<ou<<endl;
return 0;
}
7-3 统计指定数量学生的平均成绩与不及格人数 (5分)
本题要求编写程序,计算学生们的平均成绩,并统计不及格(成绩低于60分)的人数。题目保证输入与输出均在双精度范围内。
输入格式:
输入在第一行中给出非负整数n,即学生人数。第二行给出n个非负实数,即这n位学生的成绩,其间以空格分隔。
输出格式:
average = 成绩均值
count = 不及格人数
其中平均值精确到小数点后两位,等号的左右各有一个空格。
输入样例1:
4
60 54 95 73
输出样例1:
average = 70.50
count = 1
输入样例2:
0
输出样例2:
average = 0.00
count = 0
include<iostream>
include<iomanip>
using namespace std;
int main()
{
int n,i;
double average=0,sum=0;
int count=0;
cin>>n;
if (n>0)
{
int score[n];
for(i=0;i<n;i++)
{ cin>>score[i];
if (score[i]<60)
count++;
sum=sum+score[i];
}
average=sum*1.00/n;
cout<<"average = "<<fixed<<setprecision(2)<<average<<endl;
cout<<"count = "<<count<<endl;
}
else
{
cout<<"average = 0.00"<<endl;
cout<<"count = 0"<<endl;
}
return 0;
}
7-4 分段计算居民水费[2] (5分)
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)的关系如下,请编写程序实现水费的计算
图片上传不了。。。。。。
输入格式:
输入在一行中给出实数x。
输出格式:
按照以下的格式在一行输出月用水量和应交的水费,都精确到小数点后2位,请注意等号的左右各有一个空格。
f(输入的月用水量) = 计算出的应交水费
输入样例1:
-0.5
输出样例1:
f(-0.50) = 0.00
输入样例2:
0
输出样例2:
f(0.00) = 0.00
输入样例3:
9.5
输出样例3:
f(9.50) = 12.67
输入样例4:
15
输出样例4:
f(15.00) = 20.00
输入样例5:
21.3
输出样例5:
f(21.30) = 42.75
include<iostream>
include<iomanip>
using namespace std;
int main()
{
float x,y;
cin>>x;
if (x<0)
y==0;
else if (x>=0&&x<=15)
y=4x/3;
else
y=2.5x-10.5;
cout<<"f("<<fixed<<setprecision(2)<<x<<")"<<" = "<<y<<endl;
return 0;
}
7-5 求解简单的四则运算表达式 (6分)
输入一个四则运算表达式,输出运算结果,要求对除数为0的情况作特别处理。题目保证输入与输出均在双精度范围内。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间没有空格,操作数的数据类型为实型。
输出格式:
在一行中输出表达式的运算结果,保留两位小数。
如果除法分母为0,则输出错误信息“Divisor can not be 0!”;如果输入了除加减乘除以外的非法运算符,则输出错误信息“Unknown operator!”。
输入样例1:
3.1+4.8
输出样例1:
7.90
输入样例2:
98/0
输出样例2:
Divisor can not be 0!
输入样例1:
123%3
输出样例1:
Unknown operator!
include<iostream>
include<iomanip>
using namespace std;
int main()
{
double a,b;
char c;
scanf("%lf%c%lf",&a,&c,&b);
switch(c)
{
case'+':cout<<fixed<<setprecision(2)<<a+b;break;
case'-':cout<<fixed<<setprecision(2)<<a-b;break;
case'': cout<<fixed<<setprecision(2)<<ab;break;
case'/':
if (b!=0)
{
cout<<fixed<<setprecision(2)<<a/b;
}
else
{
cout<<"Divisor can not be 0!";
}
break;
default :cout<<"Unknown operator!";break;
}
return 0;
}
7-6 统计英文字母和数字字符 (4分)
本题要求编写程序,输入10个字符,统计其中英文字母、数字字符和其他字符的个数。
输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。
输出格式:
在一行内按照
letter = 英文字母个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。
输入样例1:
Reold 123?
输出样例1:
letter = 5, digit = 3, other = 2
输入样例2:
aZ &
09 Az
输出样例2:
letter = 4, digit = 2, other = 4
include<iostream>
include<iomanip>
using namespace std;
int main()
{
int i,l=0,d=0,o=0;
char c;
for(i=1;i<=10;i++)
{ scanf("%c",&c);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
l++;
else if(c>='0'&&c<='9')
d++;
else o++;
}
cout<<"letter = "<<l<<", digit = "<<d<<", other = "<<o<<endl;
return 0;
}
7-7 查询自动售货机中商品的价格 (5分)
给定四种商品,分别是薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可乐(cola),单价分别对应为3.0元/公斤、2.5元/公斤、4.0元/公斤、3.5元/份。
首先在屏幕上显示以下菜单:
[1] crisps
[2] popcorn
[3] chocolate
[4] cola
[0] exit
用户可以输入编号1~4查询对应食品的单价。当连续查询次数超过5次时,程序应自动退出查询;不到5次而用户输入0即退出;输入其他编号,显示价格为0。
输入格式:
输入在一行中给出用户连续输入的若干个编号。
输出格式:
首先在屏幕上显示菜单。然后对应用户的每个输入,在一行中按格式“price = 价格”输出查询结果,其中价格保留一位小数。当用户连续查询次数超过5次、或主动输入0时,程序结束,显示“Thanks”。
输入样例1:
1 7 0 2
输出样例1:
[1] crisps
[2] popcorn
[3] chocolate
[4] cola
[0] exit
price = 3.0
price = 0.0
Thanks
输入样例2:
1 2 3 3 4 4 5 6 7 8
输出样例2:
[1] crisps
[2] popcorn
[3] chocolate
[4] cola
[0] exit
price = 3.0
price = 2.5
price = 4.0
price = 4.0
price = 3.5
Thanks
include<iostream>
include<iomanip>
include<string>
using namespace std;
int main()
{
int c;
cout<<"[1] crisps"<<endl;
cout<<"[2] popcorn"<<endl;
cout<<"[3] chocolate"<<endl;
cout<<"[4] cola"<<endl;
cout<<"[0] exit"<<endl;
for (int i=1;i<=5;i++)
{
cin>>c;
switch(c)
{
case 1 : cout<<"price = 3.0\n";break;
case 2 : cout<<"price = 2.5\n";break;
case 3 : cout<<"price = 4.0\n";break;
case 4 : cout<<"price = 3.5\n";break;
case 0 :cout<<"Thanks";exit(0);//正常退出
default :printf("price = 0.0\n");break;
}
}
cout<<"Thanks";
return 0;
}
7-8 两个数的简单计算器 (6分)
本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。
输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。
输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。
输入样例1:
-7 / 2
输出样例1:
-3
输入样例2:
3 & 6
输出样例2:
ERROR
include<iostream>
include<iomanip>
using namespace std;
int main()
{
int a,b,d;
char c;
scanf("%d %c %d",&a,&c,&b);
switch(c)
{
case'+':cout<<a+b;break;
case'-':cout<<a-b;break;
case'': cout<<ab;break;
case'/':if(b==0) break;
if(b!=0) cout<<a/b;break;
case'%':if(b==0) break;
if(b!=0) cout<<a%b;break;
default :cout<<"ERROR";break;
}
return 0;
}
7-9 简单计算器 (5分)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
include<iostream>
include<iomanip>
using namespace std;
int main()
{
int num,b;
char op;
cin>>num;
while(cin>>op)
{
if(op=='+')
{
cin>>b;
num+=b;
}
else if(op=='-')
{
cin>>b;
num-=b;
}
else if(op=='')
{
cin>>b;
num=b;
}
else if (op=='/')
{
cin>>b;
if(b==0)
{
cout<<"ERROR"<<endl;break;
}
else if(b!=0)
{
num/=b;
}
}
else if(op=='=')
{
cout<<num<<endl;break;
}
else
{
cout<<"ERROR"<<endl;break;
}
}
return 0;
}
7-10 最大公约数和最小公倍数 (10分)
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式:
输入在一行中给出两个正整数M和N(≤1000)。
输出格式:
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入样例:
511 292
输出样例:
73 2044
include<iostream>
using namespace std;
int main()
{
int a,b,x,y,z,aa,bb;
cin>>a>>b;
if (a>b)
a=a;
else
{
z=a;a=b;b=z;
}
aa=a;bb=b; //借用两个数保留a,b值
while (bb!=0) //辗转相除法
{
x=aa%bb;
aa=bb;
bb=x;
}
y=a*b/aa; //最小公倍数等于两个相关数乘积除以最大公因数
cout<<aa<<" "<<y<<endl;
return 0;
}
7-11 兔子繁衍问题 (10分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
include<iostream> //斐波那契数列
using namespace std;
int main()
{ long a=1,b=1,t=1;
long n;
cin>>n;
if(n==1)
{
t=1;
}
if(n>1)
{
do
{
a=a+b;
t=t+1;//月份递增
b=a+b;
t=t+1;
}while(a<n&&b<n);//兔子数不超过n时
}
cout<<t<<endl;
return 0;
}
网友评论