}
计算今天是该年的第几天:
#include
intsum_day(int,int),leap(int);
voidmain()
{
intyear,month,day;
cout<<"请输入一个日期(yyymmdd):
";
cin>>year>>month>>day;
intdays=sum_day(month,day);
if(leap(year)&&month>2)
days++;
cout<<"是这一天的第"<}
intsum_day(intmonth,intday)
{
staticintdays_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(inti=1;iday+=days_month[i];
returnday;
}
intleap(intyear)
{
intleap=year%4==0&&year%100!
=0||year%400==0;
returnleap;
}
输入两个日期计算它们相隔多少天:
#include
classTPoint{
public:
TPoint(inta,intb,intc);
intsum_day();
intleap();
private:
intyear,month,day;
};
TPoint:
:
TPoint(inta,intb,intc){
year=a;
month=b;
day=c;
}
intTPoint:
:
sum_day()
{
staticinta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(inti=1;iday=a[i]+day;
returnday;
}
intTPoint:
:
leap()
{
intleap=year%4==0&&year%100!
=0||year%400==0;
returnleap;
}
voidmain()
{
inty,m,d;
inty1,m1,d1;
intsum=0,t;
cout<<"请输入一个年份:
"<cin>>y>>m>>d;
TPointtoday(y,m,d);
intdays=today.sum_day();
if(today.leap()&&m>2)
days+=1;
cout<<"他是这一年的第"<cout<<"请输入下一个年份:
"<cin>>y1>>m1>>d1;
TPointtodays(y1,m1,d1);
intdays1=todays.sum_day();
if(todays.leap()&&m1>2)
days1+=1;
cout<<"他是这一年的第"<for(intn=y;n{
if(n%4==0&&n%100!
=0||n%400==0)
sum+=366;
else
sum+=365;
}
t=sum+days1-days;
cout<<"它们中间相隔"<}
输入日期输出当天的星期号:
#include
intsum_day(int,int),leap(int);
voidmain()
{
intyear,month,day,i;
floats;
cout<<"请输入一个日期(yyymmdd):
";
cin>>year>>month>>day;
intdays=sum_day(month,day);
if(leap(year)&&month>2)
days++;
//cout<<"是这一天的第"<s=float(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+days);
i=(int)s%7;
if(true)
{
switch(i)
{
case0:
cout<<"今天是星期天";break;
case1:
cout<<"今天是星期一";break;
case2:
cout<<"今天是星期二";break;
case3:
cout<<"今天是星期三";break;
case4:
cout<<"今天是星期四";break;
case5:
cout<<"今天是星期五";break;
case6:
cout<<"今天是星期六";break;
}
cout<}
}
intsum_day(intmonth,intday)
{
staticintdays_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(inti=1;iday+=days_month[i];
returnday;
}
intleap(intyear)
{
intleap=year%4==0&&year%100!
=0||year%400==0;
returnleap;
}
二进制转化为十进制:
#include
doublepower(doublex,intn);
voidmain()
{
inti;
intvalue=0;
charch;
cout<<"Enteran8bitbinarynumber:
";
for(i=7;i>=0;i--)
{
cin>>ch;
if(ch=='1')
value+=int(power(2,i));
}
cout<<"Decimalvalueis"<}
doublepower(doublex,intn)
{
doubleval=1.0;
while(n--)
val*=x;
returnval;
}
十进制转化为二进制:
#include
#include
voidreverse(chars[]);
voidmain()
{
charbin[20];
intn,i=0;
cout<<"输入一个整数:
";
cin>>n;
do{
bin[i++]=n%2+'0';
}while((n/=2)!
=0);
bin[i]='\0';
reverse(bin);
cout<<"对应的二进制:
"<}
voidreverse(chars[])
{
inttemp,i,j;
for(i=0,j=strlen(s)-1;i{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
十进制转化为任意进制:
#include
#include
voidreverse(chars[])
{
inttemp,i,j;
for(i=0,j=strlen(s)-1;i{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
voiditob(intn,chars[],intb)
{
inti=0,sign,t;
if((sign=n)<0)
n=-n;
while(n>0)
{
t=n%b;
if(t>=10)
s[i++]=t-10+'A';
else
s[i++]=t+'0';
n=n/b;
if(sign<0)
s[i--]='-';
s[i]='\0';
}
}
voidmain()
{
charstr[100];intn,base;
cout<<"输入整数和基:
";
cin>>n>>base;
itob(n,str,base);
reverse(str);
cout<<"转换结果:
"<cout<"<}
Java
(一)this的用法
运行下面的程序,写出实验结果。
程序1:
this作为函数的返回值。
publicclassLeaf{
inti=0;
Leafincrement(){
i++;
returnthis;
}
voidprint(){
System.out.println("i="+i);
}
publicstaticvoidmain(String[]args){
Leafx=newLeaf();
x.increment().increment().increment().increment().increment().print();
}
}
程序2:
this用来区分当前作用域中同名的不同变量。
classThisTest1
{
intx;
publicThisTest1(intx){
this.x=x+1;
}
publicstaticvoidmain(String[]args)
{
ThisTest1t=newThisTest1(5);
System.out.println(t.x);
}
}
程序3:
在一个构造方法中调用另外一个构造方法。
classThisTest2
{
intx,y;
publicThisTest2(intx,inty){
this.x=x;
this.y=y;
}
publicThisTest2(intx){
this(x,3);
}
publicstaticvoidmain(String[]args)
{
ThisTest2t=newThisTest2
(1);
System.out.println("t.x="+t.x);
System.out.println("t.y="+t.y);
}
}
可变参数列表及foreach语法练习
创建一个String类型的数组,并为每个元素赋值一个String,然后用foreach语法输出该数组。
(StringArray.java)
publicclassStringArray{
publicstaticvoidmain(String[]args){
String[]s={"one","two","three","four","five",};
for(Stringa:
s){
System.out.print(a+"");
}
}
}
创建一个类:
InitString,它有一个接受一个String参数的构造器,在构造器中打印该参数。
在InitStringTest类的main函数中创建InitString类型的数组,长度为[0,10]的任意整数,并用for循环为其赋值,然后用foreach语法输出该数组。
(InitStringTest.java)
importjava.util.*;
classInitString{
InitString(Strings){
System.out.println(s);
}
publicStringtoString(){
return"IamInitString";
}
}
publicclassInitStringTest{
publicstaticvoidmain(String[]args){
Randomrand=newRandom(47);
InitString[]it=newInitString[rand.nextInt(11)];
for(inti=0;iit[i]=newInitString("ok");
for(InitStrings:
it)
System.out.print(s+"");
}
}
创建一个类:
VarargString,在该类中定义一个静态函数,该函数可接受一个可变参数的String数组。
并在main函数中调用该函数,传递一个用逗号分隔的String列表,或者传递一个String类型的数组。
(VarargString.java)
publicclassVarargString{
staticvoidshowStrings(String...args){
for(Strings:
args)
System.out.print(s+"");
System.out.println();
}
publicstaticvoidmain(String[]args){
showStrings("one","TWO","three","four");
showStrings(newString[]{"1","2","3","4"});
}
}
创建一个enum,它包含星期一到星期日等7个值。
通过foreach语法打印每个值及其ordinal()。
(EnumTest.java)
enumWeek{
MONDAY,TUESDAY,WEDNESDAY,TURSDAY,FRIDAY,SATURDAY,SUNDAY
}
publicclassEnumTest{
publicstaticvoidmain(String[]args){
for(Weekw:
Week.values())
System.out.println(w+",ordinal"+w.ordinal());
}
}
创建一个使用可变参数列表的main()。
并在main()中打印args数组中的所有元素,并用各种不同数量的命令行参数进行测试。
(VarargString2.java)
publicclassVarargString2{
publicstaticvoidmain(String...args){
for(Strings:
args)
System.out.print(s+"");
System.out.println();
}
}
为(4)中的enum写一个switch语句,对于每一个case,输出一行字符串。
(EnumTest2.java)
publicclassEnumTest2{
Weekw;
publicstaticvoidmain(String[]args){
for(Weekw:
Week.values()){
switch(w){
caseMONDAY:
System.out.println("Todayismonday");break;
caseTUESDAY:
System.out.println("Todayistuesday");break;
caseWEDNESDAY:
System.out.println("Todayiswednesday");break;
caseTURSDAY:
System.out.println("Todayistursday");break;
caseFRIDAY:
System.out.println("Todayisfriday");break;
caseSATURDAY:
System.out.println("Todayissaturday");break;
caseSUNDAY:
System.out.println("Todayissunday");break;
default:
break;
}
}
}
}
访问权限
(1)完善下列程序,并通过下列程序测试类成员的访问权限,最后完成表格。
程序一:
packagejin;
publicclassAccess{
publicinti=1;
privateintj=2;
protectedintm=3;
intn=4;
}
程序二:
packagejin;
publicclassTestOne{
publicstaticvoidmain(String[]args){
//编写“相同包中的非子类中被访问”的测试代码:
Accessa=newAccess();
System.out.println(a.i);
System.out.println(a.j);
System.out.println(a.m);
System.out.println(a.n);
}
}
程序三:
packagejin;
publicclassTestTwoextendsAccess{
publicstaticvoidmain(String[]args){
/*编写“相同包中的子类中被访问”和“被相同包中的子类继承后直接访问”的测试代码:
*/
//相同包中的子类中被访问
Accessa=newAccess();
System.out.println(a.i);
System.out.println(a.j);
System.out.println(a.m);
System.out.println(a.n);
//被相同包中的子类继承后直接访问
TestTwoa=newTestTwo();
System.out.println(a.i);
System.out.println(a.j);
System.out.println(a.m);
System.out.println(a.n);
}
}
程序四:
packagejzx;
importjin.Access;
publicclassTestThree{
publicstaticvoidmain(String[]args){
//编写“不相同包中的非子类中被访问”的测试代码:
Accessa=newAccess();
System.out.println(a.i);
System.out.println(a.j);
System.out.println(a.m);
System.out.println(a.n);
}
}
程序五:
packagejzx;
importjin.Access;
publicclassTestFourextendsAccess{
publicstaticvoidmain(String