C語言程序設計-筆記2-分支結構


C語言程序設計-筆記2-分支結構

例3-1  簡單的猜數游戲。輸入你所猜的整數(假定1-100),與計算機產生的被猜數比較,若相等,顯示猜中;若不等,顯示與被猜數的大小關系。

/*簡單的猜數游戲*/

#include<stdio.h>

int main(void)

{

      int mynumber=38;         //計算機指定被猜的數

      int yournumber;

     

      printf("Input your number:");

      scanf("%d",&yournumber);

      if(yournumber==mynumber)

      {

           printf("Good Guess!\n");

      }   

      else if(yournumber>mynumber) 

      {

           printf("Too big!\n");

      }

      else

      {

           printf("Too small!\n");

      }

     

      return 0;

}

 

例3-2  奇偶分家。輸入一個正整數n,再輸入n個非負整數,統計奇數和偶數各有多少個?

#include<stdio.h>

int main(void)

{

      int count_odd=0,count_even=0;

      int i,n,number;

     

      printf("Enter n:");

      scanf("%d",&n);

      printf("Enter %d numbers:",n);

      for(i=1;i<=n;i++)

      {

           scanf("%d",&number);

           if(number%2==0)

           {

                 count_even++;

           }

           else

           {

                 count_odd++;

           }

      }   

           printf("odd:%d,even:%d\n",count_odd,count_even);

          

           return 0;

     

}

 

例3-3  統計指定數量學生的平均成績與不及格人數。輸入一個非負整數n,再輸入n個學生的成績,計算平均分,並統計不及格成績的學生人數。

#include<stdio.h>

int main(void)

{

      int count,i,n;

      double score,total;

     

      printf("Enter n:");

      scanf("%d",&n);

      total=0;

      count=0;

      for(i=1;i<=n;i++)

      {

           printf("Enter score #%d:",i);

           scanf("%lf",&score);

           total=total+score;

           if(score<60)

           {

                 count++;

           }

      }

      if(n!=0)

      {

           printf("Average=%.2f\n",total/n);

      }

      else

      {

           printf("Average=%.2f\n",0.0);

      }

      printf("Number of failures=%d\n",count);

     

      return 0;

}

 

例3-4  分段計算居民水費。繼續討論例2-4中提出的分段計算水費的問題,雖然實際生活中不會出現月用水量x小於0的情況,但程序運行時如果不慎輸入一個負數,水費計算將會出錯。為了完善分段計算水費的程序,現將居民應交水費y(元)與月用水量x(噸)的函數關系式修正如下,並編程實現。

y=f(x)=

#include<stdio.h>

int main(void)

{

      double x,y;  //x--shuiliang  y--shuifei

     

      printf("Enter x:");

      scanf("%lf",&x);

      if(x<0)

      {

           y=0;

      }

      else if(x<=15)

      {

           y=4*x/3;

      }

      else

      {

           y=2.5*x-10.5;

      }

      printf("f(%.2f)=%.2f\n",x,y);

     

      return 0;

}

 

例3-5  求解簡單的四則運算表達式。輸入一個形如“操作數 運算符 操作數“的四則運算表達式,輸出運算結果,要求對除數為0的情況作特別處理。

/*求解簡單的四則運算表達式*/

#include<stdio.h>

int main(void)

{

      double value1,value2;

      char op;

     

      printf("Type in an expression:");

      scanf("%lf%c%lf",&value1,&op,&value2);

      if(op=='+')

      {

           printf("%.2f\n",value1+value2);

      }

      else if(op=='-')

      {

           printf("%.2f\n",value1-value2);

      }

      else if(op=='*')

      {

           printf("%.2f\n",value1*value2);

      }

      else if(op=='/')

      {

           if(value2!=0)

           {

                 printf("%.2f\n",value1/value2);  

           }

           else

           {

                 printf("Divisor can not be 0!\n");

           }

      }

      else

      {

           printf("Unknown operator!\n");

      }

     

      return 0;

     

}

 

例3-char 輸入8個字符,然后將這些字符輸出,輸出時在字符之間加一個減號,首尾沒有。

#include<stdio.h>

int main(void)

{

      char ch;

      int first=1,k;

      printf("Enter 8 characters:");

      for(k=1;k<=8;k++)

      {

           ch=getchar();

           if(first==1)

           {

                 putchar(ch);

                 first=0;

           }

           else

           {

                 putchar('-');

                 putchar(ch);

           }

      }

     

      return 0;

}

 

例3-6   寫出滿足下列條件的C語言表達式。

1)     Ch是空格或者回車。

2)     year是閏年,即year能被4整除但不能被100整除,或year能被400整除。

解答:

1)     ch==’ ‘ || ch==’\n’;

2)     year%4==0 && year%100!=0 || year%400==0;

 

