【12】C语言_几个循环的经典练习

news2024/11/17 22:28:49

目录

1. 打印n的阶乘;

2、计算 1!+2!+3!+......+10!

3、用二分查找在一个有序数组中查找一个数

4、打印如下

5、输入三次密码

6、写一个猜数字游戏

7、如题

8、打印1到100之间 3的倍数

9、给两个数,求出最大公约数

10、找出从1000到2000之间的闰年

11、找出100到200之间的素数(只能被1和它本身整除的数)

 


1. 打印n的阶乘;

int main()
{
    int i = 1;
    int n = 1;
    int ret = 1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        ret *=i;
    }
    printf("%d\n",ret);
    return 0;
}

 

2、计算 1!+2!+3!+......+10!

int main()
{
    int i = 0;
    int j = 0;
    int ret = 1;
    int sum = 0;

    for(i=1;i<=3;i++)
    {
        ret = 1;
        for(j=1;j<=i;j++)
        {
            ret *=j;
        }
        sum +=ret;
    }
    printf("%d\n",sum);
    return 0;
}

以上代码优化

int main()
{
    int i = 0;
    int ret = 1;
    int sum = 0;

    for(i=1;i<=3;i++)
    {
        ret *=i;
        sum +=ret;
    }
    
    printf("%d\n",sum);
    return 0;
}

 

3、用二分查找在一个有序数组中查找一个数

#include<stdio.h>

int main()
{
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int k = 7;
    int sz = sizeof(arr)/sizeof(arr[0]);
    int left = 0;
    int right = sz - 1;

    while(left<=right)
    {
        int mid = (left + right) / 2;
        if(k > arr[mid])
        {
            left = mid + 1;
        }
        else if(k < arr[mid])
        {
            right = mid - 1;
        }
        else
        {
            printf("找到了为:第%d位数\n",mid);
            break;
        }
    }
    if(left > right)
    {
        printf("找不到\n");
    }

    return 0;
}

 

4、打印如下

#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
    char arr1[] = "Welcome to byte!!!";
    char arr2[] = "******************";
    int left = 0;
    int right = strlen(arr1) - 1;

    while(left <=right)
    {
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s\n",arr2);
        left ++;
        right --;
        Sleep(1000);

    }

 或者

#include<stdio.h>
#include<string.h>
#include<windows.h>
int main()
{
    char arr1[] = "Welcome to byte!!!";
    char arr2[] = "******************";
    int left = 0;
    int right = strlen(arr1) - 1;

    while(left <=right)
    {
        arr2[left] = arr1[left];      
        arr2[right] = arr1[right];
        printf("%s\n",arr2);
        left ++;
        right --; 
        Sleep(1000);       //睡眠1秒
        system("cls");     //清屏

    }
    printf("Welcome to byte!!!\n");
    return 0;
}

 

5、输入三次密码

如果对输出:密码输入正确,如果三次都错误,输出:三次密码均错误,退出程序。

#include<string.h>
int main()
{
    int i = 0;
    char password[20]={ 0 };    

    for(i= 0; i<3; i++)
    {
        printf("请输出密码:>");
        scanf("%s",password);
        //if(password = "123456")  这样比较字符是错误的
        if(strcmp(password,"123456") == 0)
        {
            printf("登录成功\n");
            break;
        }
        else
        {
            printf("密码输出错误,请重新输入!\n");
            
        }
    }
    if(i == 3)
    {
        printf("密码输入错误3次,退出程序\n");
    }
    return 0;

 

6、写一个猜数字游戏

1 自动产生一个1-100之间的随机数

2.猜数字:

  • a. 猜对了,就恭喜你,游戏结束
  • b. 你猜错了,会告诉猜大了,还是猜小了,继续猜,直到猜对

3.游戏一个一直玩,除非退出游戏

#include<stdlib.h>
void menu()
{
    printf("**************************\n");
    printf("*******  1.开始  *********\n");
    printf("*******  0.结束  *********\n");
    printf("**************************\n");
    printf("**************************\n");
}
void game()
{
    int ret = rand()%100+1;
    int guess = 0;
    while(1)
    {
        printf("请猜数字:>");
        scanf("%d",&guess);
        if(guess < ret)
        {
            printf("猜小了\n");
        }
        else if(guess > ret)
        {
            printf("猜大了\n");
        }
        else 
        {
            printf("恭喜你,猜对了\n");
            break;
        }
    }
}
int main()
{
    int input = 0;
    do
    {
        menu();
        printf("请输入数字:>");
        scanf("%d",&input);
        switch(input)
        {
        case 1:
            game();
            break;
        case 0:
            printf("退出游戏\n");
            break;
        default:
            printf("输入错误,重新选择\n");
            break;
        }
    }while(input);


    return 0;
}

7、如题

从大到小输出题目内容:

写代码将三个整数数按从大到小输出。

例:

输入: 231

输出:321

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    scanf("%d%d%d",&a,&b,&c);
    
    if(a<b)
    {
        int ret = a;
        a = b;
        b = ret;
    }
    if(a<c)
    {
        int ret = a;
        a = c;
        c = ret;
    }
    if(b<c)
    {
        int ret = b;
        b = c;
        c = ret;
    }
    printf("%d %d %d",a,b,c);

    return 0;
}

 

 8、打印1到100之间 3的倍数

