所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第9章,新版第10章)(潭浩强,清华出版社) |
补充第9章 指针
9.13
#include"math.h"
main()
{int n=20;
float a,b,a1,b1,a2,b2,c,(*p)(),jiff();
scanf("%f,%f",&a,&b);
scanf("%f,%f",&a1,&b1);
scanf("%f,%f",&a2,&b2);
p=sin;
c=jiff(a,b,n,p);
printf("sin=%f\n",c);
p=cos;
c=jiff(a1,b1,n,p);
printf("cos=%f\n",c);
p=exp;
c=jiff(a2,b2,n,p);
printf("exp=%f\n",c);
}
float jiff(a,b,n,p)
float a,b,(*p)();
int n;
{int i;
float x,f,h,area;
h=(b-a)/n;
x=a;
area=0;
for(i=1;i<=n;i++)
{x=x+h;
area=area+(*p)(x)*h;
}
return(area);
}
9.14
main()
{int i,n,num[20];
char *p;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&num[i]);
p=num;
sort(p,n);
for(i=0;i<n;i++)
printf("%8d",num[i]);
}
sort(p,m)
char *p;
int m;
{int i;
char change,*p1,*p2;
for(i=0;i<m/2;i++)
{p1=p+i;
p2=p+(m-1-i);
change=*p1;
*p1=*p2;
*p2=change;
}
}
9.15
main()
{int i,j,*pnum,num[4];
float score[4][5],aver[4],*psco,*pave;
char course[5][10],*pcou;
pcou=course[0];
for(i=0;i<5;i++)
scanf("%s",pcou+10*i);
printf("number");
for(i=0;i<5;i++)
printf(",%s",pcou+10*i);
printf("\n");
psco=score;
pnum=num;
for(i=0;i<4;i++)
{scanf("%d",pnum+i);
for(j=0;j<5;j++)
scanf(",%f",psco+5*i+j);
}
pave=aver;
printf("\n");
avsco(psco,pave);
avcour1(pcou,psco);
printf("\n");
fali2(pcou,pnum,psco,pave);
printf("\n");
good(pcou,pnum,psco,pave);
}
avsco(psco,pave)
float *psco,*pave;
{int i,j;
float sum,average;
for(i=0;i<4;i++)
{sum=0;
for(j=0;j<5;j+)
sum+=(*(psco+5*i+j));
average=sum/5;
*(pave+i)=average;
}
}
avcour1(pcou,psco)
char *pcou;
float *psco;
{int i;
float sum,average1;
sum=0;
for(i=0;i<4;i++)
sum+=(*(psco+5*i))
average1=sum/4;
printf("%s %5.2f\n",pcou,average1);
}
fali2(pcou,pnum,psco,pave)
char *pcou;
int *pnum;
float *psco,*pave;
{int i,j,k,label;
printf("\nnumber\n");
for(i=0;i<5;i++)
printf("%-8s",pcou+10*i);
printf("\naverage\n");
for(i=0;i<4;i++)
{label=0;
for(j=0;j<5;j++)
if(*(psco+5*i+j)<60.0)label++;
if(label>=2)
{printf("%-8d",*(pnum+i));
for(k=0;k<5;k++)
printf("%-8.2f",*(psco+5*i+k));
printf("%-8.2f",*(pave+i));
}
}
}
good(pcou,pnum,psco,pave)
char *pcou;
int *pnum;
float *psco,*pave;
{int i,j,k,label;
printf("number");
for(i=0;i<5;i++)
printf("%-8s",pcou+10*i);
printf("average");
for(i=0;i<4;i++)
{label=0;
for(j=0;j<5;j++)
if(*(psco+5*i+j)>=85.0)label++;
if((label>=5)||(*(pave+i)>=90))
{printf("%-8d",*(pnum+i));
for(k=0;k<5;k++)
printf("%-8.2f",*(psco+5*i+k));
printf("%-8.2f",*(pave+i));
}
}
}
9.16
#include"stdio.h"
main()
{char str[50],*pstr;
int i,j,k,m,e10,digit,ndigit,a[10],*pa;
gets(str);
pstr=str;
pa=a;
ndigit=0;
i=j=0;
while(*(pstr+i)!='\0')
{if((*(pstr+i)>='0')&&(*(pstr+i)<='9'))
j++;
else
{if(j>0)
{digit=*(pstr+i-1)-48;
k=1;
while(k<j)
{e10=1;
for(m=1;m<=k;m++)
e10=e10*10;
digit+=(*(pstr+i-1-k)-48)*e10;
k++;
}
*pa=digit;
ndigit++;
pa++;
j=0;
}
}
i++;
}
if(j>0)
{digit=*(pstr+i-1)-48;
k=1;
while(k<j)
{e10=1;
for(m=1;m<=k;m++)
e10=e10*10;
digit+=(*(pstr+i-1-k)-48)*e10;
k++;
}
*pa=digit;
ndigit++;
j=0;
}
printf("ndigit=%d\n",ndigit);
j=0;
pa=a;
for(j=0;j<ndigit;j++)
printf("%d",*(pa+j));
}
9.17
main()
{int m;
char str1[20],str2[20],*p1,*p2;
scanf("%s",str1);
scanf("%s",str2);
p1=str1;
p2=str2;
m=strcmp(p1,p2);
printf("%d\n",m);
}
strcmp(p1,p2)
char *p1,*p2;
{int i=0;
while(*(p1+i)==*(p2+i))
if(*(p+i++)=='\0')return(0);
return(*(p1+i)-*(p2+i));
}
9.18
main()
{static char *mname[13]={"illeagl","January","February","March",
"April","May","June","July","August","September","October",
"November","December"};
int n;
scanf("%d",&n);
if((n>=1)&&(n<=12))
printf("%s\n",*(mname+n));
else
printf("error");
}
9.20
main()
{int i;
char **p,*pstr[5],str[5][10];
for(i=0;i<5;i++)
pstr[i]=str[i];
for(i=0;i<5;i++)
scanf("%s",pstr[i]);
p=pstr;
sort(p);
for(i=0;i<5;i++)
printf("%s\n",pstr[i]);
}
sort(p)
char **P;
{int i,j;
char *pchange;
for(i=0;i<5;i++)
{for(j=i+1;j<5;j++)
{if(strcmp(*(p+i),*(p+j))>0)
{pchange=*(p+i);
*(p+i)=*(p+j);
*(p+j)=pchange;
}
}
}
}
9.21
main()
{int i,n,digit[20],**p,*pstr[20];
scanf("%d",&n);
for(i=0;i<n;i++)
pstr[i]=&digit[i];
for(i=0;i<n;i++)
scanf("%d",pstr[i]);
p=pstr;
sort(p,n);
for(i=0;i<n;i++)
printf("%d ",*pstr[i]);
}
sort(p,n)
int **p,n;
{int i,j,*pchange;
for(i=0;i<n;i++)
{for(j=i+1;j<n;j++)
{if(**(p+i)>**(p+j))
{pchange=*(p+i);
*(p+i)=*(p+j);
*(p+j)=pchange;
}
}
}
}
操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖 |
|