【C刷题】day4

news2024/11/17 14:29:26

一、选择题

1、设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )

 A: n=0;while(ch=getchar()!='\n')n++;                             B: n=0;while(getchar()!='\n')n++;

C: for(n=0;getchar()!='\n';n++);                                         D: n=0;for(ch=getchar();ch!='\n';n++);

【答案】:

D

【解析】:

考点:for循环的逻辑

对于for循环,第一项初始化表达式只执行一次,因此ch只从输入流中取一个字符,之后就再不会取字符,因此会死循环


2、运行以下程序后,如果从键盘上输入 65 14<回车> ,则输出结果为( )
int main()
{
int m, n;
printf("Enter m,n;");
scanf("%d%d", &m,&n);
while (m!=n) //1
{
  while(m>n) m=m-n; //2
  while(n>m) n=n-m; //3
}

printf("m=%d\n",m);
return 0;
}

A: 3 B: 2 C: 1 D: 0 

【答案】:

C

【解析】:

考点:while循环和嵌套循环(怎么理清思路)

初值m=65,n=14;循环1判断m!=n为真,来到循环2判断m>n为真,执行m=m-n;直到m=9,n=14;循环2结束来到循环3判断n>m为真,执行n=n-m;直到m=9,n=5;循环3结束回到循环1,如此往复直到m==n时,循环结束

上面的图表示m和n的变化,

蓝色部分表示while(m>n) m=m-n; //2

红色部分表示:while(n>m) n=n-m; //3

外部循环一直进行,直到m=n=1停止


3、若运行以下程序时,从键盘输入 ADescriptor<回车> ,则下面程序的运行结果是( )
#include <stdio.h>
int main()
{
char c;
int v0=0,v1=0,v2=0;
 do
 {
   switch(c=getchar())
   {
    case'a':case'A':
    case'e':case'E':
    case'i':case'I':
    case'o':case'O':
    case'u':case'U':v1 += 1;
    default:v0+= 1;v2+=1;
    }

 }while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
return 0;
}

A: v0=7,v1=4,v2=7      B: v0=8,v1=4,V2=8          C: v0=11,v1=4,v2=11       D:v0=12,v1=4,v2=12 

【答案】:

D

【解析】:

考点:do while循环的逻辑+case语句中的break易错点

注意点1:case语句后面没有break,那么执行完v1 += 1,还是会继续进入default:v0+= 1;v2+=1;

注意点2:do while循环是先执行,再进行判断,所以当c=r(倒数第二个字符),进入while循环,c就等于'\0',但是还是会执行do语句,v0和v2还是会+1


4、如下函数是求两个int数字最大公约数的,指出其中存在的问题【多选】( )
int gcd(char x,char y)
{
  int min = x < y ? x : y;
  for (min = 0; min > 0; min--)
  if (x % min = 0 && y % min = 0)
  return min;
}

A: 参数类型不对 B: 循环变量min初值不对 C: 判断等于的符号不对 D: 返回类型不对  

【答案】:

ABC

【解析】:

考点:==和=(==表示判断是否相等,=表示赋值运算符)

1.题目说是求两个int数字的最大公约数,所以实参是int,形参用char不对,会发生截断丢失数据;

2.min在for循环开始时更新为0,不再是两个形参中的较小值,不然上一条语句求min没作用;

3.判断是否整除的时候误将==写成=赋值运算符;

4.函数最终要返回一个int值,返回值类型没问题,

但是这里要强调一个选项中没写出的问题,如果是牛客网上的题,会报编译错误,说该函数不是在所有情况下都有返回值,只有在if条件成立的情况下有返回值,一般在vs上这种情况能通过,编译器会给一个默认的返回值。(即格式问题)


5、执行下面的程序段,语句3的执行次数为( )
for(i = 0; i <= n-1; i++) // (1)
for(j = n; j > i; j--) // (2)
state; // (3)

A: n(n+2)/2 B: (n-1)(n+2)/2 C: n(n+1)/2 D: (n-1)(n+2) 

【答案】:

C

【解析】:

考点:嵌套循环的循环总次数

外循环有n次,当i=0,内循环为n次,当i=1,内循环为n-1次,当i=2时,内循环为n-2次,以此类推,总次数为n+(n-1)+(n-2)+......+2+1,就是个等差数列,等于n(n+1)/2


二、编程题

1.错误的集合

5406e0f8f4114ed5b19261dec12c6eea.png

 【参考答案】: 

思路:

创建一个count数组统计出现2次和出现0次的数,再去遍历数组,如果出现两次就是arr【0】,没出现就是arr【1】

1.统计数字出现的次数:count[nums[i]]++

2.易错点:count数组的大小应该开辟numsSize+1个int类型大小(因为统计数字出现的次数时count【n】这个n是可以取到的,那么就需要开辟n+1个空间)

