当前位置: 首页 > news >正文

【C语言】每日一题(半月斩)——day4

 

目录

选择题

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

2、运行以下程序后,如果从键盘上输入 65 14<回车> ,则输出结果为( ) 

3、若运行以下程序时,从键盘输入 ADescriptor<回车> ,则下面程序的运行结果是( )

4、如下函数是求两个int数字最大公约数的,指出其中存在的问题【多选】( ) 

 5、执行下面的程序段,语句3的执行次数为( )

掌握continue和break的区别

 编程题

1.错误的集合

2.密码检查 


 

选择题

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++);

解析:

       本体考察的是对for循环      

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

for(赋值语句;判断语句;调整语句);      //(循环变量赋初值; 循环条件; 循环变量增值)

   {

        //...
}

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; //2while(n>m) n=n-m; //3
}printf("m=%d\n",m);return 0;
}

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

解析:

本题考察的是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时,循环结束。选C

while(循环控制表达式)
{
  语句序列
}

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

解析:

        本题考察的是switch-case-default 语句

switch 语句中,如果进入某条case入口中没有break; 会进入下一条case中一直到default,直到遇到break;或者代码结束;        

例当c为'A'时,从case 'A'进入,先后执行v1+=1;v0+=1;v2+=1;,

而当c为'p'时,从default进入,先后执行v0+=1;v2+=1;,最终v0和v2是相等的。选D

switch(表达式)
{
case 常量1:语句1
case 常量2:语句2
default:语句n   
    break;
}

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: 返回类型不对

解析:

本题考察的:==和=(==表示判断是否相等,=表示赋值运算符)
1.函数实参是int,形参用char不对,会发生截断丢失数据;

2.min在for循环开始时更新为0,不再是两个形参中的较小值;

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

4.函数最终要返回一个int值,返回值类型没问题,但是这里要强调一个选项中没写出的问题

选ABC

知识点:'==' 和 '='
   “=”是赋值。
        👉它的作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们用变量作左值,还可以看到,指针和引用也可以作左值。

  “==”是相等操作符,

       👉  判断两边是否相等。利用相等运算符,如果希望相等运算符返回true,则运算符两侧的值或语句必须使相等的;如果不相等,则==运算符返回false。

 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)

解析: 

        本题考察多重循环体       

外循环有n次,

        当i=0,内循环为n次,

        当i=1,内循环为n-1次,

        当i=2时,内循环为n-2次,

以此类推,总次数为 n+(n-1)+(n-2)+......+2+1,就是个等差数列,等于n(n+1)/2。 选C

在多重循环中有很多类型的循环嵌套

// 外层循环
while(条件1){ // 内层循环for(条件2){  }do{}while(条件3);
}

在循环嵌套中最需要注意的就是跳转语句

掌握continue和break的区别

👉break:

        退出当前循环!如果出现在多重循环的内层循环中,不会退出外层循环,只会退出当前循环。

👉continue(继续):

        结束本次循环(后面的代码不执行了),进入下一次循环。

break可以出现在switch选择结构和循环结构中,continue只能出现在循环中。

利用continue和break实现重复输入。

 编程题

1.错误的集合

645.错误的集合——力扣

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

解析:

将数组排序,才能去遍历;

        returnSize是指返回数组元素的个数。

1.:使用qsort()函数将数组排序成升序;

2:为返回值数组开辟动态内存空间,否则在出函数时会释放;

3:定义一个数来记录数组的前一个数;

4:遍历数组:相同记录为num[0],数组当前元素-前一个元素值大于一说明中间的就是缺的元素num[1];

5:如果最后一个元素不等于长度,说明最后一个就是缺的元素。

int my_cmp(const void* p1,const void* p2)
{return *(int*)p1 - *(int*)p2;
}int* findErrorNums(int* nums, int numsSize, int* returnSize)
{//将数组进行升序排序qsort(nums,numsSize,4,my_cmp);//returnSize为返回数组元素个数*returnSize = 2;//开辟动态内存空间,否则在出函数时会释放int* num = (int*)malloc(sizeof(int)*2);//定义数组的前一个数int front = 0;//遍历数组for(int i = 0; i < numsSize;i++ ){//相同记录为num[0]if(nums[i] == front){num[0] = nums[i];}//数组当前元素-前一个元素值大于一说明中间的就是缺的元素else if(nums[i] - front > 1){num[1] = nums[i]-1;}front = nums[i];}//最后一个元素不等于长度,说明最后一个就是缺的元素if(nums[numsSize-1] != numsSize){num[1] = numsSize;}return num;
}

