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

【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语言】初阶完结练习题

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;C语言初阶 ✨其他专栏&#xff1a;代码小游戏 &#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论…...

c++类与对象详解

c类与对象详解 对象类方法自定义类型类的特性this类的六个默认成员函数static成员友元内部类 对象 在C中&#xff0c;对象是类的实例。定义对象的语法为&#xff1a; <class_name> object_name;其中&#xff0c;class_name 是定义类时指定的类名&#xff0c;object_nam…...

I/O 函数/缓存和字节流、占位符、getchar(),putchar()

I/O 函数 C 语言提供了一些函数&#xff0c;用于与外部设备通信&#xff0c;称为输入输出函数&#xff0c;简称 I/O 函数。输入&#xff08;import&#xff09;指的是获取外部数据&#xff0c;输出&#xff08;export&#xff09;指的是向外部传递数据。 缓存和字节流 严格地…...

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温度 根据您正在设计的应用程序类型&#xff0c;您可能希望监视运行该程序的机器的资源。 由于多种原因&#xff0c;可能会出现这种情况。 也许您需要您的程序在系统资源达到特定阈…...

后端整理(MySql)

1 事务 1.1 事务ACID原则 原子性&#xff08;Atomicity&#xff09; 事务的原子性指的是事务的操作&#xff0c;要么全部成功&#xff0c;要么全部失败回滚 一致性&#xff08;Consistency&#xff09; 事务的一致性是指事务必须使数据库从一个一致状态转变成另一个一致性…...

HashSet的详细介绍

一、HashSet整体介绍 HashSet 是 Java 中的一个集合类&#xff0c;它实现了 Set 接口&#xff0c;用于存储不重复的元素。它是基于哈希表的数据结构实现的。 HashSet 的特点如下&#xff1a; 不允许存储重复的元素&#xff1a;HashSet 中的元素是唯一的&#xff0c;如果尝试…...

【SCI征稿】JCR1区,中科院2区,有关大数据、人工智能、机器学习的应用研究均可

期刊简介&#xff1a; 【出版社】Elsevier 【影响因子】IF&#xff08;2022&#xff09;&#xff1a;6.5-7.0 【期刊分区】JCR1区&#xff0c;中科院2区 【检索情况】SCIE 在检&#xff0c;正刊 【参考周期】期刊部系统内提交&#xff0c;预计3-5个月左右录用&#xff0c;…...

【UE】AI导航,多个导航物体无法走到同一终点问题

如不需要开启导航物体的碰撞&#xff0c;则需要关闭Use RVOAvoidance 不然会导致多个导航物体无法到达同一个目标点&#xff0c;都在附近晃。无法结束寻路。 ue小白&#xff0c;判定导航终点的半径&#xff0c;没有找到。如果有大佬知道怎么设置请在评论区指出&#xff0c;谢…...

途游游戏 x 极狐GitLab “通关” DevOps :单元测试从无到优,覆盖率 0→80%

目录 4 个工具孤岛 → 极狐GitLab 全家桶&#xff0c; 被动的「人找进度」 → 高效的「进度找人」 把 Code Review 做扎实 代码质量「向左移」&#xff0c;修复成本「往下降」 从无到「优」 自动执行单元测试&#xff0c;覆盖率 0→80% 你喜欢玩游戏吗&#xff1f; 最近…...

【云原生】Docker-Compose全方面学习

目录 1.compose简介 Compose V2 2.compose安装与下载 二进制包 PIP 安装 bash 补全命令 卸载 3.docker compose管理命令 命令对象与格式 命令选项 命令使用说明 1.compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可…...

基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理

基于 Redux TypeScript 实现强类型检查和对 Json 的数据清理 突然像是打通了任督二脉一样就用了 generics 搞定了之前一直用 any 实现的类型…… 关于 Redux 的部分&#xff0c;这里不多赘述&#xff0c;基本的实现都在这里&#xff1a;Redux Toolkit 调用 API 的四种方式 和…...

HIVE语法优化之Join优化

桶用两表关联字段,MapJoin时需要将小表填入内存,这时候,分桶就起到了作用 一个stage阶段代表一个mr执行,好几个MR,会吧每一个MR的结果都压缩 Mysql 慢查询 如果sql语句执行超过指定时间,定义该sql为慢查询,存储日志, 查问题: SQL日志,模拟慢SQL 然后查询执行计划 分组聚合 就…...

如何申请境内金融信息服务报备

依据《金融信息服务管理规定》等要求&#xff0c;开展境内金融信息服务报备工作事项如下&#xff1a; 一、报备对象及要求 金融信息服务&#xff0c;是指向从事金融分析、金融交易、金融决策或者其他金融活动的用户提供可能影响金融市场的信息和&#xff08;或者&#xff09;…...

VS code:Task

Task 微软官方连接&#xff1a; https://code.visualstudio.com/docs/editor/tasks what is Task 我们知道&#xff0c;vscode可以支持许多编程语言&#xff0c;很多语言是需要进行编译的&#xff0c;打包&#xff0c;测试… 有许多已有的工具支持这些流程&#xff0c;例如A…...

