C语言————练习题册(答案版)

目录

每日更新5-10题,感兴趣可以订阅

一.理解函数、操作符、占位符

1.1 欢迎来到C语言的世界

 1.2 输入和输出

1.3 浮点数的打印

1.4 字符串的打印

1.14 I am iron man

1.5 求和运算

1.6 计算比例

1.7 求商求余

1.8 不同数位上的数字

1.8.1 求个位数

1.8.2 求十位数

1.9 地板函数的向下取整

1.10 两点之间的距离

二.认识训练循环语句

2.1数组内多组数据的计算求和

2.2 多组数据的输入,理解while(scanf()!=EOF)

2.2.1 scanf函数详解



每日更新5-10题,感兴趣可以订阅

一.理解函数、操作符、占位符

1.1 欢迎来到C语言的世界

请在编译器上编写一段程序,运行后输出“Welcome to the world of C language” ,要求光标换行。

考察点:printf 函数和程序启动的固定代码 int main()

答案如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>int main()
{printf("Welcome to the world of C language\n");return 0;
}

除了printf函数外,还有一个函数puts也同样能实现这个功能,下面表格会对比他们的使用差异

以下为puts函数的使用方式:

//省略了头文件等相关信息,读者自行添加
int main()
{puts("Welcome to the world of C language");return 0;
}

 1.2 输入和输出

我们懂得如何让程序输出一段字符信息,也应该学会如何让计算机程序了解我们输入的相关信息。

编写一段程序,在键盘上输入20后,程序会将20打印出来。

考察点:scanf 和 printf函数的联合使用

 答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int n;//此处为变量的声明,未初始化scanf("%d", &n);//取地址符号不能忘记printf("%d\n", n);return 0;
}

scanf 函数使用时容易出现的bug问题以及解决方法可以见如下文章

C语言————BUG的常见情况(持续更新)-CSDN博客

1.3 浮点数的打印

请输入一个浮点数x,数值为3.156

考察点:浮点数类型   占位符号%f   限定占位符的表达形式

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{float x;//创建变量xscanf("%f", &x);//输入浮点数printf("%f\n", x);return 0;
}

我们会发现输出的浮点数,小数点后自然保留了六位,那么我们如果想仅输出三位的话,可以在f前加上   .3   达到限制位数的作用

//省略了头文件等相关信息,读者自行添加
int main()
{float x;//创建变量xscanf("%f", &x);//输入浮点数printf("%.3f\n", x);return 0;
}

1.4 字符串的打印

输入一行字符串s,通过程序代码将他打印出来,输入内容为 CrazyThursday

考察点:字符串的占位符  

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{char str[100];scanf("%s", str);printf("%s", str);return 0;
}

注:使用scanf("%s",str)来读取字符串时,只会读取字符串直到遇到第一个空白字符(空格、制表符或换行符)。

1.14 I am iron man

编译代码,输入I am iron man,输出I am iron man。

考察点:循环语句   字符型的读取  

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{char x;for (int i = 0; i < 14; i++)//让编辑器逐步读取每个字符{scanf("%c", &x);printf("%c", x);//逐个打印}printf("\n");return 0;
}

1.5 求和运算

输入两个整数10、20,用代码打印出他们的和

考察点:算术操作符  变量的声明  scanf函数

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a, b;//声明多个变量时,中间要用,隔开scanf("%d%d", &a, &b);//输入多个值时,不建议占位符之间加入空格printf("%d", a + b);return 0;
}

1.6 计算比例

在一个班级中,男生56人,女士37人,试计算女生的比例,输出形式为百分比

考察点:数据类型的选用  算术操作符  百分数的转换  %的打印

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a;float b;//代表男生和女生的数量printf("男生的数量是 ");  scanf("%d", &a);printf("女生的数量是 ");  scanf("%f", &b);float c;//用以计算女生所占的比例c = b / (a + b);//双目操作符/两边的数如果都是整型结果只保留整型部分//只有一方为浮点数,才能输出浮点类型printf("女生的比例为%f%%\n", c * 100);return 0;
}

1.7 求商求余

输入两个整数18 和 7,求他们的商和余

考察点:算是操作符 scanf

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a, b;scanf("%d%d", &a, &b);printf("商为%d\n", a / b);printf("余为%d\n", a % b);return 0;
}