2.密码检查 

密码检查_牛客题霸_牛客网 (nowcoder.com)

输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。 

解析

1:创建输入密码数量的n,和字符串arr;

2:for循环遍历,创建用于记录密码的字符是否正确count,顺便求字符串长度;

3:判断字符串长度是否合法;

4:遍历一遍字符串,格式正确就记录count;

5:最后将字符串长度与count比较,相同“YES”,反之“NO”。


int main()
{int n = 0;scanf("%d", &n);//字符串长度限制char arr[100] = { 0 };//密码个数for (int j = 0; j < n; j++){scanf("%s", arr);//用于记录密码的字符是否正确int count = 0;//字符串长度int sz = strlen(arr);//是否符合长度要求if (sz >= 8 && sz <= 100){//遍历一遍字符串,格式正确就记录for (int i = 0; i < sz; i++){if (arr[i] >= 'A' && arr[i] <= 'Z' ||arr[i] >= 'a' && arr[i] <= 'z' ||arr[i] >= '0' && arr[i] <= '9'){count++;}}}//长度对比if (sz == count){printf("YES\n");}else{printf("NO\n");}}return 0;
}

 

 

相关文章:

【C语言】每日一题(半月斩)——day4

目录 选择题 1、设变量已正确定义&#xff0c;以下不能统计出一行中输入字符个数&#xff08;不包含回车符&#xff09;的程序段是&#xff08; &#xff09; 2、运行以下程序后&#xff0c;如果从键盘上输入 65 14<回车> &#xff0c;则输出结果为&#xff08; &…...

Are you sure you want to continue connecting (yes/no) 每次ssh进

Lunix scp等命令不需要输入yes确认方法_scp不需要确认-CSDN博客 方法一&#xff1a;连接时加入StrictHostKeyCheckingno ssh -o StrictHostKeyCheckingno root192.168.1.100 方法二&#xff1a;修改/etc/ssh/ssh_config配置文件&#xff0c;添加&#xff1a; StrictHostKeyC…...

网络与信息系统安全设计规范

1、总则 1.1、目的 为规范XXXXX单位信息系统安全设计过程&#xff0c;确保整个信息安全管理体系在信息安全设计阶段符合国家相关标准和要求&#xff0c;特制订本规范。 1.2、范围 本规范适用于XXXXX单位在信息安全设计阶段的要求和规范管理。 1.3、职责 网络安全与信息化…...

在Linux怎么用vim实现把一个文件里面的文本复制到另一个文件里面

2023年10月9日&#xff0c;周一下午 我昨天遇到了这个问题&#xff0c;但在网上没找到图文并茂的博客&#xff0c;于是我自己摸索出解决办法后&#xff0c;决定写一篇图文并茂的博客。 情景 假设现在我要用vim把file_transfer.cpp的内容复制到file_transfer.hpp里面 第一步 …...

CCAK—云审计知识证书学习

目录 一、CCAK云审计知识证书概述 二、云治理概述 三、云信任 四、构建云合规计划 <...

3.springcloudalibaba gateway项目搭建

文章目录 前言一、搭建gateway项目1.1 pom配置1.2 新增配置如下 二、新增server服务2.1 pom配置2.2新增测试接口如下 三、测试验证3.1 分别启动两个服务&#xff0c;查看nacos是否注册成功3.2 测试 总结 前言 前面已经完成了springcloudalibaba项目搭建&#xff0c;接下来搭建…...

Debezium日常分享系列之:Debezium 2.3.0.Final发布

Debezium日常分享系列之&#xff1a;Debezium 2.3.0.Final发布 一、重大改变二、PostgreSQL / MySQL 安全连接更改三、JDBC 存储编码更改四、新功能和改进五、Kubernetes 的 Debezium Server Operator六、新的通知子系统七、新的可扩展信号子系统八、JMX 信号和通知集成九、新的…...

js为什么是单线程?

基础 js为什么是单线程&#xff1f; 多线程问题 类比操作系统&#xff0c;多线程问题有&#xff1a; 单一资源多线程抢占&#xff0c;引起死锁问题&#xff1b;线程间同步数据问题&#xff1b; 总结 为了简单&#xff1a; 更简单的dom渲染。js可以操控dom&#xff0c;而一…...

centos安装redis教程

centos安装redis教程 安装的版本为centos7.9下的redis3.2.100版本 1.下载地址 Index of /releases/ 使用xftp将redis传上去。 2.解压 tar -zxvf 文件名.tar.gz 3.安装 首先&#xff0c;确保系统已经安装了GCC编译器和make工具。可以使用以下命令进行安装&#xff1a; sudo y…...

把短信验证码储存在Redis

校验短信验证码 接着上一篇博客https://blog.csdn.net/qq_42981638/article/details/94656441&#xff0c;成功实现可以发送短信验证码之后&#xff0c;一般可以把验证码存放在redis中&#xff0c;并且设置存放时间&#xff0c;一般短信验证码都是1分钟或者90s过期&#xff0c;…...

【已编译资料】基于正点原子alpha开发板的第三篇系统移植

系统移植的三大步骤如下&#xff1a; 系统uboot移植系统linux移植系统rootfs制作 一言难尽&#xff0c;踩了不少坑&#xff0c;当时只是想学习驱动开发&#xff0c;发现必须要将第三篇系统移植弄好才可以学习后面驱动&#xff0c;现将移植好的文件分享出来&#xff1a; 仓库&…...

地下城堡3魂之诗食谱,地下城堡3菜谱37种

地下城堡3魂之诗食谱大全&#xff0c;让你解锁制作各种美食的方法&#xff01;不同的食材搭配不同的配方制作&#xff0c;食物效果和失效也迥异。但有时候我们可能会不知道如何制作这些食物&#xff0c;下面为您介绍地下城堡3菜谱37种。 关注【娱乐天梯】&#xff0c;获取内部福…...

HDMI 基于 4 层 PCB 的布线指南

HDMI 基于 4 层 PCB 的布线指南 简介 HDMI 规范文件里面规定其差分线阻抗要求控制在 100Ω 15%&#xff0c;其中 Rev.1.3a 里面规定相对放宽了一些&#xff0c;容忍阻抗失控在 100Ω 25%范围内&#xff0c;不要超过 250ps。 通常&#xff0c;在 PCB 设计时&#xff0c;注意控…...

理解Go中的布尔逻辑

布尔数据类型(bool)可以是两个值之一&#xff0c;true或false。布尔值在编程中用于比较和控制程序流程。 布尔值表示与数学逻辑分支相关的真值&#xff0c;它指示计算机科学中的算法。布尔(Boolean)一词以数学家乔治布尔(George Boole)命名&#xff0c;总是以大写字母B开头。 …...

rv1126-rknpu-v1.7.3添加opencv库

rv1126所使用的rknn sdk里默认是不带opencv库的&#xff0c;官方所用的例程里也没有使用opencv&#xff0c;但是这样在进行图像处理的时候有点麻烦了&#xff0c;这里有两种办法: 一是先用python将所需要的图片处理好后在转化为bin格式文件&#xff0c;在使用c或c进行读取&…...

【Redis】Redis持久化深度解析

原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 Redis持久化介绍RDB原理Fork函数与写时复制关于写时复制的思考 RDB相关配置 AOF原理AOF持久化配置AOF文件解读AOF文件修复AOF重写AOF缓冲区与AOF重写缓存区AOF缓冲区可以替代AOF重写缓冲区吗AOF相关配置写后…...

c/c++--字节对齐(byte alignment)

1. 默认字节对齐 在所有结构体成员的字节长度都没有超出操作系统基本字节单位(32位操作系统是4,64位操作系统是8)的情况下 按照结构体中字节最大的变量长度来对齐&#xff1b;若结构体中某个变量字节超出操作系统基本字节单位 那么就按照系统字节单位来对齐。 注意&#xff1…...

算法进阶——字符串的排列

题目 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n<10 要求&#xff1a;空间复…...

js中 slice 用法用法全解析

slice 工作原理 在深入研究一些更高级的用法之前&#xff0c;让我们看一下 slice 方法的基础知识。如MDN文档&#xff0c; slice 是数组上的一个方法&#xff0c;它最多有两个参数: arr.slice([begin[, end]]) begin 从该索引处开始提取原数组中的元素,如果该参数为负数&am…...

Typora安装教程

Typora 安装教程 安装 官网最新版 自行官网下载 社区版&#xff08;老版本&#xff0c;附带激活码&#xff09; 链接: https://pan.baidu.com/s/1t_3o3Xi7x09_8G1jpQYIvg?pwdmeyf 提取码: meyf 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 将百度云盘下…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...