int main()
{
    int i = 0;
    for(i=1; i<=100; i++)
    {
        if(i%3 == 0)
        {
            printf("%d ",i);
        }
    }
    return 0;
}

或者

int main()
{
    int i = 0;
    for(i=3; i<=100; i+=3)
    {
            printf("%d ",i);
    }
    return 0;
}

 

9、给两个数,求出最大公约数

#include<stdio.h>
int main()
{
    int m = 0;
    int n = 0;
    int Max = 0;
    scanf("%d%d",&m,&n);

    if(m >= n)               //假如最大公约数就是m、n的最小值
        Max = n;
    else
        Max = m;
    
  
    while(1)
    {
        if(m % Max == 0 && n % Max == 0)
        {
        printf("%d\n",Max);
        break;
        }
        Max--;
    }
    return 0;
}

还可以用辗转相除法:

int main()
{
    int m = 0;
    int n = 0;
    int t = 0;
    
    scanf("%d%d",&m,&n);
    while(t = m%n)
    {
        m = n;
        n = t;
    }
    printf("%d\n",n);
}

 

10、找出从1000到2000之间的闰年

1.可以被4整除且不被100整除 或者

2.可以被400整除的

int main()
{
    int y = 0;
    int count = 0;
    
    for(y=1000; y<=2000; y++)
    {
        if(((y%4 == 0) && (y%100 != 0)) || (y % 400 == 0))
        {
            printf("%d ",y);
            count++;
        }
    }
    printf("\n闰年一共:%d\n",count);
    return 0;
}

 

11、找出100到200之间的素数(只能被1和它本身整除的数)

int main()
{
    int i = 0;
    int j = 0;
    int count = 0;

    for(i=100; i<=200; i++)
    {
        j = 0;
        for(j=2; j<i; j++)
        {
            if(i%j == 0 )
            {
            break;
            }
        }
        if(i == j)
        {
            printf("%d ",i);
            count++;
        }
    }
    printf("\n一共:%d\n",count);
    return 0;
}

 

 

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

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

相关文章

Java是编译性语言还是解释型语言 ?

首先我们应该了解这两种语言的概念 . 高级语言在计算机上执行 , 有两种方式 , 分为编译型语言和解释型语言 . 编译型语言 : 编写源代码–>编译–>链接. 典型的编译型语言 : C/C . 特点 : 源代码中一处有错 , 就不允许编译 ; 编译过程中出现一处错误 , 就停止编译 . 优…

论文投稿指南——中文核心期刊推荐(武器工业)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

4个免费数据恢复软件:免费恢复您的数据

意外的文件删除或文件损坏可能会令人头疼&#xff0c;尤其是在您不使用云存储的情况下。两者通常都支持已删除的文件恢复和版本控制&#xff0c;以帮助您摆脱此类困境。如果您不使用云&#xff0c;通常唯一的机会就是使用数据恢复软件来找回丢失或损坏的数据。 这种方法有两个…

使用 Burpsuite 测试的常用操作(二)

大家好啊&#xff0c;我是大田。接上篇文章「 使用 Burpsuite 测试的常用操作&#xff08;一&#xff09;」&#xff0c;今天继续分享一下 Burpsuite 在工作中常用操作三、本文中 2 个常用操作1、Burpsuite_proxy 篡改请求通过代理模式可以拦截、查看、修改所有客户端和服务器端…

(二)Linux嵌入式开发——软件安装(Ubuntu)

文章目录&#xff08;二)Linux嵌入式开发——软件安装&#xff08;Ubuntu&#xff09;APP StoreAPT工具问题解决办法1解决办法2deb软件包程序源码问题1解决办法问题2解决办法总结&#xff08;二)Linux嵌入式开发——软件安装&#xff08;Ubuntu&#xff09; 接下来&#xff0c;…

【GD32F427开发板试用】FOC矢量算法研究系列之一:PWM实现呼吸灯

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;Q_dGHvwj 前言 有幸被选为此次开发板测评活动的参与者&#xff0c;万分感谢。收到板子后迫不及待的拆来查看&#xff0c;画风整齐美观&#x…

SpringCloudAlibabaNacosConfig学习笔记

目录 1. Nacos配置中心使用 2 搭建nacos-config服务 3 Config相关配置 4 .配置的优先级 5. RefreshScope 1. Nacos配置中心使用 官方文档&#xff1a; https://github.com/alibaba/springcloudalibaba/wiki/Nacosconfig Nacos 提供用于存储配置和其他元数据的key/value 存…