例3-7  統計英文字母和數字字符。輸入一個正整數n,再輸入n個字符,統計其中英文字母、數字字符和其他字符的個數。

#include<stdio.h>

int main(void)

{

      int digit,letter,other,i,n;

      char ch;

     

      digit=letter=other=0;

      printf("Enter n:");

      scanf("%d",&n);

      getchar();

      printf("Enter %d characters:",n);

      for(i=1;i<=n;i++)

      {

           ch=getchar();

           if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))

           {

                 letter++;

           }

           else if(ch>='0'&&ch<='9')

           {

                 digit++;

           }

           else

           {

                 other++;

           }

      }

     

      printf("letter=%d,digit=%d,other=%d\n",letter,digit,other);

     

      return 0;

}

 

例3-8  查詢自動售貨機中商品的價格。假設自動售貨機出售4種商品:薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可樂(cola),售價分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯示以下菜單(編號和選項),用戶可以連續查詢商品的價格,當查詢次數超過5次時,自動退出查詢;不到5次時,用戶可以選擇退出。當用戶輸入編號1-4,顯示相應商品的價格(保留1位小數);輸入0,退出查詢;輸入其他編號,顯示價格為0。

[1] Select crisps

[2] Select popcorn

[3] Select chocolate

[4] Select cola

[5] Exit

 

#include<stdio.h>

int main(void)

{

      int choice,i;

      double price;

     

      printf("[1] Select crisps\n");

      printf("[2] Select popcorn\n");

      printf("[3] Select chocolate\n");

      printf("[4] Select cola\n");

      printf("[0] exit\n");

      for(i=1;i<=5;i++)

      {

           printf("Enter choice:");

           scanf("%d",&choice);

           if(choice==0)

           {

                 break;

           }

           switch(choice)

           {

                 case 1:price=3.0;break;

                 case 2:price=2.5;break;

                 case 3:price=4.0;break;

                 case 4:price=3.5;break;

                 default:price=0.0;break;

           }

          

          

                

           printf("price=%0.1f\n",price);    

          

      }

      printf("Thanks\n");

      return 0;

}

 

例3-9  兩個數的簡單計算器。編寫一個簡單計算器程序,可根據輸入的運算符,對兩個整數進行加、減、乘、除和求余運算,請對除數為0的情況作特別處理。要求使用switch語句編寫。

#include<stdio.h>

int main(void)

{

      int value1,value2;

      char op;

     

      printf("Type in an expression:");

      scanf("%d%c%d",&value1,&op,&value2);

      switch(op)

      {

           case '+':

                 printf("=%d\n",value1+value2);

                 break;

           case '-':

                 printf("=%d\n",value1-value2);

                 break;  

           case '*':

                 printf("=%d\n",value1*value2);

                 break;  

           case '/':

                 if(value2!=0)

                 {

                      printf("=%d\n",value1/value2);  

                 }

                 else

                 {

                      printf("Divisor can not be 0!\n");

                 }

                 break;  

           case '%':

                 if(value2!=0)

                 {

                      printf("=%d\n",value1%value2);

                 }

                 else

                 {

                      printf("Divisor can not be 0!\n");

                 }

                 break;  

           default:

                 printf("Unknown operator\n");

                 break;  

      }

     

      return 0;

}

 

例3-10  輸入一個正整數n,再輸入n個字符,分別統計出其中空格或回車、數字字符和其他字符的個數。要求使用switch語句編寫。

#include<stdio.h>

int main(void)

{

      int blank,digit,i,n,other;

      char ch;

     

      blank=digit=other=0;

      printf("Enter n:");

      scanf("%d",&n);

      getchar();

      printf("Enter %d characters:",n);

      for(i=1;i<=n;i++)

      {

           ch=getchar();

           switch(ch)

           {

                 case ' ':

                 case '\n':

                      blank++;

                      break;

                 case '0':

                 case '1':

                 case '2':

                 case '3':

                 case '4':

                 case '5':

                 case '6':

                 case '7':

                 case '8':

                 case '9':

                      digit++;

                      break;

                 default:

                      other++;

                      break;

                           

           }

      }

      printf("blank=%d,digit=%d,other=%d\n",blank,digit,other);

     

      return 0;

}

 

例3-11 改寫下列if語句,使else和第一個if配對。

if(x<2)

      if(x<1)  y=x+1;

      else  y=x+2;

解:

1)     使用大括號

if(x<2){

      if(x<1)  y=x+1;}

      else  y=x+2;

 

2)     加else

if(x<2)

      if(x<1)  y=x+1;

      else;

      else  y=x+2;

 

 

 

 

 

參考資料

C語言程序設計/何欽銘,顏暉主編.---4版.---北京:高等教育出版社,2020.9

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM