分支结构、循环结构

来源:互联网 发布:淘宝q币充错了 编辑:程序博客网 时间:2024/04/30 02:29

一.判断条件不能多过3个。嵌套不能多过3层。必须带上花括号{}。

二.分支结构中:

if.../if...else...用于条件判断。switch用于无规律的条件、情况匹配、等号判断。if...else if...else...情况匹配、条件判断都有。


if...:条件正确,执行if其后{}里的语句;条件错误,不执行{}里的语句。

if...else...:条件正确,执行if其后{}里的语句;条件错误,执行else其后{}里的语句。

if...else if...else:

switch(整形表达式)
{
   case 1:
   { 
      语句;
      break;
   }
   default:
   {
      语句;
      break;
   }  
}

三.循环结构

(1)while:条件为假时,跳出循环体;条件为真时,执行循环体。
while(条件)
{
循环体;
}
(2)do...while:最少执行一次循环体。条件为假时,跳出循环体;条件为真时,执行循环体。

do
{
循环体;
}
while(条件);

(3)for:执行顺序1234,1只执行1次。条件为假时,跳出循环体;条件为真时,执行循环体。
for(1;2条件;4)
{
3循环体;
}

(4)break:终止循环体,其后的代码都不用执行。continue:终止本次循环进入下次循环。return:返回函数值,跳出函数,结束多线程。
(5)while常用于某值是否存在、多个条件的时候。do...while常用于读取文件。for常用于知道次数。
(6)解题思路:先初始化变量和写出输出目标。列出一些好计的数,寻找规律(规律是写出来的,不是看出来的)或验证结果(类比)。列出数学方程(以一个未知数一个方程的形式),再转化成表达式。最后判断是否需要附件条件。
例1:1加到100
1+2+...+5
for(int i = 1;i <= 5;i++){}

例2:求个十百位的数

153 / 100 = 1              →百→               b = n / 100;

(153 - 100) / 10 = 5       →十→          s = (n - (b * 100)) / 10;

(153 - 100) % 10 = 3      →个→          g  = (n - (b * 100)) % 10;

例3:打印菱形 

  *   *** ***** ***   *  

  分上下两部分打印:由结构可知先打印" ",观察数据,共五列,利用行的自加自减与列的自加自减特性,确定条件。例如:自增与自减的和可能会是同一个数。

  

 

 

i * ""0 1 21 3 12 5 0     0 3 11 1 2     

  ""=3-i-1  *=(i*2)+1    

 

 

 

  ""=i+1  *=3-(2*i)

 

 

 

      for(i=0;i<3;i++){
   for(j=0;j<3-i-1;j++){   //j=2;j>i;j--
    printf(" "); }
   for(k=0;k<i*2+1;k++){
    printf("*"); }
        printf("\n");}
 
     for(i=0;i<2;i++){
   for(j=0;j<i+1;j++) {
    printf(" ");  }
   for(k=0;k<3-(2*i);k++){
    printf("*"); }
        printf("\n");}

  四.

    /*分支结构    //if    int money = 1000;    if(money >=1000)    {        printf("打八折\n");    }    //if...else...老师来且天气好    bool teacher = true;    bool sun = true;    if (teacher && sun) {        printf("class\n");    }    else    {        printf("no class to rest\n");    }        //if...else if...else...    //老师来或者天气好    if(teacher )    {        printf("class\n");    }    else if (sun)    {        printf("class\n");            }    else    {        printf("no class\n");            }    //1,3,5上课,2,4上机    int day = 5;    if(day <= 7)    {        if (day % 2 == 1) {            printf("上课\n");        }        else if (day % 2 == 0)        {            printf("上机\n");                    }        else        {            printf("自由活动\n");        }    }    else    {        printf("条件有误\n");    }        //1,3,5上课,2,4上机    day = 2;        switch (day) {        case 1:        case 3:        case 5:        {            printf("上课\n");            break;        }        case 2:        case 4:        {            printf("上机\n");            break;        }                    default:            break;    }     *///     车位号限行//     星期一:2、7//     星期二:3、8//     星期三:4、9//     星期四:5、0//     星期五:1、6     int number,weekday;     int flag = 0;     printf("请输入车位号和工作日,以逗号隔开\n");     scanf("%d,%d",&number,&weekday);     switch(number)     {     case 2 : case 7 :     if(weekday == 1)     {     flag=1;     }     break;     case 3 : case 8 :     if(weekday == 2)     {     flag=1;     }     break;     case 4 : case 9 :     if(weekday == 3)     {     flag=1;     }     break;     case 5 : case 0 :     if(weekday == 4)     {     flag=1;     }     break;     case 1 : case 6 :     if(weekday == 5)     {     flag=1;     }     break;     default:     printf("你输入的尾号有问题\n");     break;     }     if(flag == 1)     {     printf("对不起,你的车今天限行,请选择其他交通方式\n");     }     else     {     printf("你的车今天不限行,但建议坐公交\n");     }        /*~~循环结构~~
