习题参考答案03OUC13C语言程序设计项目化教程武桂力2Word格式文档下载.docx
《习题参考答案03OUC13C语言程序设计项目化教程武桂力2Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《习题参考答案03OUC13C语言程序设计项目化教程武桂力2Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
3.i=j,a[i][j]
4.strcmp(str[0],str[1])<
0?
str[0]:
str[1]s
项目6
1.C2.A3.C4.B5.B6.D
7.A8.A9.C10.A11.D12.D
13.A
1.对2.对3.对4.对5.对6.对
7.错8.对9.错10.对11.错12.对
13.对14.错15.错16.错
1.程序中的main()函数
2.函数说明、函数体
3.maxis2
4.2*i+1a(i)a(i)
5.age(n-1)+2;
age(5)
6.5109
7.i<
10array[i]average(score)
8.i=3j<
=i-1a[i-1][j-1]
9.123
三、编程题
1.
intisprime(inta)
{
inti;
for(i=2;
i<
sqrt((double)a);
i++)
if(a%i==0)return0;
return1;
}
2.
intsum(intn)
inti,k=0;
for(i=0;
=n;
i++)k+=i;
returnk;
3.
floatp(intn,intx)
floatt,t1,t2;
if(n==0)return1;
elseif(n==1)returnx;
else
{
t1=(2*n-1)*x*p((n-1),x);
t2=(n-1)*p((n-2),x);
t=(t1-t2)/n;
returnt;
}
4.
intmax_value(intarr[][4])
inti,j,max;
max=arr[0][0];
2;
for(j=0;
j<
4;
j++)
if(arr[i][j]>
max)max=arr[i][j];
returnmax;
5.
#defineM50
voidmain()
inta[M],c[5]={0},i,n,x;
n=0;
printf("
Enter1or2or3or4,toendwith-1\n"
);
scanf("
%d"
&
x);
while(x!
=-1)
if(x>
=1&
&
x<
=4){a[n]=x;
n++;
}
scanf("
f(a,c,n);
Outputtheresult:
\n"
;
for(i=1;
=4;
i++)printf("
%d:
%d\n"
i,c[i]);
f(inta[],intc[],intn)
n;
i++)c[a[i]]++;
项目7
1.B2.D3.D4.C5.B6.C
7.D8.B9.D10.A11.B
二、填空题
1.num=*b;
num=*c;
2、hELLO!
3、ef
4.412
5.810
6.*(a+i)=*(a+j);
*(a+j)=t
7.二维数组各元素的五种表示方法:
1)a[i][j]
2)(*(a+i))[j]
3)*(a[i]+j)
4)*(*(a+i)+j)
5)*(&
a[0][0]+4*i+j)
三、程序设计
main()
{intx,y,z,t;
int*p1,*p2,*p3;
printf(“Pleaseinput3numbers:
”);
scanf(“%d,%d,%d”,&
x,&
y,&
z);
p1=&
x;
p2=&
y;
p3=&
z;
printf(“oldvaluesare:
\n”);
printf(“%d%d%d\n”,x,y,z);
t=*p3;
*p3=*p2;
*p2=*p1;
*p1=t;
printf(“newvaliesare:
printf(“%d%d%d\n”,x,y,z);
{int*p,a[20],i;
printf(“Pleaseinput10numbers\n”);
for(i=0;
10;
scanf(“%d”,&
a[i]);
printf(“Theoriginalarrayis:
for(p=data;
p<
data+20;
p++)
{if((p-&
data[0])%5==0)printf(“\n”);
printf(“%4d”,*p);
sort(data,20);
printf(“thepresentarrayis:
data[0]%5==0)printf(“\n”);
voidsort(intarray[],intn)
{int*p1,*p2,t;
for(p1=array;
p1<
array+(n-1);
p1++)
for(p2=p1+1;
p2<
array+n;
p2++)
if(*p1>
*p2)
{t=*p1;
*p1=*p2;
*p2=t;
voidinv(int*x,intn)
{
int*p,temp,*i,*j,m=(n-1)/2;
i=x;
j=x+n-1;
p=x+m;
for(;
=p;
i++,j--)
{temp=*i;
*i=*j;
*j=temp;
return;
{inti,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("
Theoriginalarray:
%d,"
a[i]);
inv(a,10);
Thearrayhasbenninverted:
4.指针法:
main(){
inta[5],i,*pa;
pa=a;
for(i=0;
5;
i++){
*pa=i;
pa++;
printf("
a[%d]=%d\n"
i,*pa);
下标法:
inta[5],i;
a[i]=i;
i,a[i]);
{voidsort(char*a[],intn)
staticchar*name[]={“Changhua”,“Liping”,“Chenmei”,“Gaofeng”};
intn=4,i;
sort(name,n);
printf(%s\n”,name[i]);
voidsort(char*a[],intn)
{char*temp;
inti,j;
n-1;
for(j=0;
n-i-1,j++)
if(strcmp(a[j],a[j+1])>
0)
{temp=name[j];
name[j]=name[j+1];
name[j+1]=temp;
}}
项目8
1.A2.D3.A4.B5.C6.C
1.10,x
2.12,0
3.5,3
4.p<
person+3,old=p→age;
q→name,old;
5.while(p!
=NULL)
{c=c+1;
p=p→next;
项目9
选择题
1.A2.A3.C4.D5.C6.C
7.B8.D
二、程序设计
#include<
stdio.h>
FILE*fp;
charch;
if((fp=fopen("
text1.c"
"
rt"
))==NULL)
Cannotopenfilestrikeanykeyexit!
"
getch();
exit
(1);
ch=fgetc(fp);
while(ch!
=EOF)
putchar(ch);
fclose(fp);
/*
函数功能:
把srcName文件内容拷贝到dstName
函数入口参数:
文件路径
函数返回值:
非0值表示拷贝成功,否则出错
*/
intCopyFile(constchar*srcName,constchar*dstName)
#defineBUF_SIZE1024
charbuf[BUF_SIZE];
intfhSrc=-1;
intfhDst=-1;
intrval=1;
intrtn;
/*打开文件*/
fhSrc=open(srcName,O_RDONLY|O_BINARY);
if(fhSrc==-1)
gotoERROR;
fhDst=open(dstName,O_WRONLY|O_CREAT|O_TRUNC|O_BINARY);
if(fhDst==-1)
/*拷贝文件*/
while((rtn=read(fhSrc,buf,BUF_SIZE))>
0)
if(write(fhDst,buf,rtn)==-1)
gotoERROR;
if(rtn==0)
gotoEXIT;
ERROR:
rval=0;
EXIT:
if(fhSrc!
=-1)
close(fhSrc);
if(fhDst!
close(fhDst);
#undefBUF_SIZE
returnrval;
#include<
stdlib.h>
time.h>
dos.h>
#defineDEAL50/*设计最大交易次数*/
structdeal
structdatedt;
/*每笔交易的日期*/
structtimeti;
/*每笔交易的时间*/
doubleearning;
/*每笔交易的收入额度*/
doublepayout;
/*每笔交易的支出额度*/
};
typedefstructdealFINANCE;
FINANCEperson[DEAL]={0};
floatSumOfEarning(FINANCEper,intyear)
inti;
floatsum=0.0;
DEAL;
if(per.dt.da_year==year)
sum+=per.earning;
returnsum;
floatSumOfPayout(FINANCEper,intyear)
sum+=per.payout;
floatBalance(FINANCE*per)
floatsum1=0.0,sum2=0.0;
sum1+=(per+i)->
earning;
sum2+=(per+i)->
payout;
returnsum1+sum2;
voidOneYearBalance(FINANCE*per,intyear)
if((per+i)->
dt.da_year!
=year)continue;
paramof%d:
"
year);
SumofearningSumofpayoutBalance\n"
%28.2f%21.2f%19.2f\n"
sum1,sum2,sum1+sum2);
voidPrintBalance(FINANCE*per)
DateTimeEarningPayoutBalance\n"
dt.da_year!
=0)
printf("
%d/%d/%d"
(per+i)->
dt.da_year,
(per+i)->
dt.da_mon,(per+i)->
dt.da_day);
%d:
%d:
ti.ti_hour,
ti.ti_min,(per+i)->
ti.ti_sec);
earning!
%8.2f\n"
earning);
payout!
%8.2f\n"
payout);
Balance(per));
voidPrintOneYear(FINANCE*per)
inti,year;
PleaseInputoneyear:
scanf("
year);
=year)continue;
OneYearBalance(per,year);
voidGetDateTime(FINANCE*per)
Pleaseinputonedeal:
getdate(&
per->
dt);
%d/%d/%d:
per->
dt.da_year,per->
dt.da_mon,
per->
gettime(&
ti);
ti.ti_hour,per->
ti.ti_min,
charInputOneDeal(FINANCE*per)
charstring[10];
Pleaseinputdeal(+/-)\n"
GetDateTime(per);
%s"
string);
if(string[0]=='
-'
)
payout=atof(string);
else
earning=atof(string);
voidMenu()
1.InputOnedeal\n"
2.PrintAlltheBalance\n"
3.PrintOneyearBalance\n"
4.ExittoDOS\n"
读取数据文件
函数参数:
无
读入的记录条数
intLoadData(void)
FILE*fp=fopen("
deal.dat"
"
rb"
if(fp==NULL)
return0;
i=fread(person,sizeof(FINANCE),DEAL,fp);
fclose(fp);
returni;
保存数据文件
保存几条数据
无
voidSaveData(inti)
intwritten;
wb"
perror("
Opendeal.daterror:
return;
written=fwrite(person,sizeof(FINANCE),i,fp);
if(written!
=DEAL)
Writedeal.daterror:
charkey;
i=LoadData();
while
(1)
Menu();
key=bioskey(0);
switch(key)
case'
1'
:
InputOneDeal(person+i);
i++;
break;
2'
PrintBalance(person);
3'
PrintOneYear(person);
4'
SaveData(i);
exit(0);
default:
break;