1.8 不同数位上的数字

1.8.1 求个位数

输入一个数字123,求他的个位数字3并输出

考察点:算是操作符 

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a;//声明变量,输入123scanf("%d", &a);printf("%d", a % 10);return 0;
}

1.8.2 求十位数

输入一个数字123,求他的十位数字2并输出

考察点:算是操作符 

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a;//声明变量,输入123scanf("%d", &a);a = a / 10;//去除个位上数字printf("%d", a % 10);return 0;
}

 以上两个例子,我们可以知道一个随机的整数,如何输出他们各自数位上的数字,那我们应该如何将他们每个数位上的数字依次打印呢?

输入123,输出3  2  1

考察点:算术操作符和循环语句的总和运用

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a;//声明变量,输入123scanf("%d", &a);while (a > 0)//while循环能够让a逐渐逼近这个条件{printf("%d ", a % 10);a = a / 10;//更新“个位”,把每一个数位的数字换到个位上}return 0;
}

1.9 地板函数的向下取整

输入一个整数n如23,求他们开根号的地板函数值

地板函数:对于任意实数x,地板函数[x]表示不大于x的最大整数。简单来说,就是把实数x向下取整到最接近的整数。

考察点:sqrt函数 数据类型的选择   数据类型的强制转换

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a;scanf("%d", &a);printf("%d", (int)sqrt(a));//强制类型转换return 0;
}

俗话说,强扭的⽠不甜,我们使⽤强制类型转换都是万不得已的时候使⽤,如果不需要强制类型转化就能实现代码,这样⾃然更好的。

1.10 两点之间的距离

输入两个点的坐标 (x1,y1)   (x2,y2),输出两点之间的距离

考察点:sqrt函数  pow函数 数据类型的辨别

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int x1, y1;//声明坐标,输入坐标scanf("%d%d", &x1, &y1);int x2,y2;scanf("%d%d", &x2, &y2);float de;//代表两点之间的距离de = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));printf("%f", de);return 0;
}

 注:pow和sqrt返回的数值类型均为浮点型double

二.认识训练循环语句

2.1数组内多组数据的计算求和

给定一个数字3,确认含有3组数据,每组中有2个数字,随后输入这6个数字,分别计算每组的数字之和,并分别输入,示例如下:

输入2\n
23
45
输出5\n
9\n

考察点:二维数组的元素类型  循环语句的初步使用 多组数据的输入

答案如下:

//省略了头文件等相关信息,读者自行添加
int main() {int i = 0;int j = 0;scanf("%d",&i);int arr[i][2];for(j = 0;j < i;j ++){scanf("%d %d",&arr[j][0],&arr[j][1]);printf("%d\n",arr[j][0] + arr[j][1]);}return 0;
}

2.2 多组数据的输入,理解while(scanf()!=EOF)

2.2.1 scanf函数详解

int scanf ( const char * format, ... );这是scanf函数的调用形式以及声明,他的使用需要包含头文件<stdio.h>,他是用来读取我们键盘输入的信息,他的使用语法与我们常用的printf类似,第一个参数都是格式化字符串。

在scanf函数的格式化字符串中,需要包含一定的占位符,而占位符数量的多少,就决定了后续参数的个数,在这里我们需要特别注意,用以替换占位符的参数形式是以地址的样式体现的,我们需要用到一个重要的操作符————&(取地址操作符);因为scanf()传递的不是值,而是一个地址,即将变量i的地址指向用户输入的值。

:如果这里的变量是指针变量(如字符串变量),那就不用加&。

scanf()处理用户输入的原理是,用户的输入会被放入缓存区,等到按下回车键后,按照占位符对缓存区进行解读。

解读用户输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符位置。

scanf()在处理数值占位符时,会自动过滤空白字符,包括空格制表符换行符等。

#include <stdio.h>
int main()
{int x;float y;// ⽤⼾输⼊ " -13.45e12# 0"scanf("%d%f", &x, &y);return 0;
}

可以想想上述代码最终输出的x  和  y的值,int决定了x为整型类型,根据上述对scanf()的描述,解读会停留在小数点位置,导致x=-13,随后开始读取浮点数y,解读会从小数点开始(类似.45这样的形式会被默认为0.45),遇到e12后,会识别为科学技术法,那么我们可以知道y = 0.45 * 10^12

