【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;
}

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

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

相关文章

修改样式还能影响功能?是的!

最常见的几种样式导致按钮点击无效的情况&#xff1a; 1. pointer-events: none; &#x1f449; 点击被彻底屏蔽 症状&#xff1a;按钮完全不能点击&#xff0c;事件不会触发。 可能原因&#xff1a;这个样式让元素“无法响应鼠标事件”。 button {pointer-events: none; }…

ai决策平台:AnKo如何推动引领智能化未来?

ai决策平台&#xff1a;AnKo如何推动引领智能化未来&#xff1f; ai决策平台正在改变企业运营模式&#xff0c;AnKo作为ai决策平台的代表&#xff0c;为智能管理提供新方向。借助ai决策平台&#xff0c;组织在效率与准确性上实现飞跃。ai决策平台的力量正被广泛认可。 ai决策…

开疆智能Profient转ModbusTCP网关连接ABB机器人MODBUS TCP通讯案例

本案例是通过开疆智能Profinet转ModbusTCP网关将西门子PLC与ABB机器人进行通讯 因西门子PLC采用Profinet协议&#xff0c;而ABB机器人采用的是ModbusTCP通讯。故采取此种方案。 配置过程&#xff1a; 1.MODBUS/TCP基于以太网&#xff0c;故ABB机器人在使用时需要有616-1PCIN…

2089. 找出数组排序后的目标下标——O(n)做法!

本题要求在一个已排序的数组 nums 中&#xff0c;找出所有等于目标值 target 的元素下标。若不存在这样的元素&#xff0c;则返回 {-1, -1}。解决该问题有两种主要方法&#xff1a;二分查找法和统计计数法。 二分查找法&#xff1a;首先对数组进行排序&#xff0c;然后通过二分…

pyspark测试样例

from pyspark.sql import SparkSession from pyspark.sql.functions import col, lit, concat 创建 SparkSession spark SparkSession.builder.appName(“SparkSQLExample”).getOrCreate() 创建 DataFrame&#xff08;可以是从 CSV、JSON 等文件读取&#xff09; data […

【AWS入门】AWS身份验证和访问管理(IAM)

【AWS入门】AWS身份验证和访问管理&#xff08;IAM&#xff09; [AWS Essentials] AWS Identity and Access Management (IAM) By JacksonML 众所周知&#xff0c;AWS亚马逊云科技位列全球云计算服务第一位&#xff0c;并且持续为广大客户提供安全、稳定的各类云产品和服务。…

HarmonyOS NEXT 适配高德地图FlutterSDK实现地图展示,添加覆盖物和移动Camera

HarmonyOS NEXT 适配高德地图 Flutter SDK 实现地图展示&#xff0c;添加覆盖物和移动 Camera 在现代移动应用开发中&#xff0c;地图功能是许多应用的核心组成部分之一。HarmonyOS NEXT 提供了强大的跨平台开发能力&#xff0c;而高德地图 Flutter SDK 则为开发者提供了丰富的…

三键标准、多键usb鼠标数据格式

三键标准usb鼠标数据格式 滚轮上滚 滚轮下滚 鼠标快速上移 鼠标快速右移 鼠标快速左移 鼠标右键单击_抬起 鼠标中键单击_抬起 鼠标左键单击_抬起 鼠标左键先按_右键再按_同时抬起 鼠标左右键同时按下_同时抬起 鼠标左右键同时按下_右键先抬 多键usb鼠标…

软件架构风格系列(7):闭环控制架构

文章目录 引言一、闭环控制架构&#xff1a;让系统学会“自我调节”的魔法&#xff08;一&#xff09;从温控系统理解核心原理&#xff08;二&#xff09;核心组件解析 二、架构设计图&#xff1a;闭环控制的“四大核心环节”三、Java实战&#xff1a;手写一个智能温控系统&…

Python中的组合数据类型

