分支语句与循环语句题

简介: 分支语句与循环语句题
1.打印3的倍数
2.三个整数从大到小输出
3.打印素数
4.打印闰年
5.最大公约数及最小公倍数
6.打印乘法口诀表
7.求最大值(10个数)
8.分数求和
9.数9出现的次数
10.选择题tips

1.打印3的倍数

//题目1
//打印3的倍数的数
//写一个代码打印1-100之间所有3的倍数的数字
//关于%和+=
//第一种3%i=余数=0,则i是3的倍数
#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 1; i <= 100; i++)
  {
    if (i % 3 == 0)//i是否是3的倍数
      printf("%d ", i);
  }
  return 0;
}
//第二种3 6 9等等3的倍数之间差了3所以也可以是i=i+3/i+=3
#include<stdio.h>
int main()
{
  int i = 0;
  for (i = 3; i <= 100; i+=3)//注意是从3开始往后加3
  {
      printf("%d ", i);
  }
  return 0;
}

2.三个整数从大到小输出

//题目2
//从大到小输出
//写代码将三个整数数 按从大到小输出。
//例如:
//输入:2 3 1
//输出:3 2 1
//关于交换
//交换
  //需要一个中间值
  //先将其中一个值空出来,再将其交换,注意是将右值赋给左值
//排序也可以效率太低,数字量大可以
#include<stdio.h>
int main()
{
  int a,b,c;
  //输入三个数字
  scanf("%d %d %d", &a, &b, &c);
    //交换
  if (a < b)
  {
    int i = b;
    b = a;
    a = i;
  }
  if (a < c)
  {
    int i = a;
    a = c;
    c = i;
  }
  if (b < c)
  {
    int i = c;
    c = b;
    b = i;
  }
  //输出三个数字是从大到小.那么a里存放必须是最大,c必须存放最小的。
  printf("%d %d %d", a, b, c);
  return 0;
}

3.打印素数

//题目3
//打印素数和素数的个数
//写一个代码:打印100~200之间的素数
//素数(质数)指大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数
//只能被1和它本身整除的数
//关于奇数边界条件
//定义变量放置的位置
//循环体的循环内容边界条件

方法1:
//判断素数的条件
//只要数不被它小的数整除就是素数
//例如;11只要不被10 9 8 7 6 5 4 3 2 整除它就是素数
//依次实除
#include<stdio.h>
int main()
{
  int i = 0;
  int j = 0;
  for (i = 100; i <= 200; i++)
  {
    int flag = 1;//放错位置了
    for (j = 2; j < i; j++)
    {
      if (i % j == 0)
      {
        flag = 0;
        break;
      }
    }
    if (flag == 1)
      printf("%d ", i);
  }
  return 0;
}

可以优化吗?当然可以!✔✔✔✔

//方法2:
//优化1:从奇数里面选择
//优化2:j实验到根号i即可
#include<math.h>//sqrt()需要头文件
#include<stdio.h>
int main()
{
  int i = 0;
  int j = 0;
  for (i = 101; i <= 200; i+=2)//奇数中选择,边界条件注意
  {
    int flag = 1;//放错位置了
    for (j = 2; j < sqrt(i); j++)//sqrt(i)--根号i
    {
      if (i % j == 0)//不是素数
      {
        flag = 0;
        break;
      }
    }
    if (flag == 1)
      printf("%d ", i);
  }
  return 0;
}

sqrt(i)

含义为:根号i  ,需要包含头文件#include

4.打印闰年

//题目4
//打印闰年
// //作业内容
//打印1000年到2000年之间的闰年
// 判断闰年条件
// 1.能被4整除,不能被100整除是闰年
// 2.能被400整除是闰年
// 1成立或2成立
//关于&&||
#include<stdio.h>
int main()
{
  int year = 0;
  for (year = 1000; year <= 2000; year++)
  {
    if (year % 4 == 0 && year % 100 != 0)
      printf("%d ", year);
    if(year % 400 == 0)
      printf("%d ", year);
  }
  return 0;
}
//提高效率
#include<stdio.h>
int main()
{
  int year = 0;
  for (year = 1000; year <= 2000; year++)
  {
    if ((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))
      printf("%d ", year);
  }
  return 0;
}

5.最大公约数

