文章目录

  • 一、for循环基本知识
  • 二、经典例题及解析
    • 1.水仙花数
    • 2.求规定范围内的完数
    • 3.求规定范围内质数
    • 4.计算阶乘之和
    • 5.计算5+55+555+555+55555(类型)
    • 6.计算1+12+123+1234+12345(类型)
    • 7.判断用户输入正整数的位数
    • 8.判断某正整数是否为回文数
    • 9.九九乘法表
    • 10.统计用户输入的字符中,英文字母,空格,数字以及其他字符的个数
      • for循环,并利用ASCII判定范围
      • while方法,利用字符判定范围
    • 11.连续输入计算平均值(保留两位小数)

一、for循环基本知识

基本结构:

for (式子1;式子2;式子3) 语句;  //语句也可以是复合语句

执行过程:

首先执行式子1(式子1只执行第一次),然后用式子1的结果去和式子2去判断,式子2为真则执行循环语句(为假就不执行),循环语句执行完去执行式子3,再用式子3执行完后的值去判断式子2的真假,如此重复,直到执行完式子3后的结果不符合式子2,循环结束。

注意事项:

  • 一般式子1代表初值,式子2代表条件,式子3代表增量
  • 三个式子之间用两个分号进行分隔,且两个分号不可省略
  • 三个式子都可以进行省略,若不写式子2,缺省为条件永真

二、经典例题及解析

1.水仙花数

水仙花数:水仙花数是一个三位数,特点是各个位数的立方和等于该数本身。

//水仙花数是一个三位数,特点是各个位数的立方和等于该数本身。
//例:153=1*1*1+5*5*5+3*3*3
#include <stdio.h>int main()
{int i,a,b,c;for(i=100;i<=999;i++)    //保证范围为三位数{a = i%10;    //取变量的个位数b = i/10%10;    //取变量的十位数c = i/100;    //取变量的百位数if ((a*a*a+b*b*b+c*c*c) == i) printf("%d\n",i);  }return 0;
}

运行结果:

2.求规定范围内的完数

完数:一个正整数的所有真因子(除了自身以外的约数)的和恰好等于它本身

