[ACM实验]程序设计基础(1)

来源:互联网 发布:韩国聊天软件 编辑:程序博客网 时间:2024/06/05 01:56

实验项目:ACM程序设计基础(1)

实验目的:掌握C++程序设计基础
实验内容:
      Question 1:输入年、月、日,计算该日是该年的第n天,输出n

#include <iostream>using namespace std;bool leapYear(int year){if((year%4==0&&year%400!=0)||year%400==0)return true;    return false;}int main(){int year,month,day;int mDays[]={31,28,31,30,31,30,31,31,30,31,30,31};while(cin>>year>>month>>day){if(leapYear(year)==true){mDays[1] = 29;}int sum = 0;for(int i=0;i<month-1;i++){sum += mDays[i]; }cout<<"该日是该年的第"<<sum+day<<"天";}system("pause");return 0;}                                          

以下是
VC2010运行结果图片:     


   
      Question 2: 
对于大于等于6的偶数,可以表示为2个素数之和,请判断一个数是否是对称数,如果该数为对称数而且是偶数,输出其和等于该数的2个素数。
#include "stdafx.h"#include <iostream>#include <vector>#include <cmath>using namespace std;bool fanXiang(int num){int a,c=num,b=0,n=0;if(num%2==0){while(num>0){a = num%10;num = num/10;b = b * 10 + a;n++;}if(c==b)return true;}cout<<"请重新输入一个大于等于6的对称偶数!";return false;}bool suShu(int n){int sqr = sqrt(n*1.0);for(int i=2;i<=sqr;i++){if(n%i==0)return false;}return true;}void twoSuShu(int num){for(int i=2;i<=num/2;i++){if(suShu(i)){if(suShu(num-i))cout<<i<<" "<<num-i<<endl;}}}int main(){int num;cout<<"请重新输入一个大于等于6的对称偶数!"<<endl;while(cin>>num){if(fanXiang(num)){twoSuShu(num);}cout<<endl;}system("pause");return 0;}

            Pay attention:在判断输入数字是否是对称偶数时,要先判断该数是否为偶数(若非偶则返回false,提示重新输入),然后才计算该数是否为对称数,这样可以避免冗余的计算过程(即每次都得判断是否为对称数而后判断是否为偶数)。

以下是VC2010运行结果图片:   






原创粉丝点击