//题目5
//最大公约数
//给定两个数,求这两个数的最大公约数
//输入:20 40
//输出:20
//关于%
//交换必须是空的才能交换
// 编译器执行的顺序很重要
// 每个数的值到底该是多少想清楚
//方法一
#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  int min = 0;
  scanf("%d %d", &a, &b);
  min = (a < b ? a : b);
  while (1)
  {
    if (a % min == 0 &&  b % min == 0)
    {
      printf("%d", min);
      break;
    }
    else
      min--;
  }
  return 0;
}
// 方法1:从两个数中找出最小的那个数
// 判断是否能够同时被两个数整除
// 不能依次往下减一,再次判断,直到找到那个最大公约数为止

辗转相除法:

//提高效率
//方法2:辗转相除法
#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  int tep = 0;
  scanf("%d %d", &a, &b);
  int r = a % b;
  while (1)
  {
    if (a % b == 0)
    {
      printf("%d ", b);
      break;
    }
    else
    {
      tep = a;
      a = b;
      b = r;
    }
  }
  return 0;
}

6.打印乘法口诀表

//题目6
//乘法口诀表
//在屏幕上输出9 * 9乘法口诀表
//关于嵌套的逻辑关系
//关于
%2d右对齐    -%2d左对齐
#include<stdio.h>
int main()
{
  int i, j;
  for (i = 1; i <= 9; i++)//计算的是行数
  {
    for (j = 1; j <= i; j++)//计算的是每一行的项数
    {
      printf("%d*%d=%2d ",i,j,i*j);//%2d 右对齐和%-2d左对齐 
    }
    printf("\n");
  }
  return 0;
}

7.求最大值(10个数)

//题目7
//求最大值
//已知10个数且知最大值
//关于数组和数组下标
//数组下标涉及的for循环条件边界
#include<stdio.h>
int main()
{
  char arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
                 //0 1 2 3 4 5 6 7 8 9
  int max = arr[0];//假设最大值是第一个元素
  //int max=0;//不可以正数可以但是负数不行
  for (int i = 1; i <= 9; i++)
  {
    if (max < arr[i])
    {
      max = arr[i];
    }
  }
  printf("%d", max);
  return 0;
}

8.分数求和

//题目8
//分数求和
//计算1 / 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 …… + 1 / 99 - 1 / 100 的值,打印出结果
//关于数字%和/的小数和整数类型
//打印的符号
//以及怎样表示正负相加
// 方法1
//涉及到整数和小数
//+和-用正数和负数
#include<stdio.h>
int main()
{
  int i = 0;
  int flag = 1;
  double sum = 0;
  for (i = 1; i <= 100; i++)
  {
    sum += flag*1.0 / i;
    flag=-flag;
    //不能使用1=-1
  }
  printf("%f", sum);
  return 0;
}
//方法2
//分奇数和偶数加减
#include<stdio.h>
int main()
{
  int i = 0;
  double sum = 0;
  for (i = 1; i <= 100; i++)
  {
    if(i%2 != 0)
    sum +=  1.0 / i;
    else
    sum -= 1.0 / i;
    //不能使用1=-1
  }
  printf("%f", sum);
  return 0;
}

当然,还有很多办法,大家可以动手试一试!!🙂🙂

9.数9出现的次数

//题目9
//数9的个数
//编写程序数一下 1到 100 的所有整数中出现多少个数字9
// 9  19 29 39 49 59 69 79 89 99 ——个位为9只要i%10 ==9
// 90 91 92 93 94 95 96 97 98 99 ——十位为9只要i/10 ==9
//关于if else和if if
//方法1:
#include<stdio.h>
int main()
{
  int i = 0;
  int a = 0;
  for (i = 1; i <= 100; i++)
  {
    if (9 == i % 10 || 9 == i / 10)
    {
      a++;//计算数字
    }
  }
  printf("%d ", a+1);//99属于有两个9但是只计算了一次
  return 0;
}
#include<stdio.h>
int main()
{
  int i = 0;
  int a = 0;
  for (i = 1; i <= 100; i++)
  {
    if (i % 10 == 9)//个位为9
      a++;
    if (i / 10 == 9)//十位为9
      a++;
  }
  printf("%d", a);
  return 0;
}

10.选择题tips

1."="赋值;"=="相等。


2.if语句 默认其后只能跟一条语句,如果在{}可以跟多条。


3.if语句中 0表示假,非0表示真。


4.悬空else


5.在switch语句中case后不接break,会一直往下全部执行。


6. switch(x)----x是整形。char也是整形家族,char表示的时候是用字符的ASCLL码值


7.switch语句中case子句和default子句的顺序没有要求,随意放置。


