判断与循环

判断与循环

1.判断

如果

if(条件成立)

{..........}

else

{...........}

关系运算

  • 计算两个值之间的关系,叫关系运算。

运算符意义
== 相等
!= 不等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于

关系运算的结果

  • 两个值的关系符合关系运算的预期时,关系运算的结果是整数1,否则为整数0。

  • printf("%d\n",5==3); 0

  • printf("%d\n",5>3); 1

  • printf("%d\n",5<=3); 0

优先级

  • 所有的关系运算符的优先级都比算术运算的低,但比赋值运算的高。

  • 算术运算>关系运算>赋值运算。

  • 7>=3+4 结果是1

  • int r=a>0

    • 判断是否相等的==和!=的优先级比其他的低,连续的关系运算是从左到右进行的。

    • 5>3==6>4 结果是1

    • 6>5>4 结果是0

    • a==b==6>0

/**/注释

  • 延续数行的注释,要用多行注释的格式来写。多行注释有一对字符序列"/*"开始,以"米/"结束。

  • 也可以用于一行内的注释。

  • 单行注释也可用//

 

2.循环

循环解决的事

  • 大于的判断,从高处往下走!

  • 小于的判断,从低处往上走!

#include<stdio.h>
int main()    
{
   int x=0;
   int n=1;
   printf("请输入一个4位数及以下的正整数\n");
   scanf("%d",&x);
   if(x>999)
       n=4;
   else
       if(x>99)
  {n=3;}
   else
       if(x>9)
  {n=2;}
   printf("您输入都是一个%d位数\n",n);
   return 0;
}

 

#include<stdio.h>
int main()
{
   int x=0;
   int n=0;
   printf("请输入任意一个正整数\n");
   scanf("%d",&x);
  while(x>0)
  {n++;
  x/=10;
  }
   printf("您输入都是一个%d位数\n",n);
   return 0;
}
/*int型最大整数是10位*/

while循环

while(x>0)

{x/=10

n++;}

if是一次性的,而while是可以反复多次循环的。

循环体内要有改变条件的机会。

  • 一个while循环的意思就是:当条件满足时,不断重复循环体内的语句。

  • 循环执行之前判断是否继续循环,所以有可能循环一次也没有被执行。

  • 条件成立是循环继续的条件。

 

do-while循环

  • 不管三七二十一,先做循环内的句子。

  • 在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环体的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环。

  • while结尾要有分号!!!!

do

{

循环体语句

}

while(循环条件);

 

  1. do-while:先执行循环,后判断条件。

  2. do-while至少执行一遍循环,然后再判断条件。

  3. while:先判断条件,后执行循环。

循环

 

#include<stdio.h>
int main()
{
   int x,n;
   printf("请输入任一正整数\n");
   scanf("%d",&x);
   do
  {x/=10;
   n++;
  }while(x>0);
   printf("%d",n);
       return 0;
}

 

for循环

  • 计算一个数n的阶乘

#include<stdio.h>
int main()
{
   int n;
   printf("请输入一个您想要计算其阶乘的数。");
   scanf("%d",&n) ;
   int fact=1;
   int i=1;
   for(i=1;i<=n;i++)
  {
      fact*=i;
  }
   printf("%d!=%d\n",n,fact);
   return 0;
}
  • i=1是初始动作。

  • i<=n是循环继续的条件。

  • i++是循环每一轮要做的动作。

 

for(初始动作;循环条件;每轮的动作){循环体}

  • for中的每一个表达式都可以省略,分号不能省略!

  • for(;条件;)==while(条件)

for = 对于

  • for(count=10;count>0;count--) {循环体}

  • 读成:"对于一开始的count=10,当count>0时,重复做循环体,每一轮循环在做完循环体内语句后,使得count--。"

  • if如果;while当;for对于。

小知识

  • 做求和的程序时,记录结果的变量应该初始化为0,而做求积的变量时,记录结果的变量应该初始化为1.

for==while

for(int i=1;i<=n;i++){
fact*=i;
}

==(等于)

int i=1;
while(i<=n){
   fact*=i;
   i++
}

tips for loops(循环)

  • 如果有固定次数,用for

  • 如果必须执行一次,用do-while。

  • 其他情况用while。

 

题目

1.时间换算

题目内容:

UTC是世界协调时,BJT是北京时间,世界时间与北京时间相差8小时,UTC时间相当于BJT减去8。现在,你的程序要读入一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。如1124表示11点24分,而905表示9点5分,36表示0点36分,7表示0点7分。

有效的输入范围是0到2359,即你的程序不可能从测试服务器读到0到2359以外的输入数据。

你的程序要输出这个时间对应的UTC时间,输出的格式和输入的相同,即输出一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

提醒:要小心跨日的换算。

 

输入格式:

一个整数,表示BJT的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

 

输出格式:

一个整数,表示UTC的时和分。整数的个位和十位表示分,百位和千位表示小时。如果小时小于10,则没有千位部分;如果小时是0,则没有百位部分;如果小时不是0而分小于10分,需要保留十位上的0;如果小时是0而分小于10分的,则不需要保留十位上的0。

 

输入样例:

803

 

输出样例:

3

代码如下:

#include<stdio.h>
int main()
{
int time=0;
int hour1=0,minute1=0;
int hour2=0;

printf("请输入一个范围是0到2359的整数。\n");  
scanf("%d",&time);                        //北京时间比世界时间大8小时。

if(time>2359)
printf("输入错误,请输入范围是0到2359的整数。");

else
{
{
minute1=time%100;

   if(minute1>59)
   printf("时间错误,输入的整数的十分位应小于6,请重新输入。");
   
   else
    {
  hour1=time/100;         //2359/100=23,808/100=8,59/100=0,9/100=0
  printf("您输入的是北京时间%d小时%d分钟\n",hour1,minute1);
    }
  }
if(time>800)
{
   hour2=hour1-8;
   printf("此时的世界时间是%d小时%d分钟\n",hour2,minute1);
}
else      //BJ730,SJ昨天2330
{
hour2=hour1+24-8;
   printf("此时的世界时间是昨天%d小时%d分钟\n",hour2,minute1);
}
}
return 0;
}

2.分队列

题目内容:

班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一 步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成 了一列,同学按身高从1到n编号,你能告诉我最后哪些编号的同学站在了第一列么?

 

输入格式:

输入一个正整数n,表示班级的人数。

 

输出格式:

按顺序输出所有在第一列的同学对应的编号,每两个编号之间用一个空格隔开,最后一个编号后面没有空格。

 

输入样例:

11

 

输出样例:

1 3 5 7 9 11

 

#include<stdio.h>
int main()
{
int n=0;
int i=1;
int people=0;

printf("请输入班级人数\n");
scanf("%d",&n);

for(people=0;i<=n;i++)
{
people=people+1;
if(people%2==1)
printf("%d ",people);
}
return 0;
}

 

 

 

 

 

 

 

 

 

posted @ 2021-03-09 17:00  大美China  阅读(64)  评论(0)    收藏  举报