《Java-SE-第三十章》之哲学家就餐问题

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…...

关于接口测试用例设计的一些思考

接口测试发现的典型问题 传入参数处理不当&#xff0c;引起程序错误类型溢出&#xff0c;导致数据读取和写入不一致对象权限校验出错&#xff0c;可获取其他角色信息状态出错&#xff0c;导致逻辑处理出现问题逻辑校验不完善定时任务执行出错 接口测试用例设计 接口测试用例…...

gin和gorm框架安装

理论上只要这两句命令 go get -u gorm.io/gorm go get -u github.com/gin-gonic/gin然而却出现了问题 貌似是代理问题&#xff0c;加上一条命令 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 简单来说就是一个键盘按键修改器&#xff0c;说白了就是一个键盘按键重映射的软件。比如你键盘上的Q不好用了&#xff0c;你可以更换成一个不常见的按键来代替Q键&#x…...

SQL Server数据库如何添加mysql链接服务器(Windows系统)

SQL Server数据库如何添加mysql链接服务器&#xff08;Windows系统&#xff09; 一、说明二、下载mysql的odbc驱动三、安装mysql odbc四、配置ODBC4.1 控制面板→ODBC数据源&#xff08;64位&#xff09;→双击打开4.2 添加msql odbc数据源 五、测试添加是否成功六、打开SSMS&a…...

scala连接mysql数据库

scala中通常是通过JDBC组件来连接Mysql。JDBC, 全称为Java DataBase Connectivity standard。 加载依赖 其中包含 JDBC driver <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29&l…...

datax-web登陆时出现账号密码错误

在查找问题时&#xff0c;在admin里面查看日志时&#xff1a; 目录的位置&#xff1a;datax-web-2.1.2/modules/datax-admin/bin/console.out 发现了java程序没有跑起来&#xff0c;解决对应的bug问题即可&#xff0c;一般都是数据库连接的问题&#xff0c;可能和使用的数据库版…...

Redis 和 MySQL如何保证数据一致性

场景分析 Redis 用来实现应用和数据库之间读操作的缓存层&#xff0c;主要目的是减少数据库 IO &#xff0c;还可以提升数据的 IO 性能。当应用程序需要去读取某个数据的时候&#xff0c;首先会先尝试去 Redis 里面加载&#xff0c;如果命中就 直接返回。如果没有命中&#xf…...

VR虚拟仿真技术在道路桥梁中有哪些具体应用?

虚拟现实(VR)是一种新兴的技术&#xff0c;可以为桥梁工程提供许多应用场景。以下是一些可能的应用场景&#xff1a; 1.桥梁设计和模拟 VR元宇宙可以用于桥梁的设计和模拟。工程师可以使用VR技术来创建桥梁的三维模型&#xff0c;并对其进行测试和优化。这可以帮助工程师更好地…...

如何找到死锁的线程?_java都学什么

在Java中&#xff0c;死锁是指两个或多个线程被无限地阻塞&#xff0c;等待彼此持有的资源&#xff0c;从而导致程序无法继续执行的情况。死锁通常是由于线程之间循环等待资源而产生的。要找到死锁的线程&#xff0c;可以采用以下方法&#xff1a; 1.线程转储(Thread Dump) 通过…...

MFC遍历目录包括子目录下所有文件、特定类型文件

文章目录 用法实现遍历所有文件遍历所有txt文件用法 vector<CString> v; //获取所有文件 GetFilePath(v,L"D:\\test\\"); //文件路径储存在容器里面,遍历容器 for(int i=0...

Kubernetes 集群calico网络故障排查思路

报错calico/node is not ready: BIRD is not ready: BGP not established with 172.16.0.20,172.16.0.30 \\calico未准备好&#xff0c;BGP协议不能与172.16.0.20,172.16.0.30内网IP地址连接 BGP协议:边界网关协议 访问k8s的dashboard界面无法访问网站&#xff0c;查看pod&am…...

OBS视频视频人物实时扣图方法(四种方式)

图片擦除一些杂乱图像 参考&#xff1a;https://www.bilibili.com/video/BV1va411G7be https://github.com/Sanster/lama-cleaner第一种&#xff1a;色度键选项 第二种&#xff1a;浏览器建立窗口选项 参考视频&#xff1a;https://www.bilibili.com/video/BV1WS4y1C7QY http…...

DROP USER c##xyt CASCADE > ORA-01940: 无法删除当前连接的用户

多创建了一个用户&#xff0c;想要给它删除掉 一 上执行过程&#xff0c;确实删除成功了 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsSQL> DR…...

【JAVA】-【IO流】

文章目录 FileReader读入数据的基本操作FileReader中使用reader()FileWrite写出数据的操作使用FileInputStream、FileOutputStream操作图片缓冲流&#xff08;字节型&#xff09;实现非文本文件的复制 复制文本文件也可以使用字节流&#xff0c;但是不要在内存中读出来&#xf…...