首页 > 其他分享 >C学习4

C学习4

时间:2023-08-15 17:46:22浏览次数:19  
标签:right int scanf 学习 printf include left

1、二分查找(折半查找)

#include<stdio.h>
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int left = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int right = sz - 1;
    int k;
    printf("请输入要查找的数字:");
    scanf_s("%d",&k);
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] > k)
        {
            right = mid - 1;
        }
        else if (arr[mid] < k)
        {
            left = mid +1 ;
        }
        else
        {
            printf("找到了,下标是%d\n", mid);
            break;
        }
    }
    if (left > right)
    {
        printf("找不到\n");
    }
    return 0;
}

还是多用scanf_s()做输入,避免内存泄漏;break不知道在哪放的话就看实际想要结束循环的地方放,在这里是找到了的那句。

当数组元素个数为偶数时,除以2得到一个小数,然而数组的下标里没有小数,很多人就很难受,但其实他们忘了int类型是如何取值的了,虽然除出来是小数,但因为int的强制取整,会丢弃掉小数部分,注意不是四舍五入,所以中间值依然为整数。

2、编写代码,演示多个字符从两端移动向中间汇聚。

#include<stdio.h>
#include<Windows.h>
#include<string.h>
#include<stdlib.h>
int main()
{
    char arr1[] = { "Welcome to the Avalon" };
    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);
        Sleep(800);
        system("cls");
        left++;
        right--;
    }
    printf("%s", arr2);
    return 0;
}

如果非要用int right=sizeof(arr1)/sizeof(arr1[0]),那就要末尾-2而不是-1,因为char arr1[]="abc"实际上有a,b,c,\0四个元素

3、仅3次登录机会的登录界面

#include<stdio.h>
#include<string.h>
int main()
{
    int i = 0;
    char password[16] = { 0 };
    for (i = 0; i < 3; i++)
    {
        printf("Please enter the password:");
        scanf("%s", password);
        if (strcmp(password, "201110") == 0)
        {
            printf("Passed\n");
            break;
        }
        else
            printf("Failed\n");
    }
    if (i == 3)
        printf("All the chances wasted, U idiot");
    return 0;
}

卡最久的还是scanf那里,scanf_s、fscanf_s 输入字符串而非整型数字的时候, 需要在后面加上第三个参数,表示捕获的字符个数,如scanf_s("%s",str,10)、fscanf_s(&fp,"%s",str,10);不过最好还是对预处理器做设置会简易点,加参数这个我没试过。

不然就是按照此处链接对项目设置里的预处理器做设置:https://blog.csdn.net/oguro/article/details/52685662?utm_medium=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.test_version_3&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-1.test_version_

标签:right,int,scanf,学习,printf,include,left
From: https://www.cnblogs.com/AvalonForLovers/p/17631953.html

相关文章

  • SpringBoot3 学习笔记 (整合Druid)
    一、Druid Github地址:https://github.com/alibaba/druid/二、配置数据源1、在https://mvnrepository.com/artifact/com.alibaba/druid上找最新的版本 2、在pom.xml中添加上Druid数据源依赖<!--https://mvnrepository.com/artifact/com.alibaba/druid--><dependency......
  • 记录学习day1
    今天在boss上统计了一下.net初级开发技能要求接下来就按照这个学习路线来进行了,随机找了南宁的5家公司下面是要求  前端技术:JavaScript(6)vueAjax(4)bootstrap(2)jquery(2)UniappknokoutJS(不如vue)前端库:jquery-easyuielem后端:webapi(4)ASP.NETMVC(3)多......
  • SpringBoot3 学习笔记 (整合Mybatis-plus)
    1、引入依赖,网址:https://mvnrepository.com/artifact/com.baomidou 找到mybatis-plus-boot-starter这里最新版本为3.5.3.2,点击进去2、在pom.xml中添加依赖,并确认依赖中已经有了mysql-connector-j的依赖<!--https://mvnrepository.com/artifact/com.baomidou/mybatis-pl......
  • 《Java编程思想第四版》学习笔记13
    //:Frog.java//TestingfinalizewithinheritanceclassDoBaseFinalization{publicstaticbooleanflag=false;}classCharacteristic{Strings;Characteristic(Stringc){s=c;out.println("Creating......
  • Markdown基础语法学习
    Markdown学习标题:+空格+内容+空格一级标题+空格二级标题最多六级标题字体:粗体粗体:****前后两个星号,中间内容斜体斜体:前后1星号,中间内容粗斜体粗斜体:前后三个星号,中间内容删除体删除体:~~~~前后两个波浪号中间内容引用引用别人内容.....:>符号加空格。分割......
  • XSS基础学习(3)
    XSS基础学习六、靶场实践(该靶场有bug,直接修改html代码,添加弹窗,就直接可以通关)第八关http://8.130.109.21:9995/level8.php?keyword=not%20bad!//输入点输入javascript:alert(`xss`)查看页面源码发现<ahref="javascr_ipt:alert(`xss`);">,此时试试其他编码是否绕过//pay......
  • 【学习笔记】(19) 启发式合并
    启发式合并启发式合并核心思想就一句话:把小集合的合并到大的里。启发式合并思想可以放到很多数据结构里,链表、线段树、甚至平衡树都可以。考虑时间复杂度,设总共有\(n\)个元素,由于每次集合的大小至少翻倍,所以至多会合并\(logn\)次,总的复杂度就是\(O(nlogn)\)的(结合线段树......
  • 论文解读 | 5分钟带你了解基于深度学习的点云配准的ICP算法
    原创|文BFT机器人01摘要迭代最近点(ICP)及其变式为此任务提供了简单且易于实现的迭代方法,但这些算法可能会收敛到虚假的局部最优值。为了解决ICP通道中的局部最优和其他困难,我们提出了一种基于学习的方法,名为“深度最近点”(DCP),其灵感来自计算机视觉和自然语言处理的最新技术。我们......
  • Hugging News #0814: Llama 2 学习资源大汇总
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」。本期HuggingNews有哪些有趣的消息,快来看看吧!......
  • Java学习笔记(十)
    第7章 面向对象(下)7.1 静态的1、static:静态的2、什么是静态的?和对象无关的,不会因为对象的不同而不同,即所有对象都一样的。换句话说,和对象无关。动态的,根据对象的不同而不同,和对象有关,由对象动态决定。3、static这个关键字用在哪里?(1)成员变量前面:静态变量(2)成员方法前面:静态......