23种设计模式(十三)——代理模式【接口隔离】

文章目录 意图什么时候使用代理真实世界类比代理模式的实现代理模式的优缺点亦称:Proxy 意图 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。 什么时候使用代理 1、…

论文投稿指南——中文核心期刊推荐(环境科学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

操作系统-操作系统引论(1)

操作系统的基本概念一、操作系统的定义二、操作系统的产生与发展三、操作系统的特征四、操作系统的功能五、操作系统的运行机制六、操作系统的体系结构一、操作系统的定义 资源管理的观点&#xff1a;操作系统是控制和管理计算机的软、硬件资源&#xff0c;并且合理的组织计算…

通过C++对【图】进行抽丝剥茧(包括广度、深度优先遍历,求最小生成树,求最短路径)

目录 一.图的基本概念 二.图的存储结构 1.邻接矩阵 &#xff08;1&#xff09;无向图、有向图矩阵存储 &#xff08;2&#xff09;实现&#xff1a; 2.邻接表 &#xff08;1&#xff09;无向图邻接表存储 &#xff08;2&#xff09;有向图邻接表存储 &#xff08;3&a…

windows下运行ROSEFusion

其实LZ已经不再是两年前的Linux小白了&#xff0c;至于为什么要在windows下配置环境&#xff0c;是因为LZ在Linux下已经成功编译成功了ROSEFusion&#xff0c;但运行时一直报错Frame could not be processed&#xff0c;在github下的issue里面查询得知可能是CUDA版本问题。另外…

VM16 Pro+ubuntu20.04.5+GAMIT10.71安装(20230118更新包)

VMware Workstation 16 Proubuntu20.04GAMIT10.71安装测绘老中医&#xff08;qq8212714&#xff09;&#xff08;2023-01-20&#xff09;NOTE:安装环境&#xff1a;Windows 10 专业版&#xff0c;64 位操作系统, 基于 x64 的处理器1、首先在计算机中安装VMware Workstation 16 …

交叉编译(全志)

文章目录一、交叉编译概念二 、香橙派交叉编译3.带WiringPi库的交叉编译一、交叉编译概念 交叉编译&#xff0c;就是&#xff1a;在一种平台上编译&#xff0c;编译出来的程序&#xff0c;是放到别的平台上运行即编译的环境&#xff0c;和运行的环境不一样&#xff0c;属于交叉…

【基础】高低位和大小端

大小端模式出现是为了兼容不同CPU采用的不同的指令集 PowerPC架构和x86架构采用的是不同的CPU指令集。PowerPC采用精简指令集&#xff08;RISC&#xff0c;reduced instruction set computer&#xff09;&#xff0c;x86指的是特定微处理器执行的一些计算机语言指令集。 Powe…

Obsidian 插件(一):DataView 的使用

文章目录DataView 的使用一、 环境配置二、 入门介绍1、 快速开始2、 页面和字段3、 创建查询4、 系统字段三、 接口讲解1、 表达式1.1 概述1.2 表达式类型1.3 特定类型的交互2、 函数2.1 构造器2.2 常用函数2.3 工具函数DataView 的使用 一、 环境配置 首先&#xff0c;我们…

ESP32设备驱动-DHT11温度湿度传感器驱动

DHT11温度湿度传感器驱动 1、DHT11介绍 DHT11数字温湿度传感器是一种复合传感器,包含一个经过校准的温湿度数字信号输出。 应用了专用的数字模块采集技术和温湿度传感技术,确保产品具有高可靠性和优异的长期稳定性。 该传感器包括一个电阻感湿元件和一个 NTC 温度测量装置,…

LeetCode题目笔记——1814. 统计一个数组中好对子的数目

文章目录题目描述题目难度——中等方法一&#xff1a;模拟&#xff08;超时&#xff09;&#xff08;参考&#xff09;代码/Python方法二&#xff1a;优化代码总结题目描述 给你一个数组 nums &#xff0c;数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得…

Kong Api Gateway

Kong Api Gateway什么是API 网关为什么是 Kong安装Kong通过包管理器来安装启动Kong配置文件详解1、常规配置2、Nginx注入配置3、数据库存储配置4、数据库缓存配置DNS解析器配置其他杂项配置API 管理详解1、查看节点信息2、查看节点状态3、添加服务4、查询服务5、查询所有服务6、…

golang入门笔记——Hertz

文章目录Hertz介绍应用层路由层协议层传输层HZ脚手架Hertz的使用一个简单的案例&#xff1a;利用Hertz监听8080端口并编写/ping的get处理函数Hertz和gin一样&#xff0c;提供了分组路由的功能Hertz路由的匹配优先级&#xff1a;静态路由>命名路由>通配路由参数绑定&#…