int* findErrorNums(int* nums, int numsSize, int* returnSize)
{
    *returnSize=2;
    //根据flag判断这两个数是否找到
    int flag1=0;
    int flag2=0;
    //为返回数组创建空间
    int *arr=(int *)malloc(sizeof(int)*2);
    //创建:统计每个数出现次数的数组count
    int *count=(int *)malloc(sizeof(int *)*(numsSize+1));
    //给count数组初始化为0
    memset(count,0,sizeof(int)*(numsSize+1));
    //统计nums数组每个数字出现的次数
    for(int i=0;i<numsSize;i++)
    {
        count[nums[i]]++;//这里就解释了上面为啥要为count开辟numSize+1个int大小的空间
    }
    //找出重复的数arr【0】和缺失的数arr【1】
    for(int i=1;i<numsSize+1;i++)
    {
        //如果两个数都找到了就停止遍历
        if(flag1&&flag2)
           break;
        //找重复的数
        if(count[i]==2)
        {
           arr[0]=i;
           flag1=1;
        }
        //找缺失的数
        if(count[i]==0)
        {
            arr[1]=i;
            flag2=1;
        }
    }
    return arr;
}

2.密码检查

5117da5ab3474ddc9162b18a94e9efdd.png

  【参考答案】: 

思路:

用flag来进行标记:flag若为0输出NO,为1则返回YES

再分别进行每个条件的判断

1.字符分类函数(eg:int isdigit(int c))的参数形式都是int类型,但是str字符串是char类型,那么就需要进行强转(int)

2.密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种:可以采取创建三个变量a,b,c分别代表这三类字符并初始化为0,如果出现就改为1,最后如果a+b+c<2就不满足条件

