Loading...
  所在位置:论坛首页 -> 计算机科学与技术 -> 程序设计 -> c语言习题答案(第9章,新版第10章)(潭浩强,清华出版社)
回复

c语言习题答案(第9章,新版第10章)(潭浩强,清华出版社)

作者:pp 时间:2007-12-15 15:00:35 收藏 编辑

补充第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;
         }
      }
    }
}

高级回复

操作选项: 评分 加精 解精 奖惩 设专题 设公告 解公告 固顶 总固顶 解固顶 结帖 解结帖 锁帖 解锁 移帖 删帖
  首页
Copyright 2006-2012 HistoryCreator.com Powered By: BBSGood 5
吉ICP备06005902号