实验一
1 通过日期求某月的天数。
输入日期的年份和月份,求该月有多少天。提示:对于月份为1、3、5、7、8、10、12的月份天数为31,月份为4、6、9、11的月份天数为30,月份为2时要结合年份考虑闰年的情况。
输入描述
输入两个正整数y和m分别表示年份和月份。
输出描述
如果y和m满足条件:1900<=y<3000,0
2010 12
输出样例
31
#include"iostream"
using namespace std;
int main()
{
int y,m;
cin>>y>>m;
if (m>0&&m<13&&y>=1900&&y<3000)
{
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if (y%4==0&&y%100!=0||y%400==0)
a[1]+=1;
cout<<a[m-1];
}
else
cout<<"Input error!";
return 0;
}
#include"iostream"
using namespace std;
int main()
{
int a,b,c,d;
while(cin>>a>>b>>c>>d&&a>=0&&a<=150&&b>=0&&b<=150&&c>=0&&c<=150&&d>=0&&d<=150)
{
if (a<60||b<60||c<60||d<60||a+b+c+d<340)
cout<<"没有录取";
else if (a+b+c+d<370)
cout<<"自费";
else
cout<<"公费";
}
return 0;
}
#include"iostream"
using namespace std;
int main()
{
int s;
double t1,t2;
cin>>s;
t1=s/1.2;
t2=27+23+s/3.0;
if (t1<t2)
cout<<"walk"<<endl;
else if (t1>t2)
cout<<"bike"<<endl;
else
cout<<"All"<<endl;
return 0;
}
4停车场收费
题目描述
一个停车场的标准收费是3小时之内收5元,超过3小时,每增加1小时加收2元;如果时间不是整数,按比例收取,例如:如果输入为3.6小时,则费用为5 + (3.6-3)*2 = 6.2 元。最高收费为40元。假设任何车辆的停车时间都不超过24小时。编写程序,计算每辆车的停车费。
【提示】
要输出浮点数、双精度数小数点后2位数字,可以用下面这种形式:
cout<
输入描述
输入停车的时间t
输出描述
输出应该收取的停车费用cost,保留小数点后2位
输入样例
3.46
输出样例
5.92
#include"iomanip"
#include"iostream"
using namespace std;
int main()
{
float t;
float cost;
while(cin>>t&&t<24)
{
if (t<=3)
cost=5;
else if (t<=20.5)
cost=5+(t-3)*2;
else
cost=40;
cout<<fixed<<setprecision(2)<<cost<<endl;
}
return 0;
}
#include"iostream"
using namespace std;
int main()
{
float a,b;
char c;
cin>>a>>b>>c;
switch(c)
{
case '+':
cout<<a+b<<endl;
break;
case '-':
cout<<a-b<<endl;
break;
case '*':
cout<<a*b<<endl;
break;
case '/':
{
if (b==0)
cout<<"除数为0!"<<endl;
else
{
cout<<a/b<<endl;
}
break;
}
default:
cout<<"运算符号错误!"<<endl;
}
return 0;
}
实验二
#include"iostream"
using namespace std;
int main()
{
int a,b[5],i,s;
while(cin>>a&&a>0&&a<100)
{
s=0;
for(i=0;i<5;i++)
{
cin>>b[i];
if (b[i]<0||b[i]>100)
break;
if (b[i]<a)
s+=b[i];
}
cout<<s<<endl;
}
return 0;
}
#include"iostream"
using namespace std;
int main()
{
int h0,i;
double s,h;
cin>>h0;
h=s=h0;
for(i=1;i<5;i++)
{
h=h/2;
s=s+h*2;
}
cout<<s<<" "<<h/2<<endl;
return 0;
}
#include"iostream"
#include"iomanip"
using namespace std;
int main()
{
double i,t,m,s,n,k;
cin>>n;
s=0;
m=2;
k=1;
for(i=0;i<n;i++)
{
s=s+m/k;
t=m+k;
k=m;
m=t;
}
cout<<fixed<<setprecision(4)<<s<<endl;
return 0;
}
#include"iostream"
#include"iomanip"
using namespace std;
int main()
{
double x,y;
while(cin>>x>>y&&x||y)
{
if (x>=-1&&x<=1&&y>=-1&&y<=1)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
cout<<"yes";
return 0;
}
#include"iostream"
#include"math.h"
using namespace std;
int main()
{
double a,b,m,s;
for(a=0;a<=9;a++)
{
for(b=0;b<=9;b++)
{
m=a*1000+a*100+b*10+b;
s=sqrt(m);
if (fabs(s-(int)s)==0)
{
if (a!=b)
cout<<a<<a<<b<<b<<endl;
}
}
}
return 0;
}
实验三
#include"iostream"
using namespace std;
int main()
{
int a[10],n,i,s=0;
for(i=0;i<10;i++)
cin>>a[i];
cin>>n;
n+=30;
for(i=0;i<10;i++)
{
if (a[i]<=n)
s++;
}
cout<<s<<endl;
return 0;
}
#include"iostream"
using namespace std;
int main()
{
double a[6],max,min,av,s=0;
int i;
for(i=0;i<6;i++)
{
cin>>a[i];
if (a[i]<0||a[i]>100)break;
s+=a[i];
}
max=min=a[0];
for(i=1;i<6;i++)
{
if (max<a[i])
max=a[i];
if (min>a[i])
min=a[i];
}
av=(s-max-min)/4;
cout<<av<<endl;
return 0;
}
#include"iostream"
#include"cstring"
using namespace std;
char a[1000000],b[1000000];
int main()
{
int i,j=0;
cin>>a;
for(i=0;a[i]!='\0';i+=2)
{
b[j++]=a[i];
}
b[j]='\0';
cout<<b<<endl;
return 0;
}
#include"iostream"
#include"string.h"
using namespace std;
char judge(char a)
{
if (a>='a'&&a<='z')
return a-32;
else if (a>='A'&&a<='Z')
return a+32;
else
return a;
}
int main()
{
char *p=new char[20];
cin>>p;
for(int i=0;p[i];i++)
p[i]=judge(p[i]);
cout<<p;
return 0;
}
输入描述 输出描述 输入样例 输出样例 实验四 输出样例 实验五
有2行输入:第一行是此数组的元素个数k(4
输出为1行:依次对应于数组的所有极值点下标值,下标值之间用空格分隔。
15
12 12 122 112 222 222 222 221 76 36 31 234 256 76 73
2 3 10 12 14#include"iostream"
using namespace std;
int main()
{
int a[81],n,i,j,flag=0;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
if (a[0]!=a[1]){
cout<<0;
flag=1;
}
for(i=1;i<n-1;i++)
{
if (a[i]>a[i-1]&&a[i]>a[i+1]||a[i]<a[i-1]&&a[i]<a[i+1]){
if (flag)
cout<<" "<<i;
else
{
cout<<i;
flag=1;
}
}
}
if (a[i]!=a[i-1])
cout<<" "<<i;
return 0;
}
题目描述
判断正整数n是否为完数。已知一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数。此程序要求编写函数bool wanshu(int n),判断n是否为完数,若n是,则函数返回true;否则返回false。然后主函数通过该函数的返回值,在屏幕上输出判断结果。
输入描述
输入一个正整数n。
输出描述
若n是完数,则输出"yes";否则输出"no"。
输入样例
28
输出样例
yes#include"iostream"
using namespace std;
bool wanshu(int n)
{
bool a=true;
int i,s=1;
for(i=2;i<n;i++)
{
if (n%i==0)
{
s=s+i;
}
}
if (n!=s)
a=false;
return a;
}
int main()
{
int n;
cin>>n;
if(wanshu(n)==true)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}
题目描述
假定现在已是2012年,请编写程序,计算2012年伦敦奥运会倒计时的天数并输出。已知伦敦奥运会的开幕日期是2012年7月27日。用户输入日期的范围必须是2012年1月1日— 2012年7月26日。要求程序中编写函数int CountDown(int year,int month,int day),来计算从用户输入的日期year-month-day到伦敦奥运会开幕日之间的倒数天数。
提示:所求天数= month这个月的总天数-day+(month+1到6月所有这些月份天数之和)+27。
输入描述
用户输入的日期的格式必须是year month day。其中year应是2012,month必须满足1≤month≤7。输入的数据之间用空格隔开。
输出描述
输出为一行“距离2012伦敦奥运会还有x天。”,其中x为求出的倒计时的天数。如果输入的数据不满足条件,输出“ERROR!”。
输入样例
2012 2 5
输出样例
距离2012伦敦奥运会还有173天。#include"iostream"
#include"cstdio"
using namespace std;
int CountDown(int year,int month,int day)
{
int a[6]={31,29,31,30,31,30};
int i,s=0;
for(i=month-1;i<6;i++)
s=s+a[i];
s=s-day+27;
return s;
}
int main()
{
int y,m,d;
cin>>y>>m>>d;
if (y==2012&&m>=1&&m<=7)
cout<<"距离2012伦敦奥运会还有"<<CountDown(y,m,d)<<"天。"<<endl;
else
cout<<"ERROR!"<<endl;
return 0;
}
题目描述
许多英语单词无论是顺读还是倒读,其词形完全一样,都是同一个单词,如dad(爸爸)、noon(中午)、level(水平)等,这样的词称为回文词。在最权威的《牛津英语大词典》里,最长的回文词是tattarrattat,是个象声词,表示敲门的声音。英语的回文句更有趣味(忽略其中的标点符号)。最著名的一句为:“Madam,I’m Adam.”(小姐,我是亚当。)据说,这是亚当在伊甸园里初见夏娃作自我介绍时说的话。
现要求编写一个函数bool huiwen(char *p),判断输入的一个单词是否为回文词。p是指向要输入的字符串的指针,如果是返回true,否则返回false。
输入描述
输入一个单词后回车。
输出描述
若该单词是回文词,则输出“yes”;否则输出“no”。
输入样例
level
输出样例
Yes#include"iostream"
#include"cstring"
using namespace std;
bool huiwen(char *q)
{
bool a=true;
char *p=q;
int l=strlen(q);
q=q+l-1;
for(p,q;p<=q;p++,q--)
{
if (*p!=*q)
a=false;
}
return a;
}
int main()
{
char a[1000];
cin>>a;
if(huiwen(a)==true)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}
题目描述
编写一个函数,用于生成一个由若干个指定字符构成的字符串,其原型为:
void mystr(char c,int n, char *p);其中,参数c是构造字符串的字符,n是字符串中字符的个数,p是生成的字符串的首地址。
要求:编写主函数,在主函数中进行字符和字符个数的输入,然后再调用mystr函数生成字符串,最后在主函数中将生成的字符串输出。
输入描述
输入字符c和正整数n,之间用空格隔开。(正整数n的值不超过50)
输出描述
输出为由n个字符c构成的字符串
输入样例4
#include"iostream"
using namespace std;
void mystr(char c,int n, char *p)
{
int i;
for(i=0;i<n;i++)
{
*p=c;
p++;
}
*p='\0';
}
int main()
{
char a[50],c;
int n;
cin>>c>>n;
mystr(c,n,a);
cout<<a<<endl;
return 0;
}
题目描述
有一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生1对兔子,小兔子长到第3个月后每个月又生1对兔子。假设所有兔子都不死,问每个月兔子的总对数为多少?
提示:不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。每对老兔子每个月会生1对小兔子。因此,每个月的兔子总数依次为1,1,2,3,5,8,13,…。这就是Fibonacci数列。该数列的递归定义如下:f(n)=1 (n等于1或2);f(n)= f(n-1)+ f(n-2) (n>2)
请编写递归函数int fib(int n),求出第n个月兔子的总对数。
输入描述
输入一个正整数n,表示求第n个月兔子的总对数。
输出描述
输出为一行“第n个月兔子的总对数为f”,f值为求出的数列第n项的值f(n)。
输入样例
2
输出样例
第2个月兔子的总对数为1#include"iostream"
#include"cstdio"
using namespace std;
int fib(int n)
{
if (n==1||n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main()
{
int n;
scanf("%d",&n);
printf("第%d个月兔子的总对数为%d",n,fib(n));
return 0;
}
题目描述
仿照本次实验预习的程序填空题1,将以上Distance函数定义为类piont的友元函数,实现程序的功能。并在主函数中增加输入两点作为友元函数的实参。
其主函数如下:
int main()
{
float p1_x,p1_y,p2_x,p2_y;
//输入四个点
cin>>p1_x>>p1_y>>p2_x>>p2_y;
point p1(p1_x,p1_y),p2(p2_x,p2_y);
cout<
}
输入描述
输入四个数,用空格隔开。
输出描述
两个点的距离。
输入样例
1 3 5 6
输出样例
5#include
题目描述
根据以下主函数的功能来设计日期类CDateInfo,使其能正确运行。类CDateInfo中应该具有描述年、月、日的三个数据成员和相应的成员函数。
int main()
{
CDateInfo data1,data2(2011,10,10); //定义对象data1和data2
//分别调用类的不带参数的构造函数和带3个参数的构造函数对其数据成员进行初始化
//date1的数据成员未初始化时,其年月日用默认值2000,1,1来继续初始化。
int y,m,d;
cin>>y>>m>>d; //输入年月日值
data1.SetDate(y,m,d); //设置data1的年月日为y,m,d
data1.GetDate(); //按year-month-day的格式显示data1的年月日
data2.GetDate(); //按year-month-day的格式显示data2的年月日为“2011-10-10”
return 0;
}
输入描述
三个整数,分别用来设置对象data1的年、月、日
输出描述
两行:第1行为对象data1的年月日;第2行为data2的年月日。
输入样例
2011 12 5
输出样例
2012-12-5
2011-10-10#include"iostream"
using namespace std;
class CDateInfo
{
public:
CDateInfo(int a=2000,int b=1,int c=1)
{
year=a;
month=b;
day=c;
}
void SetDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void GetDate()
{
cout<<year<<"-"<<month<<"-"<<day<<endl;
}
private:
int year,month,day;
};
int main()
{
CDateInfo data1,data2(2011,10,10);
int y,m,d;
cin>>y>>m>>d;
data1.SetDate(y,m,d);
data1.GetDate();
data2.GetDate();
return 0;
}
题目描述
根据以下主函数的功能来设计学生类Student,使其能正确运行。类Student中应该具有描述学生姓名、性别、年龄的三个数据成员和相应的成员函数。
int main()
{
Student Zhang_San; //创建Student类对象Zhang_San
char*chOne;
int iSex;
unsigned iOld;
chOne=new char[11]; //创建动态字符数组用来存放姓名,指针chOne指向该数组
cin>>chOne; //输入姓名,存放在chOne所指向的动态字符数组中
cin>>iSex; //输入性别,输入1表示性别为“男”,输入0表示性别为“女”
cin>>iOld; //输入年龄
Zhang_San.SetName(chOne); //用输入的姓名设置对象Zhang_San用来表示姓名的数据成员
Zhang_San.SetGender(iSex); //设置对象Zhang_San用来表示性别的数据成员
Zhang_San.SetAge(iOld); //设置对象Zhang_San用来表示年龄的数据成员
cout<
//存放到chOne所指向的动态字符数组中
cout<<"Zhang_San’s name is "<
return 0;
}
输入描述
3行,第一行为一个长度不超过10的字符串表示姓名;第二行为0和1中的一个整数;第三行为一个整数,表示年龄。
输出描述
按主函数要求输出。
输入样例
ZhangSan
0
20
输出样例
Zhang_San’s name is ZhangSan
Zhang_San’s gender is 0
Zhang_San’s age is 20#include
题目描述
根据以下主函数的功能来设计计算器类Calculator,使其能正确运行。类Calculator中应该具有描述运算数的a和b及其表示a和b运算结果的三个数据成员和相应计算并显示结果的成员函数。
int main( )
{
float a, b;
cin>>a>>b; //从键盘输入运算数a、b
Calculator cal( a , b ); //用a和b初始化创建的Calculator类对象cal
cal.add( ); //计算a+b并显示结果
cal.subtract( );
cal.multiply( );
cal.divide( );
return 0;
}
输入描述
2个整数a和b,表示参与运算的两个数据。
输出描述
4行,分别显示a+b、a-b、ab和a/b的结果
输入样例
1 2
输出样例
1+2=3
1-2=-1
12=2
1/2=0.5#include
题目描述
根据以下主函数的功能来设计复数类Imaginary,使其能正确运行。类Imaginary中应该具有描述复数的实部和虚部的私有数据成员a和b,还有相应的构造函数和按照“a±bi”格式显示复数的成员函数print()。设计类Imaginary的2个友元函数分别进行复数的加、减运算,并在这些函数调用类Imaginary的成员函数print()显示结果。
int main()
{
float x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2; //输入4个数据,分别表示进行运算的两个复数的实部和虚部
Imaginary imag1(x1,y1),imag2(x2,y2); //用x1、y1创建Imaginary类对象imag1
Add(imag1,imag2); //调用友元函数求两个复数之和,按a±bi的格式显示运算结果(a和b均为实数)
Sub(imag1,imag2); //求两个复数之差并显示运算结果
return 0;
}
输入描述
输入4个数据,分别表示进行运算的两个复数的实部和虚部
输出描述
4行,分别显示两个复数进行加、减、乘、除运算的结果
输入样例
1 3 2 5
输出样例
3+8i
-1-2i#include