绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
从零开始跟我学 C 语言之循环结构(上)
2023-02-28 10:38:07

Hi!这里是渔火。今天我们来学校C语言中的循环结构。循环结构是结构化程序设计中的基本结构之一。循环结构在程序设计中的应用很普遍,几乎所有具有实用价值的应用程序中都包含着循环结构。循环结构的特点是,可以完成有规律的、需要重复计算或处理的任务。C语言提供了for语句、while语句和do-while三种循环语句。我们来看一个用到循环结构的程序设计。
【1】假设今年我国的人口总数为13亿,若按每年2%增长,计算从现在开始10年内每年人口的数量。
#include<stdio.h>#include<math.h> //2023.2.4渔火 Linux迷 www.linuxmi.comint main(){  int n=13,year;  double number,rate=0.02;  for(year=1;year<=10;year++)  {    number=n*pow((1+rate),year);    printf("%2d年后,人数为:%.2f亿\n",year,number);  }          //2023.2.4渔火 Linux迷 www.linuxmi.com  return ;}
运行结果如下:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                     ⚡ gcc  linuxmi.c -lm -o  linuxmi
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ ./linuxmi 1年后,人数为:13.26亿 2年后,人数为:13.53亿 3年后,人数为:13.80亿 4年后,人数为:14.07亿 5年后,人数为:14.35亿 6年后,人数为:14.64亿 7年后,人数为:14.93亿 8年后,人数为:15.23亿 9年后,人数为:15.54亿10年后,人数为:15.85亿
分析:程序中的for循环控制语句中,年份year的初始值为1,终值为10,增量用year++实现。
{number=n*pow((1+rate),year);printf("%2d年后,人数为:%.2f亿\n",year,number);}
是需要重复执行的语句,称为循环语句。在重复执行的过程中,使用了同一个计算公式,但年份year每次递增1,因此计算出的人口数量number会不同。
for语句是C语言提供的功能强大、使用广泛的一种循环结构,不仅可以解决循环次数未知的循环问题,特别适合解决循环次数已知的循环问题。for语句的一般形式为:for(表达式1:表达式2:表达式3) 循环体语句;
1、可以应用于计数型的循环。格式是:for(循环变量赋初值;循环条件,循环变量增量) 循环体语句;
说明:循环变量赋初值是一个赋值语句,用于给循环变量赋初值;循环条件是一个关系表达式,决定何时终止循环;循环变量增量决定循环变量在完成一次循环后如何变化。三部分之间以”;“隔开。
【2】输入一个正整数,求n!。
#include<stdio.h>//2023.2.4渔火 Linux迷 www.linuxmi.comint main(){  int i,n;  double fac;  printf("输入n的值:");  scanf("%d",&n);  fac=1;  for(i=1;i<=n;i++)    fac=fac*i;  printf("%d!=%.0f\n",n,fac);            //2023.2.4渔火 Linux迷 www.linuxmi.com   return ;}
运行结果如下://输入10
2、for语句的一般形式中省略表达式1,格式为:for(;表达式2;表达式3)  循环体语句;。
说明:省略表达式1时,可以将循环变量赋初值放在for之前。注意,此时不能省略个”;“。
3、for语句的一般形式中省略表达式2,格式为:for(;表达式1;;表达式3)  循环体语句;。
说明”省略表达式2时,表示不对循环进行控制,这时如果没有其他处理的话。会形成死循环。应避免这样使用for结构。
4、for语句的一般形式中省略表达式3,格式为:for(;表达式1;表达式2)  循环体语句;。
说明:省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。
5、for语句的一般形式中表达式1和表达式3也可以是逗号表达式。
6、for语句的一般形式中表达式2 的值只要非0,就执行循环体。
7、for语句的一般形式中循环体语句可以省略。
for使用循环例子。
【编写程序,输入10个数,输出其中的大值】
#include<stdio.h>//2023.2.4渔火 Linux迷 www.linuxmi.comint main(){  int i;  float x,max;  printf("请输入第1个数:");   scanf("%f",&x);  max=x;  for(i=1;i<=9;i++)  {    printf("请输入第%d个数",i+1);    scanf("%f",&x);    if(x>max)      max=x;  }  printf("10个数的大值是:%.0f",max);        //2023.2.4渔火 Linux迷 www.linuxmi.com   return ;}
分析:这是典型的值问题,求解的思路是:定义变量max存放大数,将输入的个数赋给max作为大数,在后续循环中,每输入一个数,都与max进行比较,若比max大,则将其赋给max,循环结束后,变量max中即为大数。
【编写程序,输出所有的水仙花】
#include<stdio.h>//2023.2.4渔火 Linux迷 www.linuxmi.comint main(){  int num,a,b,c;  for(num=100;num<=999;num++)  {    a=num/100;    b=num%100/10;    c=num%10;    if(num==a*a*a+b*b*b+c*c*c)      printf("%5d",num);  }        //2023.2.4渔火 Linux迷 www.linuxmi.com   return ;}
运行结果如下:
【由键盘输入3个数字,将其组合成一个整型数并输出】
#include<stdio.h>//2023.2.4渔火 Linux迷 www.linuxmi.comint main(){  int n=,i;  char ch;  printf("输入3个数字:");  for(i=1;i<=3;i++)  {    scanf("%c",&ch);    n=n*10+ch-'0';   }    printf("%d\n",n);          //2023.2.4渔火 Linux迷 www.linuxmi.com   return ;}
运行结果如下:

相关链接:

  1. https://www.linuxmi.com/learn-c-language-from-scratch-1.html

  2. https://www.linuxmi.com/learn-c-language-from-scratch-2.html

  3. https://www.linuxmi.com/learn-c-language-from-scratch-3.html

  4. https://www.linuxmi.com/learn-c-language-from-scratch-4.html

  5. https://www.linuxmi.com/learn-c-language-from-scratch-5.html



来自:Linux迷
链接:https://www.linuxmi.com/c-language-cyclic-structure-1.html
分享好友

分享这个小栈给你的朋友们,一起进步吧。

C语言编程开发
创建时间:2019-12-03 10:46:09
C语言C++知识内容传递,让编程变得更容易。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • jasonhsp
    栈主
  • gaokeke123
    嘉宾

小栈成员

查看更多
  • ?
  • 小尾巴鱼
  • karspb
  • nt1979
戳我,来吐槽~