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

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

作者:pp 时间:2007-12-15 14:44:07 收藏 编辑

第七章
7.1
hcf(u,v)
int u,v;
{int a,b,t,r;
 if(u>v){t=u;u=v;v=t;}
 a=u;b=v;
 while((r=b%a)!=0)
   {b=a;a=r;}
 return(a);
}
lcd(u,v,h)
int u,v,h;
{return(u*v/h);}
main()
{int u,v,h,l;
 scanf("%d,%d",&u,&v);
 h=hcf(u,v);
 printf("H.C.F=%d\n",h);
 l=lcd(u,v,h);
 printf("L.C.D=%d\n",l);
}

7.2
#include"math.h"
float x1,x2,disc,p,q;
greater_than_zero(a,b)
float a,b;
{x1=(-b+sqrt(disc))/(2*a);
 x2=(-b-sqrt(disc))/(2*a);
}
equal_to_zero(a,b)
flaot a,b;
{x1=x2=-b/(2*a);}
smaller_than_zero(a,b)
float a,b;
{p=-b/(2*a);
 q=sqrt(-disc)/(2*a);
}
main()
{float a,b,c;
 scanf("%f,%f,%f",&a,&b,&c);
 disc=b*b-4*a*c;
 if(fabs(disc)<=1e-5)
   {equal_to_zero(a,b);
    printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);
   }
 else if(disc>0)
   {greater_than_zero(a,b);
    printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);
   }
 else
   {smaller_than_zero(a,b);
    printf("x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",p,q,p,q);
   }
}

7.3
main()
{int number;
 scanf("%d",&number);
 if(prime(number))
   printf("yes");
 else
   printf("no");
}
int prime(number)
int number;
{int flag=1,n;
 for(n=2;n<number/2&&flag==1;n++)
   if(number%n==0)
     flag=0;
 return(flag);
}

7.4
#define N 3
int array[N][N];
convert(array)
int array[3][3];
{int i,j,t;
 for(i=0;i<N;i++)
   for(j=i+1;j<N;j++)
     {t=array[i][j];
      array[i][j]=array[j][i];
      array[j][i]=t;
      }
}
main()
{int i,j;
 for(i=0;i<N;i++)
 for(j=0;j<N;j++)
   scanf("%d",&array[i][j]);
 convert(array);
 for(i=0;i<N;i++)
   {printf("\n");
    for(j=0;j<N;j++)
      printf("%5d",array[i][j]);
    }
}

7.5
main()
{char str[100];
 scanf("%s",str);
 inverse(str);
 printf("%s\n",str);
}
inverse(str)
char str[];
{char t;
 int i,j;
 for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--)
   {t=str[i];
    str[i]=str[j-1];
    str[j-1]=t;
    }
}

7.6
char concate(str1,str2,str)
char str1[],str2[],str[];
{int i,j;
 for(i=0;str1[i]!='\0';i++)
   str[i]=str1[i];
 for(j=0;str2[j]!='\0';j++)
   str[i+j]=str2[j];
 str[i+j]='\0';
}
main()
{char s1[100],s2[100],s[100];
 scanf("%s",s1);
 scanf("%s",s2);
 concate(s1,s2,s);
 printf("\ns=%s",s);
}

7.7
main()
{char str[80],c[80];
 void cpy();
 gets(str);
 cpy(str,c);
 printf("\n%s\n",c);
}
void cpy(s,c)
char s[],c[];
{int i,j;
 for(i=0,j=0;s[i]!='\0';i++)
   if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||
      s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')
     {c[j]=s[i];j++;}
 c[j]='\0';
}

7.8
main()
{char str[80];
 scanf("%s",str);
 insert(str);
}
insert(str)
char str[];
{int i;
 for(i=strlen(str);i>0;i--)
   {str[i*2]=str[i];
    str[i*2-1]=' ';
   }
 printf("%s\n",str);
}

7.9
int alph,digit,space,others;
main()
{char text[80];
 gets(text);
 alph=0,digit=0,space=0,others=0;
 count(text);
 printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,others);
}
count(str)
char str[];
{int i;
 for(i=0;str[i]!='\0';i++)
   if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
     alph++;
   else if(str[i]>='0'&&str[i]<='9')
     digit++;
   else if(strcmp(str[i],' ')==0)
     space++;
   else
     others++;
}

7.10
int alph(c)
char c;
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
   return(1);
 else
   return(0);
}
int longest(string)
char string[];
{int len=0,i,length=0,flag=1,place,point;
 for(i=0;i<=strlen(string);i++)
   if(alph(string[i]))
     if(flag)
       {point=i;
        flag=0;
       }
     else
       len++;
    else
      {flag=1;
       if(len>length)
         {length=len;
          place=point;
          len=0;
          }
       }
 return(place);
}
main()
{int i;
 char line[100];
 gets(line);
 for(i=longest(line);alph(line[i]);i++)
   printf("%c",line[i]);
 printf("\n");
}

7.11
#define N 10
char str[N];
main()
{int i,flag;
 for(flag=1;flag==1;)
   {scanf("%s",str);
    if(strlen(str)>N)
      printf("input error");
    else
      flag=0;
    }
 sort(str);
 for(i=0;i<N;i++)
   printf("%c",str[i]);
}
sort(str)
char str[N];
{int i,j;
 char t;
 for(j=1;j<N;j++)
   for(i=0;(i<N-j)&&(str[i]!='\0');i++)
     if(str[i]>str[i+1])
       {t=str[i];
        str[i]=str[i+1];
        str[i+1]=t;
       }
}

7.12
#include<math.h>
float solut(a,b,c,d)
float a,b,c,d;
{float x=1,x0,f,f1;
 do
   {x0=x;
    f=((a*x0+b)*x0+c)*x0+d;
    f1=(3*a*x0+2*b)*x0+c;
    x=x0-f/f1;
    }
 while(fabs(x-x0)>=1e-5);
 return(x);
}
main()
{float a,b,c,d;
 scanf("%f,%f,%f,%f",&a,&b,&c,&d);
 printf("x=%10.7f\n",solut(a,b,c,d));
}

高级回复

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