我们可以发现,他的结束需要返回int类型,那么这个整型应该如何计算呢?

scanf()返回的整型数值代表他所成功读取的数据个数

如果没有读取任何项,或者匹配失败,则会返回0;

如果在成功读取任何数据之前,发生了读取错误或者遇到读取文件到结尾的情况,则返回常量EOF(-1)。

EOF - end of file 文件结束标志

———————————————————————————————————————————

利用上述知识,我们继续讲解对while嵌套scanf的连续输入。

while(scanf() != EOF),根据里面的判断条件,我们知道只有当scanf在读取中发生错误或者读取到文件 的结尾时,这个循环才会结束,由此我们可以实现连续输入多组数据,处理多组数据的任务。那么接下来我们解决下面的题目:

输入多组两个整数的数据,依次分别计算两个整数之和,当和为0时则停止计算,结束输入。

考察点:while语句和scanf的嵌套使用  break在循环语句里的使用

答案如下:

//省略了头文件等相关信息,读者自行添加
int main()
{int a,b;//定义输入变量a,bwhile(scanf("%d%d",&a,&b) != EOF)
{if(a + b )
printf("%d",a + b);
else
break;
}
return 0;
}

_____________________________________________________________________________

持续更新中.........................................................................................................................................

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

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

相关文章

haproxy配置详解

1、haproxy简介 HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件 是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器 支持基于cookie的持久性&#xff0c;自动故障切换&#xff0c;支持正则表达式及web状态统计 企业版网站&#xff…

计网-TCP可靠传输

TCP&#xff08;传输控制协议&#xff09;的可靠传输是通过一系列机制保证数据准确、有序、不丢失地到达接收方。以下是TCP可靠传输的详细过程及核心机制&#xff1a;1. 数据分块与序列号&#xff08;Seq&#xff09;分块&#xff1a;应用层数据被分割成适合传输的TCP报文段&am…

数智管理学(三十九)

第三章 数智化对管理理论的冲击第三节 系统理论与生态化管理的强化系统理论作为理解企业运作与环境互动的重要框架&#xff0c;一直强调企业是一个由多个相互关联子系统构成的整体&#xff0c;其核心要素包括整体性、开放性、动态性和反馈机制。在传统管理视角下&#xff0c;这…

哈希表(c语言)

文章目录哈希表哈希表知识点哈希表概念负载因子哈希表的优缺点哈希冲突哈希函数常见哈希函数处理哈希冲突开放定址法线性探测二次探测链地址法哈希表的实现哈希表的核心:HashMap核心函数&#xff1a;从创建到销毁创建哈希表&#xff1a;hashmap_create()销毁哈希表:hashmap_des…

【Canvas与旗帜】条纹版大明三辰旗

【成图】【代码】<!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>十三条纹版大明三辰旗 Draft1</title><style type"text/…

【Java】空指针(NullPointerException)异常深度攻坚:从底层原理到架构级防御,老司机的实战经验

写Java代码这些年&#xff0c;空指针异常&#xff08;NullPointerException&#xff09;就像甩不掉的影子。线上排查问题时&#xff0c;十次有八次最后定位到的都是某个对象没处理好null值。但多数人解决问题只停留在加个if (obj ! null)的层面&#xff0c;没从根本上想过为什么…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-评论用户时间占比环形饼状图实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解主页-评论用户时间占比环形饼状图实现 视频…

Redis面试精讲 Day 5:Redis内存管理与过期策略

【Redis面试精讲 Day 5】Redis内存管理与过期策略 开篇 欢迎来到"Redis面试精讲"系列的第5天&#xff01;今天我们将深入探讨Redis内存管理与过期策略&#xff0c;这是面试中经常被问及的核心知识点。对于后端工程师而言&#xff0c;理解Redis如何高效管理内存、处…

ICMPv6报文类型详解表

一、错误报文类型&#xff08;Type 1-127&#xff09;Type值名称Code范围触发条件示例典型用途1Destination Unreachable0-60: 无路由到目标1: 通信被管理员禁止2: 地址不可达3: 端口不可达4: 分片需要但DF标志设置5: 源路由失败6: 目的地址不可达网络故障诊断2Packet Too Big0…

