【入門】C程序設計(第三版)譚浩強—第八章

 第八章要點整理圖:

C程序設計(第三版)譚浩強—第三章整理圖

 

第八章例題整理:

  1. 例題8.1 
  2. #include<stdio.h> 
  3. void main() 
  4.     void printstar();       /*對printstar函數進行聲明*/ 
  5.     void print_message();   /*對print_message函數進行聲明*/ 
  6.     printstar();            /*調用printstar函數*/ 
  7.     print_message();        /*調用print_message函數*/ 
  8.     printstar();            /*調用printstar函數*/ 
  9.  
  10. void printstar()            /*定義printstar函數*/ 
  11.     printf("********************\n"); 
  12.  
  13. void print_message()        /*定義print_message函數*/ 
  14.     printf("  How do you do!\n"); 
  15.  
  16. 例題8.2 
  17. #include<stdio.h> 
  18. void main() 
  19.     int max(int x,int y);   /*對max函數的聲明*/ 
  20.     int a,b,c; 
  21.     scanf("%d,%d",&a,&b); 
  22.     c=max(a,b); 
  23.     printf("Max is %d",c); 
  24.  
  25. int max(int x,int y)        /*定義有參函數max*/ 
  26.     int z; 
  27.     z=x>y?x:y; 
  28.     return(z); 
  29.  
  30. 例題8.3 
  31. #include<stdio.h> 
  32. void main() 
  33.     int max(float x,float y);   /*對max函數的聲明*/ 
  34.     float a,b; 
  35.     int c; 
  36.     scanf("%f,%f",&a,&b); 
  37.     c=max(a,b); 
  38.     printf("Max is %d\n",c); 
  39.  
  40. int max(float x,float y)        /*定義有參函數max*/ 
  41.     float z;                    /*z爲實型變量*/ 
  42.     z=x>y?x:y; 
  43.     return(z); 
  44.  
  45. 例題8.4 
  46. #include<stdio.h> 
  47. void main() 
  48.     int f(int a,int b); /*函數聲明*/ 
  49.     int i=2,p; 
  50.     p=f(i,++i);         /*執行方向影響結果,儘量避免此種寫法*/ 
  51.     printf("%d\n",p); 
  52.  
  53. int f(int a,int b)      /*函數定義*/ 
  54.     int c; 
  55.     if(a>b) 
  56.     { 
  57.         c=1; 
  58.     } 
  59.     else if(a==b) 
  60.     { 
  61.         c=0; 
  62.     } 
  63.     else 
  64.     { 
  65.         c=-1; 
  66.     } 
  67.     return(c); 
  68.  
  69. 例題8.5 
  70. #include<stdio.h> 
  71. void main() 
  72.     float add(float x,float y); /*對函數add聲明*/ 
  73.     float a,b,c; 
  74.     scanf("%f,%f",&a,&b); 
  75.     c=add(a,b); 
  76.     printf("sum is %f\n",c); 
  77.  
  78. float add(float x,float y)      /*函數定義*/ 
  79.     float z; 
  80.     z=x+y; 
  81.     return(z); 
  82.  
  83. 例題8.6 
  84. #include<stdio.h> 
  85. #include<math.h> 
  86. float f(float x)                            /*定義f函數,實現求f(x)*/ 
  87.     float y; 
  88.     y=((x-5.0)*x+16.0)*x-80.0; 
  89.     return(y); 
  90.  
  91. float xpoint(float x1,float x2)             /*定義xpoint函數,求弦與x軸的交點*/ 
  92.     float y; 
  93.     y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); 
  94.     return(y); 
  95.  
  96. float root(float x1,float x2)               /*定義root函數,求近似根*/ 
  97.     float x,y,y1; 
  98.     y1=f(x1); 
  99.     do 
  100.     { 
  101.         x=xpoint(x1,x2); 
  102.         y=f(x); 
  103.         if(y*y1>0) 
  104.         { 
  105.             y1=y; 
  106.             x1=x; 
  107.         } 
  108.         else 
  109.         { 
  110.             x2=x; 
  111.         } 
  112.     }while(fabs(y)>=0.0001); 
  113.     return(x); 
  114.  
  115. void main()                                 /*主函數*/ 
  116.     float x1,x2,f1,f2,x; 
  117.     do 
  118.     { 
  119.         printf("input x1,x2:\n"); 
  120.         scanf("%f,%f",&x1,&x2); 
  121.         f1=f(x1); 
  122.         f2=f(x2); 
  123.     }while(f1*f2>=0); 
  124.     x=root(x1,x2); 
  125.     printf("A root of equation is %8.4f\n",x); 
  126.  
  127. 例題8.7 
  128. #include<stdio.h> 
  129. int age(int n)              /*求年齡段遞歸函數*/ 
  130.     int c; 
  131.     if(n==1) 
  132.     { 
  133.         c=10; 
  134.     } 
  135.     else 
  136.     { 
  137.         c=age(n-1)+2; 
  138.     } 
  139.     return(c); 
  140.  
  141. void main() 
  142.     printf("%d\n",age(5)); 
  143.  
  144. 例題8.8 
  145. #include<stdio.h> 
  146. void main() 
  147.     float fac(int n);                   /*對fac函數聲明*/ 
  148.     int n; 
  149.     float y; 
  150.     printf("input an integer number:"); /*輸入時儘量小一些*/ 
  151.     scanf("%d",&n); 
  152.     y=fac(n); 
  153.     printf("%d!=%10.0f\n",n,y); 
  154.  
  155. float fac(int n)                        /*定義fac函數*/ 
  156.     float f; 
  157.     if(n<0) 
  158.     { 
  159.         printf("n<0,dataerror!"); 
  160.     } 
  161.     else 
  162.     { 
  163.         if(n==0||n==1) 
  164.         { 
  165.             f=1; 
  166.         } 
  167.         else 
  168.         { 
  169.             f=fac(n-1)*n; 
  170.         } 
  171.     } 
  172.     return(f); 
  173.  
  174. 例題8.9 
  175. #include<stdio.h> 
  176. void main() 
  177.     void hanoi(int n,char one,char two,char three); /*hanoi函數聲明*/ 
  178.     int m; 
  179.     printf("input the number of diskes:"); 
  180.     scanf("%d",&m); 
  181.     printf("The step to moveing %d diskes;\n",m); 
  182.     hanoi(m,'A','B','C'); 
  183.  
  184. void hanoi(int n,char one,char two,char three)      /*定義hanoi函數*/ 
  185.     void move(char x,char y);                       /*move函數聲明*/ 
  186.     if(n==1) 
  187.     { 
  188.         move(one,three); 
  189.     } 
  190.     else 
  191.     { 
  192.         hanoi(n-1,one,three,two); 
  193.         move(one,three); 
  194.         hanoi(n-1,two,one,three); 
  195.     } 
  196.  
  197. void move(char x,char y)                            /*定義move函數*/ 
  198.     printf("%c——>%c\n",x,y); 
  199.  
  200. 例題8.10 
  201. #include<stdio.h> 
  202. void main() 
  203.     int large(int x,int y); 
  204.     int a[10],b[10],i,n=0,m=0,k=0; 
  205.     printf("enter array a:\n"); 
  206.     for(i=0;i<10;i++) 
  207.     { 
  208.         scanf("%d",&a[i]); 
  209.     } 
  210.     printf("\n"); 
  211.     printf("enter array b:\n"); 
  212.     for(i=0;i<10;i++) 
  213.     { 
  214.         scanf("%d",&b[i]); 
  215.     } 
  216.     printf("\n"); 
  217.     for(i=0;i<10;i++) 
  218.     { 
  219.         if(large(a[i],b[i])==1) 
  220.         { 
  221.             n=n+1; 
  222.         } 
  223.         else 
  224.         { 
  225.             if(large(a[i],b[i])==0) 
  226.             { 
  227.                 m=m+1; 
  228.             } 
  229.             else 
  230.             { 
  231.                 k=k+1; 
  232.             } 
  233.         } 
  234.     } 
  235.     printf("a[i]>b[i] %d times\na[i]=b[i] %d times\na[i]<b[i] %d times\n",n,m,k); 
  236.     if(n>k) 
  237.     { 
  238.         printf("array a is larger than array b\n"); 
  239.     } 
  240.     else 
  241.     { 
  242.         if(n<k) 
  243.         { 
  244.             printf("array a is smaller than b\n"); 
  245.         } 
  246.         else 
  247.         { 
  248.             printf("array a is equal to array b\n"); 
  249.         } 
  250.     } 
  251.  
  252. int large(int x,int y) 
  253.     int flag; 
  254.     if(x>y) 
  255.     { 
  256.         flag=1; 
  257.     } 
  258.     else if(x<y) 
  259.     { 
  260.         flag=-1; 
  261.     } 
  262.     else 
  263.     { 
  264.         flag=0; 
  265.     } 
  266.     return(flag); 
  267.  
  268. 例題8.11 
  269. #include<stdio.h> 
  270. void main() 
  271.     float average(float array[10]); 
  272.     float score[10],aver; 
  273.     int i; 
  274.     printf("input 10 scores:\n"); 
  275.     for(i=0;i<10;i++) 
  276.     { 
  277.         scanf("%f",&score[i]); 
  278.     } 
  279.     printf("\n"); 
  280.     aver=average(score); 
  281.     printf("average score is %5.2f\n",aver); 
  282.  
  283. float average(float array[10]) 
  284.     int i; 
  285.     float aver,sum=array[0]; 
  286.     for(i=1;i<10;i++) 
  287.     { 
  288.         sum=sum+array[i]; 
  289.     } 
  290.     aver=sum/10; 
  291.     return(aver); 
  292.  
  293. 例題8.12 
  294. #include<stdio.h> 
  295. void main() 
  296.     float average(float array[],int n); 
  297.     float score_1[5]={98.5,97,91.5,60,55}; 
  298.     float score_2[10]={67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5}; 
  299.     printf("the average of class A is %6.2f\n",average(score_1,5)); 
  300.     printf("the average of class B is %6.2f\n",average(score_2,10)); 
  301.  
  302. float average(float array[],int n) 
  303.     int i; 
  304.     float aver,sum=array[0]; 
  305.     for(i=1;i<n;i++) 
  306.     { 
  307.         sum=sum+array[i]; 
  308.     } 
  309.     aver=sum/n; 
  310.     return(aver); 
  311.  
  312. 例題8.13 
  313. #include<stdio.h> 
  314. void main() 
  315.     void sort(int array[],int n); 
  316.     int a[10],i; 
  317.     printf("enter the array\n"); 
  318.     for(i=0;i<10;i++) 
  319.     { 
  320.         scanf("%d",&a[i]); 
  321.     } 
  322.     sort(a,10); 
  323.     printf("the sorted array:\n"); 
  324.     for(i=0;i<10;i++) 
  325.     { 
  326.         printf("%5d",a[i]); 
  327.     } 
  328.     printf("\n"); 
  329.  
  330. void sort(int array[],int n) 
  331.     int i,j,k,t; 
  332.     for(i=0;i<n-1;i++) 
  333.     { 
  334.         k=i; 
  335.         for(j=i+1;j<n;j++) 
  336.         { 
  337.             if(array[j]<array[k]) 
  338.             { 
  339.                 k=j; 
  340.             } 
  341.         } 
  342.         t=array[k]; 
  343.         array[k]=array[i];array[i]=t; 
  344.     } 
  345.  
  346. 例題8.14 
  347. #include<stdio.h> 
  348. void main() 
  349.     int max_value(int array[][4]); 
  350.     int a[3][4]={{1,3,5,7},{2,4,6,8},{15,17,34,12}}; 
  351.     printf("max value is %d\n",max_value(a)); 
  352.  
  353. int max_value(int array[][4]) 
  354.     int i,j,max
  355.     max=array[0][0]; 
  356.     for(i=0;i<3;i++) 
  357.     { 
  358.         for(j=0;j<4;j++) 
  359.         { 
  360.             if(array[i][j]>max
  361.             { 
  362.                 max=array[i][j]; 
  363.             } 
  364.         } 
  365.     } 
  366.     return(max); 
  367.  
  368. 例題8.15 
  369. #include<stdio.h> 
  370. float Max=0,Min=0;  /*全局變量*/ 
  371. void main() 
  372.     float average(float array[],int n); 
  373.     float ave,score[10]; 
  374.     int i; 
  375.     for(i=0;i<10;i++) 
  376.     { 
  377.         scanf("%f",&score[i]); 
  378.     } 
  379.     ave=average(score,10); 
  380.     printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",Max,Min,ave); 
  381.  
  382. float average(float array[],int n) 
  383.     int i; 
  384.     float aver,sum=array[0]; 
  385.     Max=Min=array[0]; 
  386.     for(i=1;i<n;i++) 
  387.     { 
  388.         if(array[i]>Max
  389.         { 
  390.             Max=array[i]; 
  391.         } 
  392.         else if(array[i]<Min
  393.         { 
  394.             Min=array[i]; 
  395.         } 
  396.         sum=sum+array[i]; 
  397.     } 
  398.     aver=sum/n; 
  399.     return(aver); 
  400.  
  401. 例題8.16 
  402. #include<stdio.h> 
  403. int a=3,b=5; 
  404. void main() 
  405.     int max(int a,int b); 
  406.     int a=8; 
  407.     printf("%d\n",max(a,b)); 
  408.  
  409. int max(int a,int b) 
  410.     int c; 
  411.     c=a>b?a:b; 
  412.     return(c); 
  413.  
  414. 例題8.17 
  415. #include<stdio.h> 
  416. void main() 
  417.     int f(int a); 
  418.     int a=2,i; 
  419.     for(i=0;i<3;i++) 
  420.     { 
  421.         printf("%d ",f(a)); 
  422.     } 
  423.  
  424. int f(int a) 
  425.     auto int b=0; 
  426.     static int c=3; 
  427.     b=b+1; 
  428.     c=c+1; 
  429.     return(a+b+c); 
  430.  
  431. 例題8.18 
  432. #include<stdio.h> 
  433. void main() 
  434.     int fac(int n); 
  435.     int i; 
  436.     for(i=1;i<=5;i++) 
  437.     { 
  438.         printf("%d!=%d\n",i,fac(i)); 
  439.     } 
  440.  
  441. int fac(int n) 
  442.     static int f=1; 
  443.     f=f*n; 
  444.     return(f); 
  445.  
  446. 例題8.19 
  447. #include<stdio.h> 
  448. void main() 
  449.     long fac(long); 
  450.     long i,n; 
  451.     scanf("%ld",&n); 
  452.     for(i=1;i<=n;i++) 
  453.     { 
  454.         printf("%ld!=%ld\n",i,fac(i)); 
  455.     } 
  456.  
  457. long fac(long n) 
  458.     register long i,f=1;    /*寄存器變量*/ 
  459.     for(i=1;i<=n;i++) 
  460.     { 
  461.         f=f*i; 
  462.     } 
  463.     return(f); 
  464.  
  465. 例題8.20 
  466. #include<stdio.h> 
  467. void main() 
  468.     int max(int x,int y); 
  469.     extern A,B; 
  470.     printf("%d\n",max(A,B)); 
  471.  
  472. int A=13,B=-8; 
  473. int max(int x,int y) 
  474.     int z; 
  475.     z=x>y?x:y; 
  476.     return(z); 
  477.  
  478. 例題8.21 
  479. file1; 
  480. #include<stdio.h> 
  481. int A; 
  482. void main() 
  483.     int power(int); 
  484.     int b=3,c,d,m; 
  485.     printf("enter the number a and its power m:\n"); 
  486.     scanf("%d,%d",&A,&m); 
  487.     c=A*b; 
  488.     printf("%d*%d=%d\n",A,b,c); 
  489.     d=power(m); 
  490.     printf("%d**%d=%d\n",A,m,d); 
  491. file2: 
  492. extern A; 
  493. int power(int n) 
  494.     int i,y=1; 
  495.     for(i=1;i<=n;i++) 
  496.     { 
  497.         y*=A; 
  498.     } 
  499.     return(y); 
  500.  
  501. 例題8.22 
  502. file1: 
  503. #include<stdio.h> 
  504. void main() 
  505.     extern void enter_string(char str[]); 
  506.     extern void delete_string(char str[],char ch); 
  507.     extern void print_string(char str[]); 
  508.      
  509.     char c; 
  510.     char str[80]; 
  511.     enter_string(str); 
  512.     scanf("%c",&c); 
  513.     delete_string(str,c); 
  514.     print_string(str); 
  515. file2: 
  516. #include<stdio.h> 
  517. void enter_string(char str[80]) 
  518.     gets(str); 
  519. file3: 
  520. #include<stdio.h> 
  521. void delete_string(char str[],char ch) 
  522.     int i,j; 
  523.     for(i=j=0;str[i]!='\0';i++) 
  524.     { 
  525.         if(str[i]!=ch) 
  526.         { 
  527.             str[j++]=str[i]; 
  528.         } 
  529.     } 
  530.     str[j]='\0'
  531. file4: 
  532. #include<stdio.h> 
  533. void print_string(char str[]) 
  534.     printf("%s\n",str); 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章