//1+...+10 //while int sum = 0; int i = 1; while (i <= 10) { sum += i; i++; } printf("sum = %d\n",sum); //do...while sum = 0; i = 1; do { sum += i; i++; } while (i <= 10); printf("sum = %d\n",sum); //for //10以内第一个偶数 int var = 0; for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { var = i; break; } printf("-------------\n"); } printf("var = %d\n",var); //10以内的奇数 for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { continue; } else { printf("%d,",i); } }
*/

 (5)

//用分支结构实现输出三个数中的最大值。    int a ,b ,c;    printf("请输入三个整数,以逗号隔开");    scanf("%d,%d,%d",&a,&b,&c);    if(a < b)    {        a = b;    }    if(a < c)    {        a = c;    }    printf("max = %d\n",a);
/*第二种方法
  
  

int a = 0,b = 0,c = 0,max = 0;
  printf("请输入三个整数,以逗号隔开");
    scanf(
"%d,%d,%d",&a,&b,&c);
if(a > b)
    {
     max = a;   
    }
   else
    {
     if(b > c)
      {
        max = b;
      }
     else
      {
        max = c;
      }
  
    }
   printf("max = %d",max);
*/
//计算1-100间所有奇数的和 int i = 1,sum = 0; for (;i <= 100;i++) { if(i % 2 == 0) { continue; } else { sum +=i; } } printf("sum = %d\n",sum); //编程求1到100之间能被3整除的数。 i = 1; for (; i <= 100; i++) { if (i % 3 != 0) { continue; } else { printf("%d,",i); } } //从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张。(输出面额最大值:比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8) double count = 0.0,lastmoney = 0.0; int yb = 0,ws = 0,sy = 0,wy = 0,ey = 0,yy = 0,wj = 0,yj = 0,wf = 0,yf = 0; scanf("%lf",&count); lastmoney = count; yb= (int)(count / 100); count = count - (100 * yb); ws = (int)(count / 50); count = count - (50 * ws); sy = (int)(count / 10); count = count - (10 * sy); wy = (int)(count / 5); count = count - (5 * wy); ey = (int)(count / 2); count = count - (2 * ey); yy = (int)(count / 1); count = count - (1 * yy); wj = (int)(count / 0.5); count = count - (0.5 * wj); yj = (int)(count / 0.1); count = count - (0.1 * yj); wf = (int)(count / 0.05); count = count - (0.05 * wf); yf = (int)(count / 0.01); count = count - (0.01 * yf); printf("%lf = yb=%d-ws=%d-sy%d-wy%d-ey=%d-yy=%d-wj=%d-yj=%d-wf=%d-yf=%d\n",lastmoney,yb,ws,sy,wy,ey,yy,wj,yj,wf,yf); // printf("%d\n",(int)168.92 / 100); // printf("%d\n",(int)(168.92 -100) / 50); // printf("%d\n",(int)(168.92-100-50)/10); // printf("%d\n",(int)(168.92-100-50-10)/5); //已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。(a > 0 && c > 0)// int a = 0,b = 0,c = 0;// for (a = 1; a <= 9 ; a++)// {// for (b = 0; b <= 9; b++)// {// for (c = 1; c <= 9; c++)// {// if ((a * 100 + b * 10 + c )+ (c * 100 + b * 10 + a) == 1333 )// {// printf("%d-%d-%d\n",a,b,c);// }// }// }// }

 

 

 

 

0 0
原创粉丝点击