#include <ctype.h>
#include <stdio.h>
#include<string.h>
int main() 
{
    //输入n值
    int n = 0;
    scanf("%d", &n);
    //多次输入并判断
    while (n--) {
        //flag若为0输出NO,为1则返回YES
        int flag = 1;
        //分别统计大写字母,小写字母和数字是否出现,如果出现则为1,反之为0
        int a = 0;
        int b = 0;
        int c = 0;
        //输入一个字符串
        char str[101] = { 0 };
        scanf("%s", str);
        //判断密码长度至少为8  和 密码不能以数字开头
        if (strlen(str) < 8 || isdigit((int)str[0]))
            flag = 0;
        //密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种
        for (int i = 0; str[i] != '\0'; i++) {
            if (isupper((int)str[i]))
                a = 1;
            if (islower((int)str[i]))
                b = 1;
            if (isdigit((int)str[i]))
                c = 1;
            if (!(isalnum((int)str[i])))
                flag = 0;
        }
        //如果密码中大写字母,小写字母和数字这三种字符小于两种:则返回NO
        if (a + b + c < 2)
            flag = 0;
        //输出
        if (flag == 1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

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

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

相关文章

加密市场波动:地缘政治与美股走弱引发不确定性!

伴随着国庆假期的结束&#xff0c;多日波动率维持低位的加密市场也似乎开始苏醒。近期多次突破28000美元未果的比特币&#xff0c;于9日15:00开始从27800美元附近下跌&#xff0c;最低跌至27260美元&#xff0c;同期以太坊也至1550美元左右&#xff0c;创近半个月来新低。 Coin…

JVM 虚拟机面试知识脑图 初高级

导图下载地址 https://mm.edrawsoft.cn/mobile-share/index.html?uuid3f88d904374599-src&share_type1 类加载器 双亲委派模型 当一个类收到类加载请求,它首先把类加载请求交给父类(如果还有父类,继续往上递交请求).如果父类无法加载该类,再交给子类加载 防止内存中出现…

[LeetCode]链式二叉树相关题目(c语言实现)

文章目录 LeetCode965. 单值二叉树LeetCode100. 相同的树LeetCode101. 对称二叉树LeetCode144. 二叉树的前序遍历LeetCode94. 二叉树的中序遍历LeetCode145. 二叉树的后序遍历LeetCode572. 另一棵树的子树 LeetCode965. 单值二叉树 题目 Oj链接 思路 一棵树的所有值都是一个…

mysql面试题33:Blob和text有什么区别

该文章专注于面试&#xff0c;面试只要回答关键点即可&#xff0c;不需要对框架有非常深入的回答&#xff0c;如果你想应付面试&#xff0c;是足够了&#xff0c;抓住关键点 面试官&#xff1a;Blob和text有什么区别 Blob和text是数据库中存储大文本数据的两种数据类型&#…

都2023年了,你必须知道的几款主流性能测试工具!

市面上流行的压力/负载/性能测试工具多是来自国外&#xff0c;近年来国内的性能测试工具也如雨后春笋崛起。同时由于开发的目的和侧重点不同&#xff0c;其功能也有很大差异&#xff0c;下面就为您简单介绍10款目前最常见的测试产品。 1、kylinTOP测试与监控平台&#xff08;商…

Transformer为什么如此有效 | 通用建模能力,并行

目录 1 更强更通用的建模能力 2 并行计算 3 大规模训练数据 4 多训练技巧的集成 Transformer是一种基于自注意力机制的网络&#xff0c;在最近一两年年可谓是大放异彩&#xff0c;我23年入坑CV的时候&#xff0c;我看到的CV工作似乎还没有一个不用到Transformer里的一些组…

毕业设计项目选题Java高考志愿咨询平台 高考志愿填报助手系统源码+调试+开题+lw

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

Netty 介绍

1 Netty 原理 Netty 是一个高性能、异步事件驱动的 NIO 框架&#xff0c;基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持&#xff0c;作为一个异步 NIO 框架&#xff0c;Netty 的所有 IO 操作都是异步非阻塞的&#xff0c;通过 Future-Listener 机制&…

jQuery 模版

一、安装 <script type"text/javascript" src"http://ajax.microsoft.com/ajax/jquery /jquery-1.4.min.js"></script> 二、元素隐藏/显示 &#xff0c;jQuery toggle() 通过 jQuery&#xff0c;可以使用 toggle() 方法来切换 hide() 和 sh…

关于系统/网络运维面试经验总结

一. 熟悉Linux命令 1. 最最最常问到的是 如何查看系统内存占用情况&#xff1f; ① free命令&#xff1a;free [-h][-m] 显示系统的内存使用情况&#xff0c;包括总内存、已使用内存、空闲内存等信息。其中&#xff0c;-m选项是以MB为单位来展示内存使用信息&#xff1b;-h选…

一些常见的测度

见 知乎 https://zhuanlan.zhihu.com/p/615270645

Linux添加新硬盘并挂载(mount)到目录下

首先列出文件系统的整体磁盘空间使用情况&#xff0c;可以用来查看磁盘已被使用多少空间和还剩余多少空间。 df -h 然后列出块设备信息&#xff1a;以树形展示你的磁盘以及磁盘分区信息 lsblk 现在有一块 3T 的磁盘 vdb&#xff0c;我们现在将它进行 磁盘分区 fdisk /dev/vd…

jdk的bin目录下的工具

Java Development Kit (JDK) 的 bin 目录包含了许多与 Java 开发和运行相关的命令。 以下是 bin 目录下一些常见的命令&#xff0c;包括 jps&#xff1a; java - 启动 Java 应用程序的命令。javac - Java 编译器&#xff0c;用于将 Java 源代码编译成字节码文件。javap - Java …

基于springboot实现家具销售电商平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现家具销售电商平台管理系统演示 摘要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的交易方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&am…

Bootstrap关于盒子(盒模型)边距的设置

关于Bootstrap的盒子(盒模型)边距&#xff0c;其实在之前的很多示例代码中用到了。在博文 Bootstrap的CSS类积累学习 也有收集到不少相关的类。 详细的介绍&#xff0c;请大家参看下面这张图。 示例代码如下&#xff1a; <!DOCTYPE html> <html> <head>&l…

sface人脸相似度检测

sface人脸相似度检测&#xff0c;基于OPENCV&#xff0c;人脸检测采用yunet&#xff0c;人脸识别采用sface&#xff0c;支持PYTHON/C开发&#xff0c;图片来自网络&#xff0c;侵权请联系本人立即删除 yunet人脸检测sface人脸识别&#xff0c;检测两张图片的人脸相似度

华为OD机试 - 数组组成的最小数字(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

UI自动化测试:Selenium+PO模式+Pytest+Allure整合

本人目前工作中未涉及到WebUI自动化测试&#xff0c;但为了提升自己的技术&#xff0c;多学习一点还是没有坏处的&#xff0c;废话不多说了&#xff0c;目前主流的webUI测试框架应该还是selenium&#xff0c;考虑到可维护性、拓展性、复用性等&#xff0c;我们采用PO模式去写我…

基于Springboot实现点餐平台网站管理系统项目【项目源码+论文说明】

基于Springboot实现点餐平台网站管理系统演示 摘要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多商家的之中&#xff0c;随之就产生了“点餐平台网站”&#xff0c;这样就让点餐平台网站更加方便简单。 对于本…

设计模式 - 行为型模式考点篇:观察者模式(概述 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、观察者模式 1.1.1、概述 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 1.1、观察者模式 1.1.1、概述 观察者模式又称为 发布 - 订阅 模式.&#xff0c;就是让多个观察者对象同时监听同一个主题对象. 这个主题对象在变化的同…