Lab8 王晨旭.docx
《Lab8 王晨旭.docx》由会员分享,可在线阅读,更多相关《Lab8 王晨旭.docx(11页珍藏版)》请在冰豆网上搜索。
Lab8王晨旭
Lab8DataStructures
OBJECTIVES
Aftercompletingthisexperiment,youwillbeableto:
●UseStructures
●Typecasting
PROCEDURES
PART1Createinstancesofstructure
Createastructurecalledcarwiththefollowingmembers:
●make
●model
●year
●miles
CreateaninstanceofthecarstructurenamedmyCarandassigndatatoeachofthemembers(e.g.make—Honda,model—CRV,year—2,miles--30000).Printthecontentsofeachmemberusingprintf()function
PrintScreenofResult:
——————————————————
PART2“DateCalculation”usingstructures
(1)Definestructuretypeincludingyear、month、day.
(2)Definestructurevariable,andinitializethevariable.
(3)sumallthenumberofdaysintheyearstoredinthevariablesum,ifmeetingaleapyear,sum=sum+1;
#include〈stdio.h〉
structdate
{
intyear;
intmonth;
intday;
};
voidmain()
{
structdated;
intsum=0;
printf("\ninputthedate:
\n");
scanf("%d%d%d",&d.year,&d.month,&d.day);
switch(d.month)
{
case1:
sum=0;break;
case2:
sum=31;break;
case3:
sum=31+28;break;
case4:
sum=31+28+31;break;
case5:
sum=31+28+31+30;break;
case6:
sum=31+28+31+30+31;break;
case7:
sum=31+28+31+30+31+30;break;
case8:
sum=31+28+31+30+31+30+31;break;
case9:
sum=31+28+31+30+31+30+31+31;break;
case10:
sum=31+28+31+30+31+30+31+31+30;break;
case11:
sum=31+28+31+30+31+30+31+31+30+31;break;
case12:
sum=31+28+31+30+31+30+31+31+30+31+30;break;
}
sum+=d.day;/*天数累加*/
if(d.month>2)/*闰年处理*/
if(d.year%400==0||d.year%100!
=0&&d.year%4==0)
sum+=1;
printf("Total:
%d\n",sum);
}
Runtheprogram:
(1)Inputalegal(合理的)date,PrintScreenofResult:
(2)Inputadatewithanillegal(不合理的)month,PrintScreenofResult:
(3)Inputadatewithanillegalday,PrintScreenofResult:
(4)Rewritetheprogram,soitcangivetherightresultunderanycondition.重编,满足所有情况
PrintScreenofcode:
#include〈stdio.h〉
structdate
{
intyear;
intmonth;
intday;
};
voidmain()
{
structdated;
intsum=0;
printf("\ninputthedate:
\n");
scanf("%d%d%d",&d.year,&d.month,&d.day);
if(d.month<=12){
switch(d.month)
{
case1:
sum=0;break;
case2:
sum=31;break;
case3:
sum=31+28;break;
case4:
sum=31+28+31;break;
case5:
sum=31+28+31+30;break;
case6:
sum=31+28+31+30+31;break;
case7:
sum=31+28+31+30+31+30;break;
case8:
sum=31+28+31+30+31+30+31;break;
case9:
sum=31+28+31+30+31+30+31+31;break;
case10:
sum=31+28+31+30+31+30+31+31+30;break;
case11:
sum=31+28+31+30+31+30+31+31+30+31;break;
case12:
sum=31+28+31+30+31+30+31+31+30+31+30;break;
}
sum+=d.day;/*天数累加*/
if(d.month>2)/*闰年处理*/
if(d.year%400==0||d.year%100!
=0&&d.year%4==0)
sum+=1;
printf("Total:
%d\n",sum);}
else
printf(“error”);
}
PART3Inputandoutputofthestructure.
Fillintheblank.Writeaprogramtoinitialize初始化anarrayofstructuresthrough来自keyboard键盘
andthenoutputthevalueofthearray.输出值
#include
#include
main()
{structdate
{intyear;
intmonth;
intday;
};
structstu
{charnum[12];
charname[20];
charsex;
intage;
structdatebirthday;
};
typedefstructstuSTU;
STUstudent[3];
inti;
/**********program*******************************/
/***usingforlooptoinputthethreeelements**/
/**********end*********************************/
for(i=0;i<3;i++)
{printf("\nstudent[%d]num:
%s;name:
%s;sex:
%c;age:
%d;birthday:
%d.%d.%d",i,student[i].num,student[i].name,student[i].sex,student[i].age,student[i].birthday.year,student[i].birthday.month,student[i].birthday.day);
}
getch();
}
PrintScreenofResult:
——————————————————
PART4PassingArraysofstructures.
Whatdoesthefollowingprogramprint?
#include
#include
structinfo
{
charitem[20];
doublecost;
};
voidsomeFunction(structinfo[]);
intmain(void)
{
structinfodata[4]={{"nut",0.50},{"bolt",0.75}};
inti;
someFunction(data);
for(i=0;i<4;i++)
printf("%s,%.2f\n",data[i].item,data[i].cost);
}
voidsomeFunction(structinfovalues[])
{
inti;
for(i=0;i<2;i++)
if(values[i].cost>0.60)
{
strcpy(values[i+2].item,"washer");
values[i+2].cost=0.40;
}
else
{
strcpy(values[i+2].item,"hammer");
values[i+2].cost=12.00;
}
}
PrintScreenofResult:
——————————————————
PART5TypeConversions.
(1)Automaticconversions
main()
{
inta,b=−550;
charc='7';
floatf1=3.142,f2;
a=b/c;/*integerdividedbyacharacter*/
printf(“a=%d\n”,a);
a=f1;/*floattointegerconversion*/
printf("f1=%f……a=%d\n",f1,a);
f1=b;/*integertofloatconversion*/
printf("b=%d……f1=%f\n"b,f1);
f2=b/50.0;/*integerdividedbyafloat*/
printf("b=%d,f2=%f\n",b,f2);
}
PrintScreenofResult:
——————————————————
(2)Typecasting
main()
{floatx;
inti;
x=3.6;
i=(int)x;
printf(“x=%f,i=%d”,x,i);
}
PrintScreenofResult:
——————————————————