【C语言】易错题 经典题型
出错原因:之前运行起来的可执行程序没有关闭 关闭即可
平均数(average)
输入3个整数,输出它们的平均值,保留3位小数。
#include <stdio.h>
int main()
{int a, b, c;scanf("%d %d %d", &a, &b, &c);printf("%.3lf", (a + b + c) / 3.0); //注意3.0不能写成3return 0;
}
整数/整数=整数,浮点数/浮点数=浮点数
下面那个不是转义字符?
A.‘\n’
B.‘\060’
C.‘\q’
D.‘\b’
答案解析:
C
A:‘\n’ 转义字符,代表换行
B:‘\060’ 转义字符,060八进制数据,十进制为48,表示ASCII码为48的’0’
C:‘\q’ 什么都不是
D:‘\b’ 转义字符,表示退格。
下面程序的结果是:( )
#include <stdio.h>
#include <string.h>
int main()
{printf("%d\n", strlen("c:\test\121"));return 0;
}
A.7
B.8
C.9
D.10
答案解析:
A
strlen:获取字符串的有效长度,不包括’\0’
“c:\test\121”: 在该字符串中,\t是转移字符,水平制表,跳到下一个tab的位置;而\121表示一个字符,是讲121看做8进制数组,转换为10进制后的81,作业为ASCII码值的字符,即:字符’Q’ ,故上述字符串实际为:“c: estQ”,只有7个有效字符
.局部变量是放在内存的静态区的,全局变量是放在内存的栈区()
答案
(错)局部变量是放在内存的栈区的,全局变量是放在内存的静态区
负数求模的规则是,结果的正负号由第一个运算数的正负号决定。()
答案
(对)
关于scanf函数
scanf()处理所有占位符时,会自动过滤起首的空白字符,包括空格、制表符、换行符()
scanf的占位符%s表示读取一个字符串,遇到空白字符也全部读取()
scanf是库函数,库函数不需要包含头文件()
(错):scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符,scanf输出字符占位符的时候,不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。
(错):scanf的占位符%s表示读取一个字符串,遇到空白字符就停止读取。
(错):scanf需要包含stdio.h这个头文件的
printf函数
printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n个
答案
(错)printf()参数与占位符是一一对应关系,如果有n个占位符,printf()的参数就应该有n+1个
下面程序输出的结果是啥:
#include <stdio.h>
int main()
{printf("%5d\n", 123456);return 0;
}
A.12345
B.123456
C.23456
答案
B.printf()允许限定占位符的最小宽度。%5d表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。如果超过5位,正常输出就行,5是最少输出5位。
关于关系操作符说法错误的是?
A.C语言的关系操作符就是用来比较大小关系的
B.关系操作符中判断是否相等使用 = =
C. = = 操作符可以用来比较2个字符串是否相等
D.关系操作符参与的关系表达式,通常返回0或1,表示真假
正确答案:
C
两个字符串是否相等不能使用==,应该使用strcmp函数
关于switch说法不正确的是:( )
A.switch语句中的default子句可以放在任意位置
B.switch语句中case后的表达式只能是整形常量表达式
C.switch语句中case子句必须在default子句之前
D.switch语句中case表达式不要求顺序
正确答案:
C
答案解析:
A:正确,可以放在任意位置,但是一般建议最好还是放在最后
B:正确,case语句后一般放整形结果的常量表达式或者枚举类型,枚举类型也可以看成是一个特殊的常量
C:错误,没有规定case必须在default之前,一般case最好放在default之前
D:正确,但一般还是按照次序来
下面代码的执行结果是什么( )
#include <stdio.h>
int main() {int x = 3;int y = 3;switch (x % 2) {case 1:switch (y){case 0:printf("first");case 1:printf("second");break;default: printf("hello");}case 2:printf("third");}return 0;
}
A.secondthird
B.hello
C.firstsecond
D.hellothird
正确答案:
D
switch语句时多分支的选择语句,switch中表达式结果命中那个case,就执行该case子项,如果case子项后没有跟break语句,则继续往下执行。
关于该题:先在内部switch的default位置打印hello,紧接着在外部case2中打印third
switch( c )语句中,c不可以是什么类型( )
A.int
B.long
C.char
D.float
正确答案:
D
switch语句中表达式的类型只能是:整形和枚举类型
D选项为浮点类型,不是整形和枚举类型
func(1) = ( )
int func(int a)
{int b;switch (a){case 1: b = 30;case 2: b = 20;case 3: b = 16;default: b = 0;}return b;
}
A.30
B.20
C.16
D.0
正确答案:
D
switch的每个case之后如果没有加break语句,当前case执行结束后,会继续执行紧跟case中的语句。
func(1)可知,在调用func时形参a的值为1,switch(a)<==>switch(1),case 1被命中,因为该switch语句中所有分支下都没有增加break语句,因此会从上往下顺序执行,最后执行default中语句返回。
break和continue
打印素数
写一个代码:打印100~200之间的素数
/*
思路:
素数:即质数,除了1和自己之外,再没有其他的约数,则该数据为素数,具体方式如下
*///方法一:试除法
int main()
{int i = 0;int count = 0;// 外层循环用来获取100~200之间的所有数据,100肯定不是素数,因此i从101开始for(i=101; i<=200; i++){//判断i是否为素数:用[2, i)之间的每个数据去被i除,只要有一个可以被整除,则不是素数int j = 0;for(j=2; j<i; j++){if(i%j == 0)break;}// 上述循环结束之后,如果j和i相等,说明[2, i)之间的所有数据都不能被i整除,则i为素数if(j==i){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}//上述方法的缺陷:超过i一半的数据,肯定不是i的倍数,上述进行了许多没有意义的运算,因此可以采用如下
// 方式进行优化
// 方法二:每拿到一个数据,只需要检测其:[2, i/2]区间内是否有元素可以被2i整除即可,可以说明i不是素数
int main()
{int i = 0;//int count = 0;for(i=101; i<=200; i++){//判断i是否为素数//2->i-1int j = 0;for(j=2; j<=i/2; j++){if(i%j == 0)break; }//...if(j>i/2){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}/*
方法二还是包含了一些重复的数据,再优化:
如果i能够被[2, sqrt(i)]之间的任意数据整除,则i不是素数
原因:如果 m 能被 2 ~ m-1 之间任一整数整除,其二个因子必定有一个小于或等于sqrt(m),另一个大于或等于 sqrt(m)。
*/
int main()
{int i = 0;int count = 0;for(i=101; i<=200; i++){//判断i是否为素数//2->i-1int j = 0;for(j=2; j<=sqrt(i); j++){if(i%j == 0)break; }//...if(j>sqrt(i)){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}
//方法4
/*
继续对方法三优化,只要i不被[2, sqrt(i)]之间的任何数据整除,则i是素数,但是实际在操作时i不用从101逐渐递增到200,因为出了2和3之外,不会有两个连续相邻的数据同时为素数
*/
int main()
{int i = 0;int count = 0;for(i=101; i<=200; i+=2){//判断i是否为素数//2->i-1int j = 0;for(j=2; j<=sqrt(i); j++){if(i%j == 0)break; }//...if(j>sqrt(i)){count++;printf("%d ", i);}}printf("\ncount = %d\n", count);return 0;
}
打印闰年
打印1000年到2000年之间的闰年
/*
思路:
要求1000年到2000年之间的闰年,只需要知道求解闰年的方法即可。
闰年的条件:如果N能够被4整除,并且不能被100整除,则是闰年或者:N能被400整除,也是闰年即:4年一润并且百年不润,每400年再润一次
*/#include <stdio.h>
int main()
{int year = 0;for(year=1000; year<=2000; year++){//判断year是否为闰年if(year%4==0) // 如果year能够被4整除,year可能为闰年{if(year%100!=0) // 如果year不能内100整除,则一定是闰年printf("%d ", year);}if(year%400 == 0) // 每400年再润一次printf("%d ", year);}return 0;
}
//
//介绍一下这种的简单写法
//
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;
}
最大公约数
给定两个数,求这两个数的最大公约数
例如:
输入:20 40
输出:20
/*
最大公约数:即两个数据中公共约数的最大者。
求解的方式比较多,暴力穷举、辗转相除法、更相减损法、Stein算法算法
此处主要介绍:辗转相除法思路:
例子:18和24的最大公约数
第一次:a = 18 b = 24 c = a%b = 18%24 = 18循环中:a = 24 b=18
第二次:a = 24 b = 18 c = a%b = 24%18 = 6循环中:a = 18 b = 6
第三次:a = 18 b = 6 c=a%b = 18%6 = 0循环结束
此时b中的内容即为两个数中的最大公约数。
*/
int main()
{int a = 18;int b = 24;int c = 0;while(c=a%b){a = b;b = c;}printf("%d\n", b);return 0;
}
相关文章:

【C语言】易错题 经典题型
出错原因:之前运行起来的可执行程序没有关闭 关闭即可 平均数(average) 输入3个整数,输出它们的平均值,保留3位小数。 #include <stdio.h> int main() {int a, b, c;scanf("%d %d %d", &a, &…...
哈夫曼编码:数据压缩的优雅艺术
哈夫曼编码:数据压缩的优雅艺术 在数字信息时代,数据压缩技术扮演着至关重要的角色。其中,哈夫曼编码(Huffman Coding)作为一种经典的无损压缩算法,以其简洁优雅的设计和卓越的压缩效率而闻名。本文将通过…...

说一说Node.js高性能开发中的I/O操作
众所周知,在软件开发的领域中,输入输出(I/O)操作是程序与外部世界交互的重要环节,比如从文件读取数据、向网络发送请求等。这段时间,也指导项目中一些项目的开发工作,发现在Node.js运用中&#…...
扫描网络内所有设备的IP地址
arp 命令本身不能直接列出网络中所有 IP 地址,它只能显示本机 ARP 缓存中已知的 IP-MAC 映射,即:本机通信过的设备。 如果你想查询局域网中所有在线的 IP 地址,需要配合 ping 扫描或使用更强大的工具。以下是几种常见的方法&…...
web3 前端常见错误类型以及错误捕获处理
在Web3前端开发中,常见的错误类型包括用户拒绝交易、RPC节点超时、网络连接问题、智能合约调用错误等。正确捕获这些错误并提供友好的用户提示是提升用户体验的关键。以下是一些常见的Web3前端错误类型及其处理方法: 1. 用户拒绝交易 根据错误码 4001 …...

应用层协议简介:以 HTTP 和 MQTT 为例
文章目录 应用层协议简介:什么是应用层协议?为什么需要应用层协议?什么是应用层协议?为什么需要应用层协议? HTTP 协议详解HTTP 协议特点HTTP 工作的基本原理HTTP 请求与响应示例为什么 Web 应用基于 HTTP 请求&#x…...

LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串
LeetCode 39. 组合总和 需要注意的是题目已经明确了数组内的元素不重复(重复的话需要执行去重操作),且元素都为正整数(如果存在0,则会出现死循环)。 思路1:暴力解法 对最后结果进行去重 每一…...

如何在 Windows 11 或 10 上安装 Fliqlo 时钟屏保
了解如何在 Windows 11 或 10 上安装 Fliqlo,为您的 PC 或笔记本电脑屏幕添加一个翻转时钟屏保以显示时间。 Fliqlo 是一款适用于 Windows 和 macOS 平台的免费时钟屏保。它也适用于移动设备,但仅限于 iPhone 和 iPad。Fliqlo 的主要功能是在用户不活动时在 PC 或笔记本电脑…...
Linux云计算训练营笔记day08(MySQL数据库)
Linux云计算训练营笔记day08(MySQL数据库) 目录 Linux云计算训练营笔记day08(MySQL数据库)数据准备修改更新update删除delete数据类型1.整数类型2.浮点数类型(小数)3.字符类型4.日期5.枚举: 表头的值必须在列举的值里选择拷贝表复…...
计算机视觉与深度学习 | matlab实现EMD-CNN-LSTM时间序列预测(完整源码、数据、公式)
EMD-CNN-LSTM 一、完整代码实现二、核心公式说明1. **经验模态分解(EMD)**2. **1D卷积运算**3. **LSTM门控机制**4. **损失函数**三、代码结构解析四、关键参数说明五、性能优化建议六、典型输出示例以下是用MATLAB实现EMD-CNN-LSTM时间序列预测的完整方案,包含数据生成、经…...
【vue】【环境配置】项目无法npm run serve,显示node版本过低
解决方案:安装高版本node,并且启用高版本node 步骤: 1、查看当前版本 node -v2、配置nvm下载镜像源 1)查看配置文件位置 npm root2)找到settings.txt文件 修改镜像源为: node_mirror: https://npmmirro…...

国芯思辰| 轮速传感器AH741对标TLE7471应用于汽车车轮速度感应
在汽车应用中,轮速传感器可用于车轮速度感应,为 ABS、ESC 等安全系统提供精确的轮速信息,帮助这些系统更好地发挥作用,在紧急制动或车辆出现不稳定状态时,及时调整车轮的制动力或动力分配。 国芯思辰两线制差分式轮速…...
鸿蒙PC操作系统:从Linux到自研微内核的蜕变
鸿蒙PC操作系统是否基于Linux内核,需要结合其技术架构、发展阶段和官方声明综合分析。以下从多个角度展开论述: 一、鸿蒙操作系统的多内核架构设计 多内核混合架构 根据资料,鸿蒙操作系统(HarmonyOS)采用分层多内核架构,内核层包含Linux内核、LiteOS-m内核、LiteOS-a内核…...

小程序弹出层/抽屉封装 (抖音小程序)
最近忙于开发抖音小程序,最想吐槽的就是,既没有适配的UI框架,百度上还找不到关于抖音小程序的案列,我真的很裂开啊,于是我通过大模型封装了一套代码 效果如下 介绍 可以看到 这个弹出层是支持关闭和标题显示的…...
深入理解动态规划:从斐波那契数列到最优子结构
引言 动态规划(Dynamic Programming, DP)是算法设计中一种非常重要的思想,广泛应用于解决各类优化问题。许多看似复杂的问题,通过动态规划的视角分析,往往能找到高效的解决方案。本文将系统介绍动态规划的核心概念,通过经典案例展…...
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL 场景说明: 先有项目需要读取生产库数据,但是不能直接读取生产库数据,需要把生产数据同步到一个中间库,下游系统从中间库读取数据。 生产库mysql - OGG - 中间库…...

电子电路原理第十六章(负反馈)
1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…...
Go语言数组的定义与操作 - 《Go语言实战指南》
在 Go 语言中,数组(Array) 是一种定长、同类型的集合。它在内存中是连续分布的,适合用于性能敏感的场景。 一、数组的定义 数组的基本语法如下: var 数组名 [长度]元素类型 示例: var nums [5]int …...
物联网简介:万物互联的未来图景
物联网简介:万物互联的未来图景 引言 在科技飞速发展的今天,我们身边的一切似乎都在悄然发生变化。从清晨智能闹钟根据你的睡眠状态自动唤醒,到厨房里的咖啡机在你起床前已经煮好咖啡;从城市交通系统通过实时数据优化红绿灯时长…...

命令拼接符
Linux多命令顺序执行符号需要记住5个 【|】【||】【 ;】 【&】 【&&】 ,在命令执行里面,如果服务器疏忽大意没做限制,黑客通过高命令拼接符,可以输入很多非法的操作。 ailx10 网络安全优秀回答者 互联网…...

【通用智能体】Lynx :一款基于终端的纯文本网页浏览器
Lynx :一款基于终端的纯文本网页浏览器 一、Lynx简介二、应用场景及案例场景 1:服务器端网页内容快速查看场景 2:网页内容快速提取场景 3:表单提交与自动化交互场景 4:网络诊断与调试场景 5:辅助工具适配 三…...

51单片机的lcd12864驱动程序
#include <reg51.h> #include <intrins.h>#define uchar...

GStreamer (三)常⽤插件
常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…...
Java POJO接收前端null值设置
在 Java 中,若要让 price 字段接收前端传递的 null 值,只需确保以下几点: 1. 使用包装类型 Double 你的 price 字段已经是包装类型 Double(而不是基本类型 double),这天然支持 null 值。基本类型 double …...
详细总结和讲解redis的基本命令
Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Se…...
Linux 内核等待机制详解:prepare_to_wait_exclusive 与 TASK_INTERRUPTIBLE
1. prepare_to_wait_exclusive 函数解析 1.1 核心作用 prepare_to_wait_exclusive 是 Linux 内核中用于将进程以独占方式加入等待队列的关键函数,其主要功能包括: 标记独占等待:通过设置 WQ_FLAG_EXCLUSIVE 标志,表明此等待条目是独占的。 安全入队:在自旋锁保护下,将条…...
蓝桥杯2300 质数拆分
问题描述 将 2022 拆分成不同的质数的和,请问最多拆分成几个? 01背包问题 #include<iostream> #include<cmath> #include<algorithm> using namespace std;int prime[2025]; int dp[2025]; //dp[j]:和为 j 时的最多拆分…...

软件架构风格系列(2):面向对象架构
文章目录 引言一、什么是面向对象架构风格1. 定义与核心概念2. 优点与局限性二、业务建模:用对象映射现实世界(一)核心实体抽象1. 员工体系2. 菜品体系 (二)封装:隐藏实现细节 三、继承实战:构建…...
ngx_http_random_index_module 模块概述
一、使用场景 随机内容分发 当同一目录下存放多份等价内容(如多张轮播图、不同版本静态页面等)时,可通过随机索引实现负载均衡或流量分散。A/B 测试 通过目录请求自动随机分配用户到不同测试组,无需后端逻辑参与。动态“首页”选…...

go-zero(十八)结合Elasticsearch实现高效数据检索
go-zero结合Elasticsearch实现高效数据检索 1. Elasticsearch简单介绍 Elasticsearch(简称 ES) 是一个基于 Lucene 库 构建的 分布式、开源、实时搜索与分析引擎,采用 Apache 2.0 协议。它支持水平扩展,能高效处理大规模数据的存…...