【C语言】初阶完结练习题
- 🎈个人主页:库库的里昂
- 🎐CSDN新晋作者
- 🎉欢迎 👍点赞✍评论⭐收藏
- ✨收录专栏:C语言初阶
- ✨其他专栏:代码小游戏
- 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗
【前言】
C语言初阶知识点已经全部更完,相信大家对C语言初阶已经有了一个整体的概念,但我们只知道一些理论上的知识还是没有用的,所以今天我在网上找了一些题目给大家练习巩固之前学的知识,这样能更好的帮助我们加深对其的理解。
一、选择题
1.下列程序执行后,输出结果为()
#include <stdio.h>int cnt=0;
int fib(int n){cnt++;if(n==0)return 1;else if(n==1)return 2;elsereturn fib(n-1)+fib(n-2);
}
void main()
{fib(8);printf("%d",cnt);
}
A.41 B.67
C.109 D.177
【解析】:D
传进去一个数字8,只要n>=2,cnt就++一次,进入下面的return fib(n - 1) + fib(n - 2)会产生两种结果,分别是7和6,再继续递归时会7又会产生6和5,6产生5和4,一次下去,直到所有递归都结束。.

2.在上下文和头文件均正常的情况下,以下程序的输出结果是()
int x = 1;
do{printf("%2d", x++);} while (x--);
A.1 B.无任何输出
C.2 D.陷入死循环
【解析】D
初始化x=1,进入do...while语句,输出x++,x=2出来到while语句中执行x--(先用x=2判断是否为真,再自减),因为x=2为真,所以进行进入do语句,此时x=1,跟刚开始一样一直循环,陷入死循环。
3.下面的代码中,执行之后i和j的值是什么()
int i = 1;
int j;
j = i++;
A.1,1 B.1,2
C.2 ,1 D.2,2
【解析】C
初始化i=1,将i++(先赋值再自增)赋给j,所以j=1,i=2。
4.以下程序的k最终值是()
int i = 10;
int j = 20;
int k = 3;
k *= i + j;
A.90 B.50
C.70 D.30
【解析】A
初始化i=10、j=20、k=3,而表达式k *= i + j等效于k = k * (i + j),所以k=3*(10+20)=90。
5.以下C程序的最终输出结果是()
#include<stdio.h>
#include<stdlib.h>int a = 1;
void test()
{int a = 2; a += 1;
}int main()
{test();printf("%d", a);return 0;
}
A.1 B.2
C.3 D.4
【解析】A
这里test()函数内a为局部变量,局部的a只能在test函数内使用,又初始化全局变量a=1,所以结果输出1。
6.下列描述中正确的是()
A:表示m>n为ture或者m<n为ture的表达式为m>n&&m<n
B:switch语句结构中必须有default语句
C:如果至少有一个操作数为ture,则包含“||”运算符的表达式ture
D:if语句结果中必须有else语句
【解析】C
A选项是m>n || m<n
B选项可以无default语句
D选项也可以为if和else if语句或者只有if语句
7.C语言规定,在一个源程序中,main函数的位置 ()
A:必须在最开始
B:必须在系统调用的库函数的后面
C:可以任意
D:必须在最后
【解析】C
C程序中main函数的位置任意
8.以下叙述不正确的是()
A:一个源程序可由一个或多个函数组成
B:一个源程序必须包含一个main函数
C:c程序的基本组成单位是函数
D:在c程序中,注释说明只能位于一条语句的后面
【解析】D
选项D注释可以随处良好的注释说明,一般建议是写在语句的上面。
9.以下叙述正确的是()
A:在c程序中,main函数必须位于程序的最前面
B:c程序的每行中只能写一条语句
C:C语言本身没有输入输出语句
D:在对一个c程序进行编译的过程中,可发现注释中的拼写错误
【解析】C
选项A中C程序中main函数的位置任意
选项B你可以写一个语句,也可以写多个语句。
选项D中C程序进行编译的过程中,是不可以发现注释中粗祥的拼写错误的。注释中的拼写错误只可能通过人工检查发现。
10.在上下文及头文件均正常的情况下,执行如下代码,c的值是()
int a = 0;
int c = 0;
do
{--c;a = a - 1;
}while (a > 0);
A.0 B.1
C.-1 D.死循环
【解析】C
初始化a=0、c=0,进入do...while循环,先计算c--得到c=-1,赋值a=a - 1得到a=-1,执行while语句中的a>0为假跳出循环,此时c=1。
11.假定x和y为double类型,则执行x=2;y=x+3/2;后y的值为()
A.3.500000 B.3
C.2.000000 D.3.000000
【解析】D
3/2是两个整数相处,得到的结果是1,x+3/2=3,又y为double类型,所以结果为3.000000
12.以下for循环执行的次数是()
for (x = 0, y = 0; (y = 123) && (x < 4); x++);
A.是无限循环 B.循环次数不定
C.4 D.3
【解析】C
第一次循环:x=0、y=0进来,判断(y = 123) && (x < 4)为真,x自增1;
第二次循环:x=1、y=123进来,判断(y = 123) && (x < 4)为真,x自增1;
第三次循环:x=2、y=123进来,判断(y = 123) && (x < 4)为真,x自增1;
第四次循环:x=3、y=123进来,判断(y = 123) && (x < 4)为真,x自增1;
第五次循环:x=4、y=123进来,判断(y = 123) && (x < 4)为假跳出循环。
所以总共四次循环。
13.若有定义语句,int year=100,*p=&year;以下语句不能使变量year中的值增至1010的语句是()
A.p+=1; B.(*p)++;
C.++(*p); D.*p++
【解析】D
++的优先级比*高,所以D中p++先执行,p指向的地址改变了,所以year的大小没有变化。
14.选择表达式11|10的结果(本题数值均为十进制)()
A.11 B.10
C.8 D.2
【解析】A
11补码:1011
10补码:1010
1011(11)
15.
char a;int b;float c;double d;
则表达式a*b+d-c值的类型为()
A.float B.int
C.char D.double
【解析】D
a(char) * b(int) + d(double) - c(float)
根据整型提升,所以表达式变为:a(int) * b(int) + d(double) - c(float)
根据算术转换,所以表达式变为:a(double * b(double) + d(double) - c(double)
所以表达式结果为double类型
二、编程题
题目1:求最小公倍数,正整数a和正整数b的最小公倍数是指能被a和b整除的最小的正数值,设计一个算法,求a和b的最小公倍数
输入描述:输入两个整数a和b
输出描述:输出a和b 的最小公倍数
示例:
输入:5 7
输出:35
【解析一】
先找出a和b中的最大数赋值给max,然后用 if 判断最大数max是否能同时%a和b等于零那么它就是最小公倍数如果不行那最大数max++
代码示例:
#include<stdio.h>
int main()
{int a = 0, b = 0;scanf("%d %d", &a, &b);int m = a < b ? a : b;while (m){if (m % a == 0 && m % b == 0){printf("%d\n", m);break;}m++;}return 0;
}
运行结果:

【解析二】
先用辗转相除法求出最大公约数,然后a*b/最大公约数=最小公倍
代码示例:
#include<stdio.h>
int main()
{int a = 0, b = 0;scanf("%d %d", &a, &b);int n = a * b;int m = 0;while (m = a % b){a = b;b = m;}printf("%d\n", n / b);
}
运行结果:

【解析三】
创建个 while 循环 if 判断 a * i % b == 0,看 a 乘于 i 得出的数看能不能被 b 整除如果可以那么它就是最小公倍数
代码示例:
#include<stdio.h>
int main()
{int a = 0, b = 0;scanf("%d %d", &a, &b);int i = 1;while ((a * i) % b != 0){i++;}printf("%d\n", i * a);return 0;
}
运行结果:

题目2:将一句话的单词进行倒置,标点不倒置。比如I like beijing.经过函数后变为beijing. like I
输入描述:
将一句话的单词倒置,标点不倒置。比如 I like Beijing.经过函数后变为 bejing .like i
输出描述:
每个测试输入包含1个测试用例,输入长度不超过100个单词
示例:
输入:I like beijing.
输出:beijing. like I
【解析】
第一步:字符串整体逆置,得到:.gnijieb ekil I
第二步:将字符串中每一个单词逆置,得到:beijing. like I
这里字符串操作的实现非常关键,故单独实现一个函数进行字符串的逆置,由于每个单词的长度不一,因此通过指针来实现字符串的逆置可以对代码进行简化
代码示例:
#include <stdio.h>
#include <string.h>
void ReverseString(char* left, char* right)//反转字符串
{while(left <= right){char tmp = *left;*left = *right;*right = tmp;left++; right--;}
}
int main()
{char str[100] = "0"; gets(str);int length = strlen(str);//将字符串整体翻转ReverseString(str, str + length - 1); char* start = str;//将字符串中的每个单词翻转 while(*start){char* end = start;while(*end != ' ' && *end)//寻找空格或‘\0’{end++;}ReverseString(start, end - 1);if(*end == ' '){start = end + 1;}else{start = end;}printf("%s",str); return 0;}
}
代码结果:

这片代码是输入字符串 需要注意的是最后要将最后一个字符补为'\0' 因为getchar()可以接收回车符
今天讲的C语言初阶完结练习题就到这里了,小伙伴们好好做哈~~

相关文章:
【C语言】初阶完结练习题
🎈个人主页:库库的里昂 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:C语言初阶 ✨其他专栏:代码小游戏 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论…...
c++类与对象详解
c类与对象详解 对象类方法自定义类型类的特性this类的六个默认成员函数static成员友元内部类 对象 在C中,对象是类的实例。定义对象的语法为: <class_name> object_name;其中,class_name 是定义类时指定的类名,object_nam…...
I/O 函数/缓存和字节流、占位符、getchar(),putchar()
I/O 函数 C 语言提供了一些函数,用于与外部设备通信,称为输入输出函数,简称 I/O 函数。输入(import)指的是获取外部数据,输出(export)指的是向外部传递数据。 缓存和字节流 严格地…...
MySQL日期常见的函数
-- 获取当天日期 -- 2023-06-20 select curdate();-- 获取当天年月日时分秒 select now();-- 日期运算 -- 2024-06-20 17:04:17 select date_add(now(),interval 1 year);-- 日期比较 -- 0 select datediff(now(),now());-- 日期MySQL对于日期类型数据如何查询 -- 获取指定日期…...
Python获取CPU温度
本文的主要目的是演示如何借助 Python 中的 pythonnet 库读取和显示 CPU 温度。 Python获取CPU温度 根据您正在设计的应用程序类型,您可能希望监视运行该程序的机器的资源。 由于多种原因,可能会出现这种情况。 也许您需要您的程序在系统资源达到特定阈…...
后端整理(MySql)
1 事务 1.1 事务ACID原则 原子性(Atomicity) 事务的原子性指的是事务的操作,要么全部成功,要么全部失败回滚 一致性(Consistency) 事务的一致性是指事务必须使数据库从一个一致状态转变成另一个一致性…...
HashSet的详细介绍
一、HashSet整体介绍 HashSet 是 Java 中的一个集合类,它实现了 Set 接口,用于存储不重复的元素。它是基于哈希表的数据结构实现的。 HashSet 的特点如下: 不允许存储重复的元素:HashSet 中的元素是唯一的,如果尝试…...
【SCI征稿】JCR1区,中科院2区,有关大数据、人工智能、机器学习的应用研究均可
期刊简介: 【出版社】Elsevier 【影响因子】IF(2022):6.5-7.0 【期刊分区】JCR1区,中科院2区 【检索情况】SCIE 在检,正刊 【参考周期】期刊部系统内提交,预计3-5个月左右录用,…...
【UE】AI导航,多个导航物体无法走到同一终点问题
如不需要开启导航物体的碰撞,则需要关闭Use RVOAvoidance 不然会导致多个导航物体无法到达同一个目标点,都在附近晃。无法结束寻路。 ue小白,判定导航终点的半径,没有找到。如果有大佬知道怎么设置请在评论区指出,谢…...
途游游戏 x 极狐GitLab “通关” DevOps :单元测试从无到优,覆盖率 0→80%
目录 4 个工具孤岛 → 极狐GitLab 全家桶, 被动的「人找进度」 → 高效的「进度找人」 把 Code Review 做扎实 代码质量「向左移」,修复成本「往下降」 从无到「优」 自动执行单元测试,覆盖率 0→80% 你喜欢玩游戏吗? 最近…...
【云原生】Docker-Compose全方面学习
目录 1.compose简介 Compose V2 2.compose安装与下载 二进制包 PIP 安装 bash 补全命令 卸载 3.docker compose管理命令 命令对象与格式 命令选项 命令使用说明 1.compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可…...
基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理
基于 Redux TypeScript 实现强类型检查和对 Json 的数据清理 突然像是打通了任督二脉一样就用了 generics 搞定了之前一直用 any 实现的类型…… 关于 Redux 的部分,这里不多赘述,基本的实现都在这里:Redux Toolkit 调用 API 的四种方式 和…...
HIVE语法优化之Join优化
桶用两表关联字段,MapJoin时需要将小表填入内存,这时候,分桶就起到了作用 一个stage阶段代表一个mr执行,好几个MR,会吧每一个MR的结果都压缩 Mysql 慢查询 如果sql语句执行超过指定时间,定义该sql为慢查询,存储日志, 查问题: SQL日志,模拟慢SQL 然后查询执行计划 分组聚合 就…...
如何申请境内金融信息服务报备
依据《金融信息服务管理规定》等要求,开展境内金融信息服务报备工作事项如下: 一、报备对象及要求 金融信息服务,是指向从事金融分析、金融交易、金融决策或者其他金融活动的用户提供可能影响金融市场的信息和(或者)…...
VS code:Task
Task 微软官方连接: https://code.visualstudio.com/docs/editor/tasks what is Task 我们知道,vscode可以支持许多编程语言,很多语言是需要进行编译的,打包,测试… 有许多已有的工具支持这些流程,例如A…...
《Java-SE-第三十章》之哲学家就餐问题
前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…...
关于接口测试用例设计的一些思考
接口测试发现的典型问题 传入参数处理不当,引起程序错误类型溢出,导致数据读取和写入不一致对象权限校验出错,可获取其他角色信息状态出错,导致逻辑处理出现问题逻辑校验不完善定时任务执行出错 接口测试用例设计 接口测试用例…...
gin和gorm框架安装
理论上只要这两句命令 go get -u gorm.io/gorm go get -u github.com/gin-gonic/gin然而却出现了问题 貌似是代理问题,加上一条命令 go env -w GOPROXYhttps://goproxy.cn,direct 可以成功安装 安装gorm的数据库驱动程序 go get -u gorm.io/driver/mysql...
今天小编继续给大家分享五款高效的电脑宝藏软件
目录 1、keytweak 2、ScreenToGif 3、Greenshot截屏工具 4、GIMP 5、HandBrake 1、keytweak keytweak 简单来说就是一个键盘按键修改器,说白了就是一个键盘按键重映射的软件。比如你键盘上的Q不好用了,你可以更换成一个不常见的按键来代替Q键&#x…...
SQL Server数据库如何添加mysql链接服务器(Windows系统)
SQL Server数据库如何添加mysql链接服务器(Windows系统) 一、说明二、下载mysql的odbc驱动三、安装mysql odbc四、配置ODBC4.1 控制面板→ODBC数据源(64位)→双击打开4.2 添加msql odbc数据源 五、测试添加是否成功六、打开SSMS&a…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
mcts蒙特卡洛模拟树思想
您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...
从0开始学习R语言--Day17--Cox回归
Cox回归 在用医疗数据作分析时,最常见的是去预测某类病的患者的死亡率或预测他们的结局。但是我们得到的病人数据,往往会有很多的协变量,即使我们通过计算来减少指标对结果的影响,我们的数据中依然会有很多的协变量,且…...
