c语言循环结构知识点总结,c语言分支结构和循环结构

  c语言循环结构知识点总结,c语言分支结构和循环结构

  在的第一篇博文中

  以下是我在哔哩哔哩学习C语言循环和分支模块的一些笔记:

  我们通过一些代码进行分析:

  一、分行声明:

  如果

  转换

  示例1:

  #包含stdio.h

  int main()

  {

  int a=0;

  int b=1;

  如果(a==1)

  {

  如果(b==1)

  Printf(谢谢\ n );

  其他

  Printf(不客气\ n );

  }

  返回0;

  }

  我们可以看到例1中这段代码的输出结果是什么都没有,那么为什么不输出“不客气”呢?

  因为我们的else是和最近的if匹配的,虽然上面的else是和第一个if对齐的,实际上计算机最终会自动把这个else和第二个if对齐。如果想让这个else和第一个If匹配,可以加一对{},框起来。如实施例2所示:

  示例2:

  #包含stdio.h

  int main()

  {

  int a=0;

  int b=1;

  如果(a==1)

  {

  如果(b==1)

  Printf(谢谢\ n );

  }

  其他

  Printf(不客气\ n );

  返回0;

  }

  If可用于单分支语句或多分支语句。以下示例3和4都是正确的:

  示例3:

  # define _ CRT _ SECURE _ NO _ WARNINGS 1

  #包含stdio.h

  int main()

  {

  int t=0;

  Printf(请输入当前温度:\ n );

  scanf(%d ,

  如果(t 15)

  printf( cold \ n );

  其他

  {

  如果(t=15 t 22)

  printf( cool \ n );

  else if (t=22 t 28)

  Printf(微热\ n );

  else if (t=28 t 36)

  Printf(好热\ n );

  其他

  Printf(天热\ n );

  }

  返回0;

  }例4:

  # define _ CRT _ SECURE _ NO _ WARNINGS 1

  #包含stdio.h

  int main()

  {

  int t=0;

  Printf(请输入当前温度:\ n );

  scanf(%d ,

  如果(t 15)

  printf( cold \ n );

  else if (t=15 t 22)

  printf( cool \ n );

  else if (t=22 t 28)

  Printf(微热\ n );

  else if (t=28 t 36)

  Printf(好热\ n );

  其他

  Printf(天热\ n );

  返回0;

  }

  示例5:

  int main()

  {

  int month=0;

  scanf(%d ,月);

  开关(月)

  {

  案例1:

  printf(一月\ n );

  案例二:

  printf( Febuary \ n );

  案例三:

  printf( March \ n );

  案例4:

  printf( April \ n );

  案例5:

  printf( May \ n );

  案例6:

  printf( June \ n );

  案例7:

  printf( July \ n );

  案例8:

  printf( August \ n );

  案例9:

  printf(九月\ n );

  案例10:

  printf(十月\ n );

  案例11:

  printf(十一月\ n );

  案例12:

  printf( December \ n );

  默认值:

  Printf(输入错误\ n );

  }

  返回0;

  }

  如例5所示,如果我输入一个2,我就从例2开始进入循环,依次输出例2之后的数据,但如果我在例2之后加上break,结果就不一样了,如例6所示。

  示例6:

  int main()

  {

  int month=0;

  scanf(%d ,月);

  开关(月)

  {

  案例1:

  printf(一月\ n );

  打破;

  案例二:

  printf( Febuary \ n );

  打破;

  案例三:

  printf( March \ n );

  打破;

  案例4:

  printf( April \ n );

  打破;

  案例5:

  printf( May \ n );

  打破;

  案例6:

  printf( June \ n );

  打破;

  案例7:

  printf( July \ n );

  打破;

  案例8:

  printf( August \ n );

  打破;

  案例9:

  printf(九月\ n );

  打破;

  案例10:

  printf(十月\ n );

  打破;

  案例11:

  printf(十一月\ n );

  打破;

  案例12:

  printf( December \ n );

  打破;

  默认值:

  Printf(输入错误\ n );

  打破;

  }

  返回0;

  }

  如示例6所示,在每个事例中添加break后,只输出当前内容。但是,不必在每个案例之后添加break,应该根据需求来决定,如示例7所示。

  示例7:

  int main()

  {

  int month=0;

  scanf(%d ,月);

  开关(月)

  {

  案例12:

  案例1:

  案例二:

  printf( winter \ n );

  打破;

  案例三:

  案例4:

  案例5:

  printf( Spring \ n );

  打破;

  案例6:

  案例7:

  案例8:

  printf( summer \ n );

  打破;

  案例9:

  案例10:

  案例11:

  Printf(秋\ n );

  打破;

  默认值:

  Printf(输入错误\ n );

  打破;

  }

  返回0;

  }

  像例7这样的代码可以更直观的看到你的代码想要表达的意思。

  注意事项:

  1.switch()case()语句只能是整数常量(char字符类型对应的ASCII值也是整数)

  2.switch语句可以嵌套,如示例8所示:

  实施例8:

  int main()

  {

  int a=1;

  int b=2;

  开关(b) //从案例2进入

  {

  案例一:a;

  案例二:b;//此时,b=3进入情况3

  案例三:

  开关(b) //从案例3进入

  {

  案例一:b;

  案例二:a;

  案例三:a;b;打破;//a=2,b=4,然后跳出循环,跳到情况4

  }

  案例四:b;//b=5跳出循环

  默认值:

  打破;

  }

  printf(%d,%d ,a,b);//a=2,b=5

  返回0;

  }二。循环语句:

  正在…

  为

  做什么

  示例9:

  int main()

  {

  int I=0;

  while (i=10)

  {

  如果(i==5)

  继续;

  printf(%d\n ,I);

  我;

  }

  返回0;循环,等到i=5,continue从i=5开始一直循环,I没有机会改变。

  实施例10:

  int main()

  {

  int I=0;//初始化

  While (i=10) //判断

  {

  我;//调整

  如果(i==5)

  继续;

  printf(%d\n ,I);

  }

  返回0;

  }当I放在前面,i=5在I后面时,i=5不输出结果(即跳过i=5的循环结果),继续让i=5进入循环,I=6,继续循环,直到I=10。

  所以break语句用来跳出循环,continue语句用来跳过一个循环,即continue之后的语句不执行,而是跳转到while的判断部分。

  实施例11:

  int main()

  {

  int I=0;

  //初始化;判断;调整

  for(I=1;i=10我)

  {

  如果(i==5)

  继续;

  printf(%d ,I);

  }

  返回0;

  }

  for循环的第二项是判断条件。判断条件是否为真,取决于这个循环能否执行。如实施例12所示。

  实施例12:

  int main()

  {

  int I=0;

  int k=0;

  for (i=0,k=0;k=0;我,k)

  k;

  返回0;

  }

  如你所见,我们的结果是空的。原因是在for循环的判断条件中,k=0,即k为假,所以循环无法进行。而当k=非0时,就会进入无限循环。因此,当循环条件已知时,for循环是适用的。

  实施例13:

  int main()

  {

  int I=1;

  做

  {

  如果(i==5)

  继续;

  printf(%d ,I);

  我;

  }

  while(I=10);

  返回0;

  }//做的区别.while语句和while语句是do.while语句会无条件执行一次然后判断循环条件是否可以继续,而while语句在循环条件不成立的情况下不会执行一次。

  三。goto语句:

  实施例14:

  #包含字符串. h

  int main()

  {

  char input[20]=0;

  系统(关闭-s-t60 );//执行系统命令

  再次重申:

  Printf(电脑将在60秒后关机,请输入:如果你得到一个好的提议,你可以取消关机\ n请输入

  scanf(%s ,输入);

  If (strcmp(input, get a good offer)==0)//strcmp()用于比较两个字符串

  {

  系统(“关断-a”);

  }

  其他

  {

  再次转到;

  }

  返回0;

  }可以看出,goto语句也是用来跳出循环的,但与break不同的是,goto语句可以跳出如图14.1所示的多级嵌套循环,也可以跳到任何地方。

  图14.1

  以下是一些练习的详细说明:

  问题1:判断一个数是否为奇数,输出1到100的奇数。

  # define _ CRT _ SECURE _ NO _ WARNINGS 1

  #包含stdio.h

  int main()

  {

  for(int I=1;i=100我)

  {

  if(i % 2==1)

  {

  Printf(%d是奇数\n ,I);

  }

  }

  返回0;

  }问题二:算1!2!10!

  int main()

  {

  int n=10

  int Jie=1;

  int sum=0;

  for(int I=1;我我)

  {

  Jie=Jie * I;

  sum=sum杰;

  }

  printf(%d ,sum);

  返回0;

  }问题3:在有序数组中求一个特定的数N

  方法:

  int main()

  {

  int a[]={ 0,1,2,3,4,5,6,7,8,9 };

  int b=6;

  int I;

  int s=sizeof(a)/sizeof(a[0]);

  for(I=0;我我)

  {

  if (b==a[i])

  {

  Printf (found,下标:%d\n ,I);

  打破;

  }

  }

  如果(i==s)

  Printf(未找到\ n );

  返回0;

  }方法:用二分法开始搜索(效率更高)

  int main()

  {

  int a[]={ 0,1,2,3,4,5,6,7,8,9,10 };

  int b=6;

  int I;

  int s=sizeof(a)/sizeof(a[0]);

  int L=0;//左下标

  int R=s-1;//元素数量-1

  while (L=R)

  {

  int m=(L R)/2;

  如果(a[m] b)

  {

  r=m-1;

  }

  else if (a[m] b)

  {

  l=m ^ 1;

  }

  其他

  {

  Printf (found,下标:%d\n ,m);

  打破;

  }

  If (L R)//超出范围

  {

  Printf(未找到\ n );

  }

  返回0;

  }

  }二分法原理说明图:

  问题4:演示多个字符从两端移动到中间汇聚。

  方法:

  #包含字符串. h

  #包含windows.h

  int main()

  {

  char a[]=获得优惠!;

  char b[]= # # # # # # # # # # # # # # ;

  int s=strlen(a);//字符串的大小

  int L=0;

  int R=s-1;

  while (L=R)

  {

  b[L]=a[L];

  b[R]=a[R];

  printf(%s\n ,b);

  睡眠(1000);//休息一秒钟(带上头文件windows.h)

  l;

  r-;

  }

  返回0;

  }

  方法:

  #包含字符串. h

  #包含stdlib.h

  #包含windows.h

  int main()

  {

  char a[]=获得优惠!;

  char b[]= # # # # # # # # # # # # # # ;

  int s=strlen(a);//字符串的大小

  int L=0;

  int R=s-1;

  while (L=R)

  {

  b[L]=a[L];

  b[R]=a[R];

  printf(%s\n ,b);

  睡眠(1000);//休息一秒钟(带上头文件windows.h)

  系统(“cls”);//清屏(自带头文件stdlib.h)

  l;

  r-;

  }

  printf(%s ,b);//使用了清屏函数,会把最后的结果清掉。如果要显示,在循环外再打印一次。

  返回0;

  }

  除了strlen(a)-1,这个问题还可以用sizeof(a)/sizeof(a[0])-2来表示。至于后面为什么需要-1或-2,我们可以用下图来说明:

  问题5:模拟用户登录场景(只允许输入三个密码。如果你三次输入错误的密码,你将退出系统。)

  #包含字符串. h

  int main()

  {

  int I=0;

  char p[20]={ 0 };

  for(I=0;我我)

  {

  Printf(请输入密码:\ n );

  scanf(%s ,

  //==不能用于比较两个字符串是否相等,应使用strcmp函数。

  //如果密码等于“12356”,则返回0,

  //如果密码“12356”将返回大于0的数,否则将返回小于0的数。

  if (strcmp(p, 0317)==0)

  {

  Printf(登录成功\ n );

  打破;

  }

  其他

  {

  Printf(密码错误\ n );

  }

  }

  如果(i==3)

  {

  Printf(密码输入错误三次,系统退出\ n );

  }

  返回0;

  }

  问题6:打印1000年到2000年之间的闰年。

  方法:

  int main()

  {

  int c=0;

  //1.它能被4整除,但不能被100整除吗?

  //2.它能被400整除吗?

  for(int I=1000;i=2000我)

  {

  if (i % 4==0 i % 100!=0)

  {

  printf(%d\n ,I);

  c;

  }

  else if (i % 400==0)

  {

  printf(%d\n ,I);

  c;

  }

  }

  printf(\nc=%d\n ,c);

  返回0;

  }方法:

  int main()

  {

  int c=0;

  for(int I=1000;i=2000我)

  {

  if (i % 4==0 i % 100!=0 i % 400==0)

  {

  printf(%d\n ,I);

  c;

  }

  }

  printf(\nc=%d\n ,c);

  返回0;

  }

  前面的结果没有被裁剪出来。从1000年到2000年有243个闰年。

  问题7:判断100到200之间的质数。

  方法:

  int main()

  {

  int I=0;

  int c=0;

  for(I=100;i=200我)

  {

  int j=0;

  //质数只能被1和它本身整除

  for(j=2;j j)

  {

  If (i% j==0)//没有能被2整除到i-1的数是质数。

  {

  打破;

  }

  }

  如果(j==i)

  {

  c;

  printf(%d\n ,I);

  }

  }

  printf(\nc=%d\n ,c);

  返回0;

  }方法:

  #包含数学. h

  int main()

  {

  int c=0;

  int I=0;

  //100到200之间的偶数不能是质数

  for(I=101;i=200i 2)

  {

  int j=0;

  //i=a*b示例:24=4*6=3*8

  //使用sqrt函数带来头文件math.h

  //至少一个数字=平方I

  for(j=2;j sqrt(一);j)

  {

  如果(i % j==0)

  {

  打破;

  }

  }

  if (j sqrt(i))

  {

  c;

  printf(%d\n ,I);

  }

  printf(\nc=%d\n ,c);

  }

  返回0;

  }

  问题8:打印99乘法表。

  int main()

  {

  int I=1;

  int j=1;

  for(I=1;我我)

  {

  //用I控制项数,第一项循环几次,打几项。

  for(j=1;j j)

  {

  //%-二维左对齐,-右对齐

  printf(%d*%d=%-2d ,I,j,I * j);

  }

  printf( \ n );

  }

  返回0;

  }

  问题9://打印1/1-1/2 1/3-1/4 1/5 … 1/99-1/100的值。

  int main()

  {

  int I=0;

  双和=0.0;

  int f=1;

  for(I=1;i=100我)

  {

  sum=f * 1.0/I;

  f=-f;//一次实现正数,下次实现负数

  }

  printf(%lf\n ,sum);//%lf是一个双格式字符。

  返回0;

  }

  问题10:

  int main()

  {

  int I=0;

  int c=0;

  for(I=1;i=100我)

  {

  If (i% 10==9)//位是9

  c;

  //两个99不会和else if语句一起出现,

  //因为如果满足if的条件,就不会执行else if语句。

  Else if (i/10==9)//第十位是9。

  c;

  }

  printf(c=%d\n ,c);

  返回0;

  }

  问题11:求十个整数的最大值。

  int main()

  {

  int a[]={-3,-2,-1,0,1,2,3,4,5,6 };

  int max=a[0];//max在这里不能等于0。我们应该假设第一个数字是最大值,然后进行比较。

  int I=0;

  int s=sizeof(a)/sizeof(a[0]);

  for(I=1;I)//第一个数字已经被设置为最大值,所以我们要从第二个数字开始比较。

  {

  如果(a[i] max)

  {

  max=a[I];

  }

  }

  printf(max=%d\n ,max);

  返回0;

  }

  最后,我想说,编程是一个累积的过程,不可能一蹴而就。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: