第八章要点整理图:
第八章例题整理:
- 例题8.1
- #include<stdio.h>
- void main()
- {
- void printstar(); /*对printstar函数进行声明*/
- void print_message(); /*对print_message函数进行声明*/
- printstar(); /*调用printstar函数*/
- print_message(); /*调用print_message函数*/
- printstar(); /*调用printstar函数*/
- }
- void printstar() /*定义printstar函数*/
- {
- printf("********************\n");
- }
- void print_message() /*定义print_message函数*/
- {
- printf(" How do you do!\n");
- }
- 例题8.2
- #include<stdio.h>
- void main()
- {
- int max(int x,int y); /*对max函数的声明*/
- int a,b,c;
- scanf("%d,%d",&a,&b);
- c=max(a,b);
- printf("Max is %d",c);
- }
- int max(int x,int y) /*定义有参函数max*/
- {
- int z;
- z=x>y?x:y;
- return(z);
- }
- 例题8.3
- #include<stdio.h>
- void main()
- {
- int max(float x,float y); /*对max函数的声明*/
- float a,b;
- int c;
- scanf("%f,%f",&a,&b);
- c=max(a,b);
- printf("Max is %d\n",c);
- }
- int max(float x,float y) /*定义有参函数max*/
- {
- float z; /*z为实型变量*/
- z=x>y?x:y;
- return(z);
- }
- 例题8.4
- #include<stdio.h>
- void main()
- {
- int f(int a,int b); /*函数声明*/
- int i=2,p;
- p=f(i,++i); /*执行方向影响结果,尽量避免此种写法*/
- printf("%d\n",p);
- }
- int f(int a,int b) /*函数定义*/
- {
- int c;
- if(a>b)
- {
- c=1;
- }
- else if(a==b)
- {
- c=0;
- }
- else
- {
- c=-1;
- }
- return(c);
- }
- 例题8.5
- #include<stdio.h>
- void main()
- {
- float add(float x,float y); /*对函数add声明*/
- float a,b,c;
- scanf("%f,%f",&a,&b);
- c=add(a,b);
- printf("sum is %f\n",c);
- }
- float add(float x,float y) /*函数定义*/
- {
- float z;
- z=x+y;
- return(z);
- }
- 例题8.6
- #include<stdio.h>
- #include<math.h>
- float f(float x) /*定义f函数,实现求f(x)*/
- {
- float y;
- y=((x-5.0)*x+16.0)*x-80.0;
- return(y);
- }
- float xpoint(float x1,float x2) /*定义xpoint函数,求弦与x轴的交点*/
- {
- float y;
- y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
- return(y);
- }
- float root(float x1,float x2) /*定义root函数,求近似根*/
- {
- float x,y,y1;
- y1=f(x1);
- do
- {
- x=xpoint(x1,x2);
- y=f(x);
- if(y*y1>0)
- {
- y1=y;
- x1=x;
- }
- else
- {
- x2=x;
- }
- }while(fabs(y)>=0.0001);
- return(x);
- }
- void main() /*主函数*/
- {
- float x1,x2,f1,f2,x;
- do
- {
- printf("input x1,x2:\n");
- scanf("%f,%f",&x1,&x2);
- f1=f(x1);
- f2=f(x2);
- }while(f1*f2>=0);
- x=root(x1,x2);
- printf("A root of equation is %8.4f\n",x);
- }
- 例题8.7
- #include<stdio.h>
- int age(int n) /*求年龄段递归函数*/
- {
- int c;
- if(n==1)
- {
- c=10;
- }
- else
- {
- c=age(n-1)+2;
- }
- return(c);
- }
- void main()
- {
- printf("%d\n",age(5));
- }
- 例题8.8
- #include<stdio.h>
- void main()
- {
- float fac(int n); /*对fac函数声明*/
- int n;
- float y;
- printf("input an integer number:"); /*输入时尽量小一些*/
- scanf("%d",&n);
- y=fac(n);
- printf("%d!=%10.0f\n",n,y);
- }
- float fac(int n) /*定义fac函数*/
- {
- float f;
- if(n<0)
- {
- printf("n<0,dataerror!");
- }
- else
- {
- if(n==0||n==1)
- {
- f=1;
- }
- else
- {
- f=fac(n-1)*n;
- }
- }
- return(f);
- }
- 例题8.9
- #include<stdio.h>
- void main()
- {
- void hanoi(int n,char one,char two,char three); /*hanoi函数声明*/
- int m;
- printf("input the number of diskes:");
- scanf("%d",&m);
- printf("The step to moveing %d diskes;\n",m);
- hanoi(m,'A','B','C');
- }
- void hanoi(int n,char one,char two,char three) /*定义hanoi函数*/
- {
- void move(char x,char y); /*move函数声明*/
- if(n==1)
- {
- move(one,three);
- }
- else
- {
- hanoi(n-1,one,three,two);
- move(one,three);
- hanoi(n-1,two,one,three);
- }
- }
- void move(char x,char y) /*定义move函数*/
- {
- printf("%c——>%c\n",x,y);
- }
- 例题8.10
- #include<stdio.h>
- void main()
- {
- int large(int x,int y);
- int a[10],b[10],i,n=0,m=0,k=0;
- printf("enter array a:\n");
- for(i=0;i<10;i++)
- {
- scanf("%d",&a[i]);
- }
- printf("\n");
- printf("enter array b:\n");
- for(i=0;i<10;i++)
- {
- scanf("%d",&b[i]);
- }
- printf("\n");
- for(i=0;i<10;i++)
- {
- if(large(a[i],b[i])==1)
- {
- n=n+1;
- }
- else
- {
- if(large(a[i],b[i])==0)
- {
- m=m+1;
- }
- else
- {
- k=k+1;
- }
- }
- }
- printf("a[i]>b[i] %d times\na[i]=b[i] %d times\na[i]<b[i] %d times\n",n,m,k);
- if(n>k)
- {
- printf("array a is larger than array b\n");
- }
- else
- {
- if(n<k)
- {
- printf("array a is smaller than b\n");
- }
- else
- {
- printf("array a is equal to array b\n");
- }
- }
- }
- int large(int x,int y)
- {
- int flag;
- if(x>y)
- {
- flag=1;
- }
- else if(x<y)
- {
- flag=-1;
- }
- else
- {
- flag=0;
- }
- return(flag);
- }
- 例题8.11
- #include<stdio.h>
- void main()
- {
- float average(float array[10]);
- float score[10],aver;
- int i;
- printf("input 10 scores:\n");
- for(i=0;i<10;i++)
- {
- scanf("%f",&score[i]);
- }
- printf("\n");
- aver=average(score);
- printf("average score is %5.2f\n",aver);
- }
- float average(float array[10])
- {
- int i;
- float aver,sum=array[0];
- for(i=1;i<10;i++)
- {
- sum=sum+array[i];
- }
- aver=sum/10;
- return(aver);
- }
- 例题8.12
- #include<stdio.h>
- void main()
- {
- float average(float array[],int n);
- float score_1[5]={98.5,97,91.5,60,55};
- float score_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5};
- printf("the average of class A is %6.2f\n",average(score_1,5));
- printf("the average of class B is %6.2f\n",average(score_2,10));
- }
- float average(float array[],int n)
- {
- int i;
- float aver,sum=array[0];
- for(i=1;i<n;i++)
- {
- sum=sum+array[i];
- }
- aver=sum/n;
- return(aver);
- }
- 例题8.13
- #include<stdio.h>
- void main()
- {
- void sort(int array[],int n);
- int a[10],i;
- printf("enter the array\n");
- for(i=0;i<10;i++)
- {
- scanf("%d",&a[i]);
- }
- sort(a,10);
- printf("the sorted array:\n");
- for(i=0;i<10;i++)
- {
- printf("%5d",a[i]);
- }
- printf("\n");
- }
- void sort(int array[],int n)
- {
- int i,j,k,t;
- for(i=0;i<n-1;i++)
- {
- k=i;
- for(j=i+1;j<n;j++)
- {
- if(array[j]<array[k])
- {
- k=j;
- }
- }
- t=array[k];
- array[k]=array[i];array[i]=t;
- }
- }
- 例题8.14
- #include<stdio.h>
- void main()
- {
- int max_value(int array[][4]);
- int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}};
- printf("max value is %d\n",max_value(a));
- }
- int max_value(int array[][4])
- {
- int i,j,max;
- max=array[0][0];
- for(i=0;i<3;i++)
- {
- for(j=0;j<4;j++)
- {
- if(array[i][j]>max)
- {
- max=array[i][j];
- }
- }
- }
- return(max);
- }
- 例题8.15
- #include<stdio.h>
- float Max=0,Min=0; /*全局变量*/
- void main()
- {
- float average(float array[],int n);
- float ave,score[10];
- int i;
- for(i=0;i<10;i++)
- {
- scanf("%f",&score[i]);
- }
- ave=average(score,10);
- printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave);
- }
- float average(float array[],int n)
- {
- int i;
- float aver,sum=array[0];
- Max=Min=array[0];
- for(i=1;i<n;i++)
- {
- if(array[i]>Max)
- {
- Max=array[i];
- }
- else if(array[i]<Min)
- {
- Min=array[i];
- }
- sum=sum+array[i];
- }
- aver=sum/n;
- return(aver);
- }
- 例题8.16
- #include<stdio.h>
- int a=3,b=5;
- void main()
- {
- int max(int a,int b);
- int a=8;
- printf("%d\n",max(a,b));
- }
- int max(int a,int b)
- {
- int c;
- c=a>b?a:b;
- return(c);
- }
- 例题8.17
- #include<stdio.h>
- void main()
- {
- int f(int a);
- int a=2,i;
- for(i=0;i<3;i++)
- {
- printf("%d ",f(a));
- }
- }
- int f(int a)
- {
- auto int b=0;
- static int c=3;
- b=b+1;
- c=c+1;
- return(a+b+c);
- }
- 例题8.18
- #include<stdio.h>
- void main()
- {
- int fac(int n);
- int i;
- for(i=1;i<=5;i++)
- {
- printf("%d!=%d\n",i,fac(i));
- }
- }
- int fac(int n)
- {
- static int f=1;
- f=f*n;
- return(f);
- }
- 例题8.19
- #include<stdio.h>
- void main()
- {
- long fac(long);
- long i,n;
- scanf("%ld",&n);
- for(i=1;i<=n;i++)
- {
- printf("%ld!=%ld\n",i,fac(i));
- }
- }
- long fac(long n)
- {
- register long i,f=1; /*寄存器变量*/
- for(i=1;i<=n;i++)
- {
- f=f*i;
- }
- return(f);
- }
- 例题8.20
- #include<stdio.h>
- void main()
- {
- int max(int x,int y);
- extern A,B;
- printf("%d\n",max(A,B));
- }
- int A=13,B=-8;
- int max(int x,int y)
- {
- int z;
- z=x>y?x:y;
- return(z);
- }
- 例题8.21
- file1;
- #include<stdio.h>
- int A;
- void main()
- {
- int power(int);
- int b=3,c,d,m;
- printf("enter the number a and its power m:\n");
- scanf("%d,%d",&A,&m);
- c=A*b;
- printf("%d*%d=%d\n",A,b,c);
- d=power(m);
- printf("%d**%d=%d\n",A,m,d);
- }
- file2:
- extern A;
- int power(int n)
- {
- int i,y=1;
- for(i=1;i<=n;i++)
- {
- y*=A;
- }
- return(y);
- }
- 例题8.22
- file1:
- #include<stdio.h>
- void main()
- {
- extern void enter_string(char str[]);
- extern void delete_string(char str[],char ch);
- extern void print_string(char str[]);
- char c;
- char str[80];
- enter_string(str);
- scanf("%c",&c);
- delete_string(str,c);
- print_string(str);
- }
- file2:
- #include<stdio.h>
- void enter_string(char str[80])
- {
- gets(str);
- }
- file3:
- #include<stdio.h>
- void delete_string(char str[],char ch)
- {
- int i,j;
- for(i=j=0;str[i]!='\0';i++)
- {
- if(str[i]!=ch)
- {
- str[j++]=str[i];
- }
- }
- str[j]='\0';
- }
- file4:
- #include<stdio.h>
- void print_string(char str[])
- {
- printf("%s\n",str);
- }