目录
第1关:结构实现复数运算
任务描述
编程要求
第2关:求亲密对数
任务描述
编程要求
第3关:计算一年的第几天
任务描述
编程要求
第4关:正整数求和
任务描述
编程要求
第5关:Pig Latin
任务描述
编程要求
第6关:打印日历
任务描述
编程要求
本关任务:编写一个描述复数类型的结构体变量的小程序。
定义描述复数类型的结构体变量,编写减法函数sub()与乘法函数mul(),分别完成复数的减法与乘法运算。
在主函数中定义四个复数类型变量c1、c2、c3、c4,输入c1、c2的复数值,调用sub()完成c3=c1-c2操作,调用mul()完成c4=c1*c2操作。最后输出c3、c4复数值。
比如,用户输入"-0.5 1.5 1.5 0.5"(表示c1为-0.5+1.5i,c2为1.5+0.5i),程序应输出"-2 1 -1.5 2"(表示c3为-2+1i,c4为-1.5+2i).
要求:
效果如下:
输入:1 1 2 2
输出:-1 -1 0 4
开始你的任务吧,祝你成功!
#include
using namespace std;
struct pluar{
double in, ou;
};
int main(){
/********** Begin ********/
pluar c1,c2,c3,c4;
cin>>c1.in>>c1.ou>>c2.in>>c2.ou;
c3.in=c1.in-c2.in;
c3.ou=c1.ou-c2.ou;
c4.in=c1.in*c2.in-c1.ou*c2.ou;
c4.ou=c1.in*c2.ou+c1.ou*c2.in;
cout<
本关任务:编写一个能求20000以内的亲密对数的小程序。
求20000以内的亲密对数。所谓亲密对数,即A除了整数本身外的所有因子之和等于B,B除了整数本身外的所有因子之和等于A。
要求:编写函数来求某数的除了整数本身外的所有因子之和(注意1是任何整数的因子)。
格式要求:
效果如下:
输入:1
输出:220 284
开始你的任务吧,祝你成功!
#include
#include
using namespace std;
int logarithm(int);
int main()
{
/********** Begin ********/
int n,k=0;
cin>>n;
for(int a=200;a<=20000;a++)
{
int b=logarithm(a);
if(logarithm(b)==a&&a
本关任务:编写一个能计算一年的第几天的小程序。
编写程序,定义一个结构Date,包含年、月、日三个整型。
计算该日期是该年的第几天并输出,如果输入的日期非法,则输出0。
效果如下:
输入:1999 9 9
则输出:252
开始你的任务吧,祝你成功!
#include
using namespace std;
struct date //定义结构变量
{
int year;
int month;
int day;
}dat;
int luner(int n) //判断是否是闰年
{
if (n%4==0)
{
if (n%100 ==0 && n%400!=0)
return 28;
else
return 29;
}
else return 28;
}
int main()
{
int y,m,d;
cin>>y>>m>>d;
if((y<=0)||(m<=0||m>=13)||(d<=0||d>=32)||(m==2&&d>=30)||(luner(y)==28&&d==29)||(luner(y)==29&&d==28))
{
cout<<0;
}
else
{
if(m==1)
{
cout<=30)
{
cout<<0;
}
}
}
本关任务:编写一个能实现两个100位以内的正整数的和的小程序。
编程实现两个100位以内的正整数的和。例如,输入2个正整数"9876543210123456789012345"和"3264823749328439473242109",程序输出二者之和"13141366959451896262254454"。
要求:设计编写不少于4个函数用于程序实现,并在程序中针对每个函数给出注释,详细描述函数的功能。
效果如下:
输入:9876543210123456789012345 3264823749328439473242109
输出:13141366959451896262254454
开始你的任务吧,祝你成功!
#include
#include
using namespace std;
int main()
{
string str1,str2;
int a[250],b[250],len;
int i;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
cin>>str1>>str2;
a[0]=str1.length();
for(i=1;i<=a[0];i++)
{a[i]=str1[a[0]-i]-'0';}
b[0]=str2.length();
for(i=1;i<=b[0];i++)
{b[i]=str2[b[0]-i]-'0'; }
len=(a[0]>b[0]?a[0]:b[0]);
for(i=1;i<=len;i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
len++;
while((a[len]==0)&&(len>1)) len--;
for(i=len;i>=1;i--)
cout<
本关任务:编写一个能按照规则转换英文单词的小程序。
Pig Latin:一种自发明语言,将英文单词按如下规则转换:
效果如下:
输入:What are you doing?
输出:atWhay areway ouyay oingday?
开始你的任务吧,祝你成功!
#include
#include
using namespace std;
inline int qchar(char c)
{
if(c>='A'&&c<='Z')c=c+'a'-'A';
if((c=='a')||(c=='e')||(c=='u')||(c=='i')||(c=='o'))return 1;
if(c>='a'&&c<='z')return 2;
if(c=='\n'||c==EOF)return 0;
return 3;
}
int main()
{
char c[1000],t;
int i,m;
while(1){
t=getchar();
if(!qchar(t))
break;
if(qchar(t)==3)
{
putchar(t);continue;
}
if(qchar(t)==1)
{
while((qchar(t)==1)||(qchar(t)==2))
{
putchar(t);
t=getchar();
}
cout<<"way";
if(!qchar(t))break;
cout<
本关任务:编写一个能根据用户输入的年份和月份来打印该月份日历的小程序。
根据用户输入的年份和月份,打印该月份的日历。例如,输入2014 4,输出如下:
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
整齐起见, 结果应保持7 × 5的矩阵,每个日期占4位字符(不足4位用空格填充),可以考虑用流操纵算法setw(4)。
计算某一日期是一周当中的星期几的算法如下。
输入有三个:year(年)、month(月)、day(日)。对于month,用1表示一月,2表示二月,以此类推。可用以下公式计算:
y = year - (14 - month)/12
x = y + y/4 - y/100 + y/400
m = month + 12×((14 - month)/12) - 2
d = (day + x + (31 × m)/12)%7
对于输出d,0表示周日,1表示周一,2表示周二,以此类推。
例如:2000年2月14日是周几?
y = 2000 -(14 - 2)/12 = 1999
x = 1999+1999/4-1999/100+1999/400 = 2483
m = 2 + 12×1-2 = 12
d = (14+2483+(31×12)/12)%7 = 2528%7 = 1
答案:周一
效果如下:
输入:2014 4
输出:
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
开始你的任务吧,祝你成功!
#include
#include
using namespace std;
int main()
{
int year, month, y, x, m, d;
int day=1, i=0;
cin>>year>>month;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
while(day<32)
{
y = year - (14 - month)/12;
x = y + y/4 - y/100 + y/400;
m = month + 12*((14 - month)/12) - 2;
d = (day + x + (31 * m)/12)%7 ;
while (i