C语言for循环结构经典练习

文章目录

  • 一、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;  //保留两位小数}}
}

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/164216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTA 公路村村通

现有村落间道路的统计数据表中&#xff0c;列出了有可能建设成标准公路的若干条道路的成本&#xff0c;求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N&#xff08;≤1000&#xff09;和候选道路数目M&#xff08;≤3N&#xff09;&…

JVM 之 javac、java、javap 命令详解

目录 一. 前言 二. javac 命令 三. java 命令 四. javap 命令 一. 前言 在日常工作中&#xff0c;我们新建 Java工程&#xff0c;写好代码后&#xff0c;编译和运行几乎都是通过 IDE&#xff08;如idea、eclipse&#xff09;工具完成。但作为 Java开发者还是要了解下 Java虚…

Modbus RTU协议及modbus库函数使用

一、与Modbus TCP的区别 在一般工业场景使用modbus RTU的场景还是更多一些&#xff0c;modbus RTU基于串行协议进行收发数据&#xff0c;包括RS232/485等工业总线协议。 与modbus TCP不同的是RTU没有报文头MBAP字段&#xff0c;但是在尾部增加了两个CRC检验字节&#xff08;CRC…

Android之在RecyclerView列表中实现单选

一、实现效果 单选、可取消选中、列表数据可更新&#xff08;选择状态清空&#xff0c;可重新选择&#xff09; RecyclerView列表单选 二、实现步骤 仅展示部分核心代码&#xff0c;请主要参考适配器的定义 1、Item布局 selected_tip_list_item.xml文件 包含一个TextView和…

Spring Boot集成MyBatis实现多数据源访问的“秘密”

文章目录 为什么需要多数据源&#xff1f;Spring Boot集成MyBatis的基础配置使用多数据源小结 &#x1f389;Spring Boot集成MyBatis实现多数据源访问的“秘密” ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&…

力扣:178. 分数排名(Python3)

题目&#xff1a; 表: Scores ---------------------- | Column Name | Type | ---------------------- | id | int | | score | decimal | ---------------------- 在 SQL 中&#xff0c;id 是该表的主键。 该表的每一行都包含了一场比赛的分数。Score …

TCP /UDP协议的 socket 调用的过程

在传输层有两个主流的协议 TCP 和 UDP&#xff0c;socket 程序设计也是主要操作这两个协议。这两个协议的区别是什么呢&#xff1f;通常的答案是下面这样的。 TCP 是面向连接的&#xff0c;UDP 是面向无连接的。TCP 提供可靠交付&#xff0c;无差错、不丢失、不重复、并且按序…

Selenium介绍及基本使用方法

Selenium是一个开源、免费、简单、灵活&#xff0c;对Web浏览器支持良好的自动化测试工具&#xff0c;在UI自动化、爬虫等场景下是十分实用的&#xff0c;能够熟练掌握并使用Selenium工具可以大大的提高效率。 Selenium简介 Selenium支持多平台、多浏览器、多语言去实现自动化…

深入理解强化学习——马尔可夫决策过程:动作价值函数

分类目录&#xff1a;《深入理解强化学习》总目录 不同于马尔可夫奖励过程&#xff0c;在马尔可夫决策过程中&#xff0c;由于动作的存在&#xff0c;我们额外定义一个动作价值函数&#xff08;Action-value Function&#xff09;。我们用 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)…

线程提交线程到线程池,有几种方式,哪一种方式是工作中不能使用的,无法捕捉异常,线程池的拒绝策略,线程池的提交方式

线程池的工作原理 JDK中提交线程到线程池&#xff0c;有几种方式&#xff0c;哪一种方式是工作中不能使用的&#xff0c;无法捕捉异常 两种提交任务的方法 ExecutorService 提供了两种提交任务的方法&#xff1a; execute()&#xff1a;提交不需要返回值的任务 submit()&a…

【C语言】多组输入

C系列文章目录 目录 C系列文章目录 一、什么是多组输入&#xff1f; 二、如何使用多组输入 2.1&#xff0c;试题举例讲解 2.2&#xff0c;错误解法 2.3&#xff0c;我们实现多组输入的思路 2.4&#xff0c;第一种正确的解法 2.5&#xff0c;第二种正确的解法 2.6&…

Python入门教程 | Python3 字典(dict)

Python3 字典 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 Python3中的字典是一种无序、可变、可迭代的数据结构&#xff0c;它由键&#xff08;key&#xff09;和对应的值&#xff08;value&#xff09;组成。字典在Python中被视为可变对象&#xff0c;这意…

ES ElasticSearch安装、可视化工具kibana安装

1、安装ES docker run -d --name es9200 -e "discovery.typesingle-node" -p 9200:9200 elasticsearch:7.12.1访问测试&#xff1a; http://域名:9200/ 2、安装kibana对es进行可视化操作 执行命令 docker run -d --name kibana5601 -p 5601:5601 kibana:7.1.12.修…

如何实现在公网下使用navicat图形化工具远程连接本地内网的MariaDB数据库

公网远程连接MariaDB数据库【cpolar内网穿透】 文章目录 公网远程连接MariaDB数据库【cpolar内网穿透】1. 配置MariaDB数据库1.1 安装MariaDB数据库1.2 测试局域网内远程连接 2. 内网穿透2.1 创建隧道映射2.2 测试随机地址公网远程访问3. 配置固定TCP端口地址3.1 保留一个固定的…

Redis深入理解-Socket连接建立流程以及文件事件处理机制

Redis Server 运行原理图 Redis 服务器中 Socket 网络建立以及文件事件模型 一个 redis 单机&#xff0c;可以抗几百上千的并发&#xff0c;这里的并发指的就是同时可以有几百个 client 对这个 redis server 发起请求&#xff0c;都需要去建立网络连接&#xff0c;同时间可能会…

利用 docker 实现JMeter分布式压测

为什么需要分布式&#xff1f; 在工作中经常需要对一些关键接口做高QPS的压测&#xff0c;JMeter是由Java 语言开发&#xff0c;没创建一个线程&#xff08;虚拟用户&#xff09;&#xff0c;JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并…

YAML 深入解析:从语法到最佳实践

什么是YAML YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种人类可读的数据序列化语言。它的设计目标是使数据在不同编程语言之间交换和共享变得简单。YAML采用了一种简洁、直观的语法&#xff0c;以易于阅读和编写的方式表示数据结构。 YAML广泛应用于配置文…

【OpenCV实现图像:制作酷炫的动画效果】

文章目录 概要生成背景图添加点动画添加文本显示小结 概要 首先&#xff0c;通过导入必要的库&#xff0c;包括NumPy用于数学运算和Matplotlib库用于数据可视化。随后&#xff0c;创建图形和轴&#xff0c;初始化点的位置&#xff0c;以及编写初始化函数和更新函数。 初始化函…

C语言归并排序

以梦为马&#xff0c;不负韶华 文章目录 引入&#xff1a;实现原理问题引出&#xff1a;递归实现&#xff1a;迭代实现稳定性分析&#xff1a;总结&#xff1a; 引入&#xff1a; 如何将两个有序数组&#xff08;假设为升序&#xff09;合并为一个有序数组&#xff1f; 双指针…

yolov5/v7修改标签和检测框显示【最全】

《记录自己在使用yolov5遇到的一些问题》同时也供大家参考&#xff0c;如果对你们有帮助&#xff0c;希望大家可以给个点赞、收藏鼓励下&#xff0c;非常感谢&#xff01; 以自带的一张图片作为示例,yolov5(6.1版本)的初始检测框应该是如下图所示 修改线条粗细、隐藏标签、隐…