一、列表类型 列表是指一系列的按特定顺序排列的元素组成。使用[]定义列表&#xff0c;元素与元素之间使用英文的逗号分隔&#xff0c;列表中的元素可以是任意的数据类型。 #直接使用[]创建 lst[hello,world,99.8,100] print(lst)#可以使用内置的list()函数创建列表 lst2list(h…

集合进阶2

Java不可变集合、Stream流与方法引用深度解析 一、不可变集合&#xff08;Immutable Collections&#xff09;进阶指南 1.1 不可变集合核心特性 防御性编程&#xff1a;防止外部修改数据&#xff08;如传递集合给第三方库时&#xff09;线程安全&#xff1a;天然支持多线程读…

MySQL企业版免费开启,强先体验

近期Oracle突然宣布&#xff0c;MySQL企业版面向开发者免费开放下载&#xff0c;这一消息瞬间引爆DBA圈。作为数据库领域的“顶配车型”&#xff0c;企业版长期因高昂授权费让中小团队望而却步&#xff0c;如今免费开放无异于“劳斯莱斯开进菜市场”。 本文将深度拆解企业版的…

数据要素及征信公司数据要素实践

数据要素及征信公司数据要素实践 1.数据要素的定义与核心特征2.征信公司应用数据要素的实践路径3.总结1.数据要素的定义与核心特征 数据要素是数字经济时代的新型生产要素,指以电子形式存在、通过计算方式参与生产经营活动并创造价值的数据资源。 其核心特征包括: 新型生产…

Golang 范型

引言 Go 从 1.18 开始正式支持泛型&#xff0c;带来了更强的类型抽象能力&#xff0c;使得我们可以编写更通用、可复用的代码。本文档将介绍下泛型与应用的一些内容 什么是泛型 泛型&#xff08;Generic&#xff09;是一种允许你编写“参数化类型”的编程方式。你可以将类型…

vue-ganttastic甘特图label标签横向滚动固定方法

这个甘特图之前插件里&#xff0c;没有找到能固定label标签在屏幕上的办法&#xff0c;用css各种办法都没有实现&#xff0c;所以我我直接手写定位&#xff0c;用js监听滚动条滚动的距离&#xff0c;然后同步移动甘特图label标签&#xff0c;造成一种定位的错觉&#xff0c;以下…

VS2017编译openssl3.0.8

openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、P…

16【架构进阶】Flask蓝图与应用工厂模式:构建企业级Web应用的核心技巧

【架构进阶】Flask蓝图与应用工厂模式&#xff1a;构建企业级Web应用的核心技巧 前言&#xff1a;为什么应用架构决定项目的天花板&#xff1f; 在Flask开发中&#xff0c;随着项目规模的扩大&#xff0c;如何组织代码结构成为决定项目可维护性和扩展性的关键因素。单文件应用…

系统架构设计-案例分析总结

系统架构设计-案例分析总结 2024年下半年系统架构设计师案例第1题 2022年下半年系统架构设计师案例第1题第2题 2021年下半年系统架构设计师案例第1题第2题 2024年下半年系统架构设计师案例 题&#xff1a;效用树可用性中ping/echo策略和心跳策略比较 第1题 阅读以下关于面向质…

软件架构风格系列(6):解释器架构

文章目录 引言一、从计算器到规则引擎&#xff1a;解释器架构的核心本质&#xff08;一&#xff09;什么是解释器架构&#xff1f;&#xff08;二&#xff09;核心组件&#xff1a;构建“语言理解系统”的三驾马车 二、架构设计图&#xff1a;从输入到执行的完整链路三、Java实…

Serverless 的未来与进阶:持续学习之路

Serverless 的未来与进阶&#xff1a;持续学习之路 恭喜你&#xff0c;坚持走到了《轻松入门 Serverless》系列博客的最后一篇&#xff01; 回顾我们的旅程&#xff0c;我们一起&#xff1a; 揭开了 Serverless 的神秘面纱&#xff0c;理解了它的核心思想、关键特征以及 Faa…