//完数定义:一个正整数的所有真因子(除了自身以外的约数)的和恰好等于它本身
//例:6为完数,6的真因子为1,2,3  6=1+2+3
#include <stdio.h>
int main(){int n,i,j,sum;printf("请输入计算完数终止数:\n");scanf("%d",&n);for (i=1;i<=n;i++){sum=0;  //一定要保证每次sum的值都要进行刷新(在循环体内)for (j=1;j<i;j++)  //保证小于i,不可等于(完数定义){if (i%j==0) sum+=j;}if (sum==i) printf("%d\n",i);}return 0;
}

运行结果:

3.求规定范围内质数

质数:一个大于1的整数只能被1和自己整除

//质数:一个大于1的整数只能被1和自己整除
#include <stdio.h>
int main()
{int i,j,k,n;printf("请输入终止范围:");scanf("%d",&n);for (i=2;i<=n;i++){k=1;         //借助k的值对是否为质数进行判断,需保证每次k都能刷新for (j=2;j<i;j++)   //最小质数是2{if (i%j==0){  k=0;       //在这期间只要有一个其他数可对该数进行整除,就代表该数不是质数break;     }}if (k==1) printf("%d\n",i);}
}

运行结果:

4.计算阶乘之和

正整数的阶乘:是所有小于及等于该数的正整数的积,并且0的阶乘为1。
自然数n的阶乘写作n! 例:5!=5 * 4 * 3 * 2 * 1

//正整数的阶乘:是所有小于及等于该数的正整数的积,并且0的阶乘为1。
//自然数n的阶乘写作n!。
//5!=5*4*3*2*1
#include <stdio.h>
int main()
{int i,n,sum=0,p=1;printf("请输入阶乘终止值:\n");scanf("%d",&n);for (i=1;i<=n;i++){p*=i;   //根据找规律得出sum+=p;  //累加求和}printf("阶乘结果为:%d",sum);}

运行结果:

5.计算5+55+555+555+55555(类型)

大同小异,其他数值也可以这样计算

#include <stdio.h>
int main()
{int i,sum=0,p=0;for (i=1;i<=5;i++)     //循环次数(几个5){p=p*10+5;   //找规律,注意这次p为0!!!sum+=p;     //每循环一次就进行叠加}printf("结果为:%d",sum);
}

运行结果:

6.计算1+12+123+1234+12345(类型)

此类题大部分都是先找规律,如需累加则在循环体内累加

#include <stdio.h>
int main()
{printf("%d",1+12+123+1234+12345);int i,sum=0,p=0;for (i=1;i<=5;i++){p=p*10+i;    //同样找规律,然后叠加sum+=p;}printf("结果为:%d",sum);
}

运行结果:

7.判断用户输入正整数的位数

#include <stdio.h>
int main()
{int n,k=0;printf("请输入正整数:\n");scanf("%d",&n);for (;n!=0;)   //while也可以{k++;n/=10;   //很粗名,每次除10,减少一位数直到为0停止}printf("该正整数的位数为:%d",k);
}

运行结果:

编写程序计算x的y次方

#include <stdio.h>
int main()
{int x,y,i,p=1;printf("请输入x和y\n");scanf("%d%d",&x,&y);for (i=1;i<=y;i++)   //循环y次{p*=x;     //p的值为初始值必须为1}printf("x的y次方为%d",p);return 0;
}

运行结果:

8.判断某正整数是否为回文数

回文数:从左向右看和从右向左看都一样
例:1234321是回文数

#include <stdio.h>
int main()
{int n,y,p=0;printf("请输入测试正整数\n");scanf("%d",&n);y=n;while (n!=0){p=p*10+n%10;   //取这个正整数的最后一位,并且与前面相加就不成第一位啦嘛 //经典,有空就回顾一下n/=10;   //每次执行去掉正整数一位数}if (p==y) printf("%d是回文数",y);else printf("该数不是回文数");return 0;}

运行结果:

9.九九乘法表

#include <stdio.h>int main()
{int i,j;for (i=1;i<=9;i++){      //外循环,循环9次for (j=1;j<i+1;j++){      //内循环,以外循环的变量为范围printf("%d*%d=%d  ",j,i,i*j);    //注意i和j的先后顺序,看题}printf("\n");    //不可在内循环体内}return 0;
}

10.统计用户输入的字符中,英文字母,空格,数字以及其他字符的个数

for循环,并利用ASCII判定范围

//for循环,并利用ASCII判定范围
#include <stdio.h>
int main()
{int z=0,s=0,k=0,o=0;char ch;printf("请输入字符串\n");for (;1;){ch=getchar();if (ch == '\n') break;else if (ch>=65&&ch<=90 || ch>=97&&ch<=122) z+=1;else if (ch == 32) k+=1;else if (ch>=48&&ch<=57) s+=1;else o+=1;}printf("该字符串中英文字母占:%d个\n该字符串中空格占:%d个\n该字符串中数字占:%d个\n该字符串中其他字符占:%d个\n",z,k,s,o);}

while方法,利用字符判定范围

//while方法,利用字符判定范围(其实也还是ASCII,只不过这个不容易出错)
#include <stdio.h>
int main()
{int z=0,s=0,k=0,o=0;char ch;printf("请输入字符串\n");while ((ch=getchar())!='\n'){if (ch>='A'&&ch<='Z' || ch>='a'&&ch<='z') z+=1;   //也可以用字符表示范围,ASCII有可能会记错else if (ch == ' ') k+=1;else if (ch>='0'&&ch<='9') s+=1;else o+=1;}printf("该字符串中英文字母占:%d个\n该字符串中空格占:%d个\n该字符串中数字占:%d个\n该字符串中其他字符占:%d个\n",z,k,s,o);}

运行结果:

11.连续输入计算平均值(保留两位小数)

#include <stdio.h>
int main()
{int i;float n,sum=0.0;  //注意数据类型for (i=1;i!=0;i++){printf("请输入需要累加的数值%d\n(注:输入0时结束)\n",i);scanf("%f",&n);sum+=n;if (n==0) {printf("平均值为%.2f",sum/i); break;  //保留两位小数}}
}

运行结果:

C语言for循环结构经典练习相关推荐

  1. c语言里凤霞答案,C语言中循环结构的教学方法研究

    摘要:文章从C语言课程的教学现状入手,分析了大班教学模式存在的问题,提出了新的教学方法.循环结构是C语言教学中的重点和难点.本文以双重循环中九九乘法表的输出为例探讨了在教学过程中如何设计才能把一个复杂 ...

  2. c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt

    C语言-5循环结构(PPT)复习课程.ppt 第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1:求;1. do-while循环语句的形式 do 循环体 wh ...

  3. c语言 循环结构 ppt,C语言中 循环结构.ppt

    <C语言中 循环结构.ppt>由会员分享,可在线阅读,更多相关<C语言中 循环结构.ppt(42页珍藏版)>请在皮匠网上搜索. 1.第五章循环控制结构,1,本章知识点:,whi ...

  4. c语言程序设计 徐庆生,C语言中循环结构程序课的教学设计与探讨.doc

    C语言中循环结构程序课的教学设计与探讨 摘要:循环结构的程序设计是面向过程的程序设计课程的核心部分,掌握好循环结构的程序设计技术对学好此类课程至关重要.本文重点介绍了"C语言程序设计&quo ...

  5. 循环结构c语言乘电梯,C语言程序设计循环结构之“四要素学习法”

    摘要:C语言程序设计中循环结构是顺序.选择.循环三大基本结构之一,功能强大,使用灵活方便,但是学生学习难度比较大.该文以累加和为切入点深入分析循环结构特点,总结出循环结构"四要素学习法&qu ...

  6. c语言永真循环格式,C语言的循环结构.ppt

    C++语言的循环结构,杨 基 伦 在程序设计工作中,为了完成既的任务,必须有效地控制程序流程,也就是要控制好语句的执行顺序.程序的流程控制有多种方式,但基本上有三种:即顺序控制.条件分支控制和循环控制 ...

  7. c语言有关循环结构运用的题,应用C语言循环结构解决等差数列求和问题微课设计研究...

    高妍 [摘 要]本文以应用C语言循环结构解决等差数列求和问题作为微课主要内容,阐述了对微课设计进行的研究与探索. [关键词]C语言:循环结构:微课 当今,信息化高速发展,数字技术正在影响和改变着我们生 ...

  8. Linux嵌入式学习---c语言之循环结构

    Linux嵌入式学习---c语言之循环结构 一.while语句循环 1.1一般形式 1.2累加求和 二.do...while语句循环 2.1do....while语句一般形式 2.2do....whi ...

  9. c语言中循环结构的作用,C语言循环结构知识点

    C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...

最新文章

  1. 2021年春季学期-信号与系统-第二次作业参考答案-第十小题
  2. android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
  3. python基本语法语句-Python基本语句
  4. 介绍微服务框架Micro笔记
  5. 【TypeScript】字符串转义符序列
  6. html验证座机号码_html5表单pattern属性配合正则验证电话和手机号码
  7. mybatis 基础理解
  8. 图标截取——背景偏移量技术
  9. python文本进度条代码解释_python动态文本进度条的实例代码
  10. 力扣529.扫雷游戏
  11. 弱鸡儿终于没爆零Day7
  12. ubuntu增加磁盘容量
  13. python简易计算器界面_python 简易计算器
  14. 多云环境无处不在,但其管理才刚开始
  15. fastadmin使用ECharts制作统计图
  16. 小蓝本 第一本 《因式分解技巧》 第八章 多项式的一次因式 笔记 (第八天)
  17. TCP应用层主要协议
  18. (Cisco)思科网院所有模块测试题答案整理汇总_计算机网络
  19. 55节开源巨献,教你制作一个智能无线电应答平台
  20. Excel使用经验——Excel连接Oracle,发生3706错误的解决办法

热门文章

  1. 关于Unix与Linux的一段暗黑史(上篇)
  2. 若两个复数分别为:c1​=x1​+y1​i和c2​=x2​+y2​i,则它们的乘积为 c1​×c2​=(x1​x2​−y1​y2​)+(x1​y2​+x2​y1​)i。
  3. 关于导致 N70 下载jad安装程序, 出现 授权失败 的错误
  4. MIRROR-UE与MAYA链接
  5. MS Castep学习(4)
  6. Matlab论文插图绘制模板第55期—带等高线的网格曲面图(Meshc)
  7. 东哥学Node的故事——内存管理
  8. Android 仿芝麻信用进度条,自定义View仿支付宝芝麻信用分仪表盘效果
  9. 2019上半年网络工程师下午真题及答案解析
  10. jsp中表格序号递增,varStatus=“vs“