配置nodejs

第一步确认 node.exe 和 npm 存在 例如安装目录D:\nodejs检查是否存在以下文件&#xff1a; node.exenpm.cmdnpx.cmd 第二步&#xff1a;添加环境变量 PATH 图形化操作步骤&#xff08;Windows&#xff09;&#xff1a; 右键「此电脑」→「属性」点击左侧 「高级系统设置」弹出…

MySQL的命令行客户端

MySQL中的一些程序&#xff1a;MySQL在安装完成的时候&#xff0c;一般都会包含如下程序&#xff1a;在Linux系统下&#xff0c;通过/usr/bin目录下&#xff0c;可以通过命令查看&#xff1a;以下是常用的MySQL程序&#xff1a;程序名作用mysqldMySQL的守护进程即MySQL服务器&a…

C# 值类型与引用类型的储存方式_堆栈_

目录 值类型 引用类型 修改stu3的值 stu也被修改了 为什么? &#xff08;对象之间&#xff09; 值类型中&#xff0c;值全在栈中单独存储&#xff0c;变量之间不会影响 结构体中&#xff0c;结构体全在栈中&#xff0c;结构体与结构体之间也不会相互影响 静态资源区 值类…

解锁永久会员的白噪音软件:睡眠助手

如今的年轻人压力普遍较大&#xff0c;学会解压至关重要。这期就为大家推荐一款优秀的白噪音软件&#xff0c;在压力大时听听&#xff0c;能起到不错的解压效果。 睡眠助手 文末获取 这款软件的特别版本十分出色&#xff0c;知晓的人不多。它已解锁永久会员&#xff0c;无需登…

uniapp使用css实现进度条带动画过渡效果

一、效果 二、实现原理 1.uni.createAnimation 动画函数 2.初始化uni.createAnimation方法 3.监听值的变化调用动画执行方法 三、代码 1.实现方式比较简单&#xff0c;目前是vue3的写法&#xff0c;vue2只需要稍微改动即可 <template><view class"layout_progre…

高级分布式系统调试:调试的科学与 USE 方法实战

高级分布式系统调试:调试的科学与 USE 方法实战 前言:从“救火”到“探案” 当一个复杂的分布式系统出现“灰色故障”——例如“服务有时会变慢”、“偶尔出现超时错误”——我们该从何处着手?随机地查看 Grafana 仪表盘,或者漫无目的地 tail -f 日志,往往效率低下,甚至…

栈算法之【有效括号】

目录 LeetCode-20题 LeetCode-20题 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每…

大模型——Data Agent:超越 BI 与 AI 的边界

Data Agent:超越 BI 与 AI 的边界 1. 数据工具的演进路径 在数据分析领域,技术工具经历了多个阶段的演进。这些演进不仅反映了技术的进步,也体现了用户需求和使用场景的变化。 Excel 时代:告别手工作业,陷入“表格泥潭“,早期数据分析依赖 Excel,实现基础数据记录、计…

数据空间技术在智慧水库管理平台中的赋能

数据空间技术在智慧水库管理平台中的赋能&#xff1a;设备到应用的数据传输优化 数据空间技术为智慧水库管理平台提供了革命性的数据传输、处理和安全保障能力。以下是数据空间技术在设备到应用数据传输过程中的全面赋能方案&#xff1a; 数据空间赋能架构设计 #mermaid-svg-R2…

SpringBoot学习路径二--Spring Boot自动配置原理深度解析

SpringBoot最核心的功能就是自动装配&#xff0c;Starter作为SpringBoot的核心功能之一&#xff0c;基于自动配置代码提供了自动配置模块及依赖的能力&#xff0c;让软件集成变得简单、易用。使用SpringBoot时&#xff0c;我们只需引I人对应的Starter&#xff0c;SpringBoot启动…

音视频中一些常见的知识点

1. GCC是如何进行带宽评估的 GCC(Google Congestion Control)是一种专为实时音视频传输设计的拥塞控制算法,它主要通过发送端和接收端的协同工作来进行带宽评估。具体过程如下: 接收端处理 计算延迟梯度:接收端通过统计数据包到达时间的变化,即RTT(往返时间)波动,来计…