橘味起司糖 发表于 2021-10-25 21:01:31

如何把下面的代码从只输出一组情况到输出全部情况呢?

#include<stdio.h>
int main(void)
{
        int flag,money,x,y,z;
        flag=1;
        for(x=100/5;(x>=0)&&(flag==1);x--){
                for(y=(100-x*5)/3;(y>=0)&&(flag==1);y--){
                        for(z=(100-x*5-y*3)*3;(z>=0)&&(flag==1);z--){
                          if((x+y+z==100)&&((x*5+y*3+z/3)==100)&&z%3==0){
                                  printf("x=%d,y=%d,z=%d\n",x,y,z);
                                  flag=0;
                          }
                        }
                }
        }
}
题目是公鸡5元一只,母鸡3元一只,小鸡1元3只,花100元,要买100只鸡

傻眼貓咪 发表于 2021-10-25 21:02:41

本帖最后由 傻眼貓咪 于 2021-10-25 21:16 编辑

#include <stdio.h>

int main()
{
    for(int i = 0; i <= 100; i++){
      for(int j = 0; j <= 100; j++){
            for(int k = 3; k <= 100; k += 3){
                if(i*5+j*3+(k/3) == 100 && i+j+k == 100){
                  printf("公鸡:%d只,母鸡:%d只,小鸡:%d只\n", i, j, k);
                }
            }
      }
    }
    return 0;
}公鸡:0只,母鸡:25只,小鸡:75只
公鸡:4只,母鸡:18只,小鸡:78只
公鸡:8只,母鸡:11只,小鸡:81只
公鸡:12只,母鸡:4只,小鸡:84只

jackz007 发表于 2021-10-25 21:12:10

#include <stdio.h>

main(void)
{
      int n , x , y , z                                                                         ;
      for(n = 0 , x = 0 ; x * 5 <= 100 ; x ++) {
                for(y = 0 ; y * 3 + x <= 100 ; y ++) {
                        z = 100 - x * 5 - y * 3                                                   ;
                        if(x + y + z * 3 == 100) {
                              n ++                                                            ;
                              printf("%3d : x = %2d , y = %2d , z = %2d\n" , n , x , y , z * 3) ;
                        }
                }
      }
}
      编译、运行实况:
I:\00.2021\.Exercise\00.C\百钱买百鸡>g++ -o x x.c

I:\00.2021\.Exercise\00.C\百钱买百鸡>x
1 : x =0 , y = 25 , z = 75
2 : x =4 , y = 18 , z = 78
3 : x =8 , y = 11 , z = 81
4 : x = 12 , y =4 , z = 84

I:\00.2021\.Exercise\00.C\百钱买百鸡>
      
页: [1]
查看完整版本: 如何把下面的代码从只输出一组情况到输出全部情况呢?