8.switch语句中case子句后表达式只能是整形常量表达式。


9.注意break,continue出现的位置。

  while(条件表达式)
{
    循环体
}
     while循环中,当条件表达式成立时,才会执行循环体中语句,每次执行期间,
都会对循环因子进行修改(否则就成为死循环),修改完成后如果while条件表达式成立,
继续循环,如果不成立,循环结束。所以, while循环条件将会比循环体多执行一次。
while(0)//循环条件执行了一次,循环体没有执行。
{
循环体;
}

总结:

+=:i=i+4相当于i+=4,多应用于有规律的数字循环。


交换:交换需要一个中间量tem,空出来才能赋值。


=:是把右值赋给左值。


循环嵌套:循环体中变量,数字的边界条件,位置放置。


&& ||:结果相同的话,运算符可以一起用更简单。


数组:把数组下标和数组元素对应清楚。


/:得到的数字是小数(浮点型)和整形的书写。


if if和if else:循环中,if if都会进入,if else语句只会进入一个。


正负交替计算的写法。


嵌套循环的写法。


拆分的方法。


检查脑子里过编译器执行的顺序。

关于以上练习题,大家可以动手写一写🙂🙂🙂🙂

✔✔✔✔感谢大家的阅读,欢迎指正错误和不足!

代码------------→【gitee:https://gitee.com/TSQXG

联系------------→ 【邮箱:2784139418@qq.com】

目录
相关文章
|
Linux 网络安全 Android开发
振南技术干货集:各大平台串口调试软件大赏(2)
振南技术干货集:各大平台串口调试软件大赏(2)
|
Kubernetes Cloud Native 开发者
《云原生应用开发:Operator原理与实践》电子版地址
本书共分为4章,完整地介绍了 Operator 的开发原理和流程;本书适合云原生爱好者及 Operator 开发者阅读。受篇幅所限,本书并未对 Kubernetes的所有模块均作分析,建议读者与其他 Kubernetes 相关图书配合使用。
707 0
《云原生应用开发:Operator原理与实践》电子版地址
|
编解码 数据挖掘 Windows
Office 2021 for Windows 简体中文 官网下载地址
Microsoft Office 2021 Pro Plus专业增强版包括对Word、Excel、PowerPoint、Outlook、OneNote、Publisher、Access、Teams的更新。
1814 0
|
7月前
|
负载均衡 Java API
Spring Cloud是什么及基本特性都有哪些?
Spring Cloud 是用于构建健壮云应用的框架,包含多个子项目。其核心组件如Eureka(服务注册与发现)、Hystrix(熔断器)、Ribbon(负载均衡)等,帮助开发者快速实现微服务架构。Spring Cloud 提供了服务注册与发现、分布式配置、路由、断路器等功能,简化了微服务开发与管理。本文将重点介绍服务注册与发现及分布式配置两大特性。
306 5
|
机器学习/深度学习 运维 Python
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
python深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列
|
10月前
|
安全 中间件 关系型数据库
如何选择国产化CMS来建设政务网站?
信创国产化网站建站保障信息安全,推动信息技术产业发展。PageAdminCMS支持信创,功能全面,满足新建或升级网站需求,助力单位信创国产化转型。
166 5
Python编程实战:如何将列表组装成一棵树结构
本文介绍了如何在Python中将列表转换为树结构。首先定义`TreeNode`类表示节点,包含值和子节点列表。然后,通过`list_to_tree`函数递归地将列表转为树。此外,还提供了添加和删除节点的方法。文章旨在帮助读者理解和操作树结构,以解决实际编程问题。
Python编程实战:如何将列表组装成一棵树结构
|
前端开发 JavaScript 网络架构
Django前后端分离项目实战
Django前后端分离项目实战
144 2
Django前后端分离项目实战
|
运维 机器人 开发者
使用阿里云百炼通过appflow模板,组合钉钉机器人搭建个人知识库评测与感想
尝试构建个人助手机制,用阿里云百炼+AppFlow+钉钉机器人,花费两午休时间解决配置问题。百炼appid复制时多出空格致错,文档未提及,耗时排查。应用创建时模型选项限于max, plus, turbo,性价比高的qwen-long未上线。期望尽快修复bug和上线新模型以降低成本。附故障排查截图。
673 1
|
数据采集
手把手教你如何将SOCKS5代理转换成HTTP代理?
具体要如何操作?今天就来具体展示一下要如何利用privoxy,将SOCKS5代理转化成HTTP代理。