鱼C论坛

 找回密码
 立即注册
查看: 2574|回复: 10

新手求助,求画个程序流程图

[复制链接]
发表于 2016-7-8 16:02:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 diyxx 于 2016-7-9 15:43 编辑

新手求助,求画个程序流程图

这两个题目让我一脸懵逼。主要遇到这样的问题根本不知道如何去思考解决,

!求画出问题思路!
QQ截图20160708153408.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-8 18:09:11 | 显示全部楼层
作业就要自己动脑筋,别伸手。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 02:40:33 | 显示全部楼层
本帖最后由 人造人 于 2016-7-9 02:46 编辑

这题目有点意思,我把2个都写完了,初步验证没有问题,如果发现问题,欢迎提出^_^
第一个比较简单
第二个我不是很理解题目(我按照自己的理解写的)
嗯...注释吗,太难写了^_^,几乎没有什么注释,如果看不懂,提出来
第一个
  1. #include <stdio.h>
  2. #include <math.h>

  3. #define NUM_MIN 100
  4. #define NUM_MAX 999

  5. int narcissus(int num)
  6. {
  7.         int ge_wei, shi_wei, bai_wei;
  8.        
  9.         if(num < NUM_MIN || num > NUM_MAX)
  10.         {
  11.                 return 0;
  12.         }
  13.        
  14.         ge_wei = num % 10;
  15.         shi_wei = num / 10 % 10;
  16.         bai_wei = num /100 % 10;
  17.        
  18.         if( num == (int)(pow(bai_wei, 3) + pow(shi_wei, 3) + pow(ge_wei, 3)) )
  19.         {
  20.                 return 1;
  21.         }
  22.        
  23.         return 0;
  24. }

  25. int main(void)
  26. {
  27.         int i;
  28.        
  29.         for(i = NUM_MIN; i <= NUM_MAX; i++)
  30.         {
  31.                 if(narcissus(i))
  32.                 {
  33.                         printf("%d\n", i);
  34.                 }
  35.         }
  36.        
  37.         return 0;
  38. }
复制代码


第二个
  1. #include <stdio.h>

  2. #define red 1
  3. #define yellow 2
  4. #define blue 3

  5. #define BALL_TOTAL 12 //一共有12个球
  6. #define ONCE_BALL 8 // 一次摸8个球

  7. void change_p(int p[]);
  8. void my_printf(int arr[], int p[]);

  9. int main(void)
  10. {
  11.         int arr[BALL_TOTAL] = {red, red, red, yellow, yellow, yellow, blue, blue, blue,
  12.                 blue, blue, blue
  13.         };
  14.         int p[ONCE_BALL] = {0, 1, 2, 3, 4, 5, 6, 7};
  15.        
  16.         while( !(p[0] > BALL_TOTAL - ONCE_BALL) )
  17.         {
  18.                 printf("%d, %d, %d, %d, %d, %d, %d, %d\n", p[0], p[1], p[2], p[3], p[4],\
  19.                         p[5], p[6], p[7]); // 这个输出是调试用的,为了看起来方便,就留下了
  20.        
  21.         my_printf(arr, p);
  22.                        
  23.                 change_p(p);
  24.         }
  25.        
  26.        
  27.         return 0;
  28. }

  29. void my_printf(int arr[], int p[])
  30. {
  31.         int i = 0;
  32.         char *str[] = {"红", "黄", "蓝"};
  33.        
  34.         while(i < ONCE_BALL)
  35.         {
  36.                 switch(arr[ p[i] ])
  37.                 {
  38.                         case red:
  39.                                 printf("%s,", str[0]);
  40.                                 break;
  41.                                
  42.                         case yellow:
  43.                                 printf("%s,", str[1]);
  44.                                 break;
  45.                                
  46.                         case blue:
  47.                                 printf("%s,", str[2]);
  48.                                 break;
  49.                        
  50.                 default:
  51.                        
  52.                         while(1);
  53.                 }
  54.                
  55.                 i++;
  56.         }
  57.         printf("\n");
  58. }

  59. void reset_p_i_end(int p[], int i)
  60. {
  61.         while( !(i + 1 > ONCE_BALL - 1) )
  62.         {
  63.                 p[i + 1] = p[i] + 1;

  64.                 i++;
  65.         }
  66. }

  67. void change_p(int p[])
  68. {
  69.         int i = ONCE_BALL - 1;
  70.        
  71.         while(i >= 0)
  72.         {
  73.                 p[i]++;
  74.                 reset_p_i_end(p, i); //复位i之后的所有值
  75.                 if( !(p[i] > (BALL_TOTAL - 1) - ( ONCE_BALL - (i + 1) )) )
  76.                 {
  77.                         return;
  78.                 }

  79.                 i--;
  80.         }
  81. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 07:40:06 | 显示全部楼层
本帖最后由 SixPy 于 2016-7-9 07:44 编辑

三色球
  1. #三色球

  2. 上限={'红':3,'黄':3,'绿':6,'个数':8}
  3. 颜色搭配={'红':0,'黄':0,'绿':0}
  4. r=range(4)
  5. for 红 in r:
  6.     颜色搭配['红']=红
  7.     for 黄 in r:
  8.         颜色搭配['黄']=黄
  9.         绿 = 上限['个数'] - (红 + 黄)
  10.         if 绿 <= 上限['绿']:
  11.             颜色搭配['绿']=绿
  12.             print(颜色搭配)            
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 09:31:29 | 显示全部楼层
搜狗截图20160709092905.png
第一个题是这样的,基本就是把题目描述的东西直接写出来。程序实现就很简单了吧。
第二个题目也并不难,自己思考一下,完全可以想出来。
在你自己动手完成题目之前,不要看其他答主的答案,要不然的编程能力很难提高。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-9 10:51:31 From FishC Mobile | 显示全部楼层
shuofxz 发表于 2016-7-9 09:31
第一个题是这样的,基本就是把题目描述的东西直接写出来。程序实现就很简单了吧。
第二个题目也并不难, ...

谢谢。我看来不适合这个对我来说好难
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 11:15:06 | 显示全部楼层
diyxx 发表于 2016-7-9 10:51
谢谢。我看来不适合这个对我来说好难

编程是需要想象力的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 11:30:38 | 显示全部楼层
人造人 发表于 2016-7-9 02:40
这题目有点意思,我把2个都写完了,初步验证没有问题,如果发现问题,欢迎提出^_^
第一个比较简单
第二个 ...

原来是Python 啊,抱歉,没有看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 11:37:23 | 显示全部楼层
人造人 发表于 2016-7-9 11:30
原来是Python 啊,抱歉,没有看到

C 也不错啊~
算法还需精练些~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 11:39:41 | 显示全部楼层
SixPy 发表于 2016-7-9 11:37
C 也不错啊~
算法还需精练些~

哦,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-7-9 11:56:56 | 显示全部楼层
diyxx 发表于 2016-7-9 10:51
谢谢。我看来不适合这个对我来说好难

你是刚入门编程吗?初始阶段的一些题可能是对数学逻辑方面的要求比较高。一开始不会没关系慢慢来,数学逻辑方面的能力也是要慢慢培养的,即便以后不做编程,在其他领域也会有很大的作用的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 22:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表