以“百钱买百鸡”问题练习使用 C语言 goto 语句
生活随笔
收集整理的這篇文章主要介紹了
以“百钱买百鸡”问题练习使用 C语言 goto 语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
雖然goto語句由于會破壞程序的結構而不被推薦使用,但是當需要從多重循環跳出時就比較合理且高效,以此題為例可見goto語句的妙用
題目描述
百錢買百雞問題:公雞五文錢一只,母雞三文錢一只,小雞三只一文錢,用100文錢買100只雞,公雞、母雞、小雞各買多少只?
本程序要求解的問題是:給定一個正整數n,用n文錢買n只雞,問公雞、母雞、小雞各買多少只?
輸入
輸入一個正整數n(n<=100)。
輸出
如果有解,種組合占一行,包含公雞、母雞、小雞的個數,用正整數表示,每個數據占4列。公雞母雞小雞個數均大于等于0,如果有解則輸出第一個解,即母雞數最少的那個解。如果無解,輸出“No Answer”。
樣例輸入 Copy
100
樣例輸出 Copy
0 25 75
由于本題只輸出一個解,所以當判斷出一個后就需要跳出循環,當使用break時:
#include<stdio.h> #include<math.h>int main() {int i,j,flag=0;int n;scanf("%d",&n);for(i=0;i<=n/5;i++)//枚舉公雞個數 {for(j=0;j<=n/3;j++)//枚舉母雞個數 {if(i*5+j*3+(n-i-j)/3.0==n){flag=1;printf("%4d%4d%4d\n",i,j,n-i-j);break;} }if(flag==1)break;//此處使用了第二個break語句才能跳出外層循環 }if(flag==0){printf("No Answer");}return 0; }當使用了goto語句時,就可以直接跳出循環:
#include<stdio.h> #include<math.h>int main() {int i,j,flag=0;int n;scanf("%d",&n);for(i=0;i<=n/5;i++)//枚舉公雞個數 {for(j=0;j<=n/3;j++)//枚舉母雞個數 {if(i*5+j*3+(n-i-j)/3.0==n){flag=1;printf("%4d%4d%4d\n",i,j,n-i-j);goto prn; //直接跳出循環} }}prn : if(flag==0){printf("No Answer");}return 0; }總結
以上是生活随笔為你收集整理的以“百钱买百鸡”问题练习使用 C语言 goto 语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在有序数列里插入新元素(C语言)
- 下一篇: 详解HelloWorldBasic实例