枚举—for循环

  • Post author:
  • Post category:其他


枚举

四重循环

#include<stdio.h>
int main()
{
      int a,b,c,d,i;
      scanf("%d",&i);
      for(d=1;d<=i;d++)
      for(a=2;a<=100;a++)
      for(b=a;b<=100;b++)
      for(c=b;c<=100;c++)
      if(d*d*d==a*a*a+b*b*b+c*c*c)
    printf("Cube = %d, Triple = (%d,%d,%d)\n",d,a,b,c);
    return 0;
}

外层和内层for循环嵌套

#include <stdio.h>
int main(){
    int i, j;
    for(i=1; i<=9; i++){  //外层for循环
        for(j=1; j<=i; j++){  //内层for循环
            printf("%d*%d=%-2d  ", i, j, i*j);
        }
        printf("\n");
    }
    return 0;
}
每一次外层循环执行一遍,内层循环需要i次;

输出结果:
1*1=1   
2*1=2   2*2=4   
3*1=3   3*2=6   3*3=9   
4*1=4   4*2=8   4*3=12  4*4=16  
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  
Program ended with exit code: 0
#include <stdio.h>
int main(){
      int a[4];
      for(int i=0;i<4;i++) a[i]=i;
          printf("%d\n",a[3]);
    return 0;
}
输出:3
如果是a[2],输出是2#include <stdio.h>
#define NUM 100
int main()
{
      int a[NUM];
      for(int i = 0;i < NUM; ++i) a[i]=i;
      for(int i = NUM-1;i >= 0; --i) printf("%d ",a[i]);
    return 0;
}
输出结果为:
99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

解释一下for()后为什么直接加分号:

直接在for后的括号外加分号是因为只做循环,做了循环后,就直接蹦到下一循环了,

如果是数组for(int i=0;i<4;i++); a[i]=i;
最后的结果只有a[3]=3;

人有体力、情商、智商的高峰日子,它们分别每隔 23天、28天和33天出现一次。对于每个人,我们想 知道何时三个高峰落在同一天。给定三个高峰出现 的日子p,e和i(不一定是第一次高峰出现的日子), 再给定另一个指定的日子d,你的任务是输出日子d 之后,下一次三个高峰落在同一天的日子(用距离d 的天数表示)。例如:给定日子为10,下次出现三 个高峰同一天的日子是12,则输出2。

 输入

输入四个整数:p, e, i和d。 p, e, i分别表示体力、情感和智力 高峰出现的日子。d是给定的日子,可能小于p, e或 i。所有给 定日子是非负的并且小于或等于365,所求的日子小于或等于 21252。

 输出

从给定日子起,下一次三个高峰同一天的日子(距离给定日子

的天数)。

三层for循环
#include <stdio.h>
int main()
{
      int p,e,i,d,m,caseNo=0;
      while(scanf("%d %d %d %d",&p,&e,&i,&d)&& p!=-1 && e!=-1 && i!=-1 && d!=-1)
      {
            caseNo++;
            int k;
            for(k=d+1;(k-p)%23;k++);
            for(;(k-e)%28;k+=23);
            for(;(k-i)%33;k+=23*28);
            {
                  m=k-d;
                  printf("case%d the next triple peak occurs in %d(%d-%d)days.\n",caseNo,m,k,d);
            
          }
      }
    return 0;
}
输出结果:
5 20 34 325
case1 the next triple peak occurs in 19575(19900-325)days.



版权声明:本文为hellobettershero原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。