C语言刷题小记

前言

本篇博客和大家分享一些C语言的OJ题目,希望大家可以通过这些题目进一步提升自己的编程能力,如果你对本篇内容感兴趣,可以一键三连,多多关注,下面进入正文部分。

题目1 十六进制转十进制

描述
BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。

输入描述:

输出描述:
十六进制整数ABCDEF对应的十进制整数,所占域宽为15。
备注:
printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

分析:本题考察进制的转换,首先我们需要知道,不同的进制只是数字的不同表现形式,具体的关于进制的知识,如果读者存在疑问,可以看我之前发表的“C语言操作符”这篇文章,那里我介绍了关于进制详细的内容;再回到这道题,当了解了进制的知识后,本题就会变得很简单,我们知道十六进制的数字前面是需要加上0x的,所以根据题目要求,本题的代码也应运而生了,大家请看下面的代码。

#include<stdio.h>
int main()
{printf("%15d\n", 0xABCDEF);return 0;
}

大家可以看到,上面的代码可以很好地实现题目的结果,希望大家理解。

题目2 printf的返回值 

描述
KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?
输入描述:

输出描述:
包括两行:
第一行为“Hello world!”
第二行为printf(“Hello world!”)调用后的返回值。

分析:本题考察printf函数的返回值,这里大家需要知道printf的返回值是什么,printf函数返回的是打印在屏幕上的字符个数,它的返回类型是int,所以知道了这一点,本题的代码就可以写出来了。

#include<stdio.h>
int main()
{int ret = printf("Hello world!");printf("\n");printf("%d", ret);return 0;
}

这里大家还要注意一下,有的同学会在第一行打印代码的最后加上“\n”来实现换行的效果,但是这样是错误的,因为一旦加上“\n”,相当于多加了一个字符,那么返回值就会变成13,所以我们需要另起一行来实现换行的效果。

说完第二题,这里还想请大家来看这么一段代码;

#include<stdio.h>
int main()
{printf("%d", printf("%d", printf("%d", 43)));return 0;
}

大家猜猜这段代码的运行结果是什么?

这里就在考察printf函数的返回值,这段代码是从里往外进行分析的,首先最里面的printf打印43,返回值就是2,那么第二个printf就打印2,返回值就是1,那么最外层的printf就打印1,所以最终的结果就是4321。

这道题作为拓展,帮助大家更好地理解printf的返回值。 

题目3 判断字母

描述
从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。
输入描述:
多组输入,每行输入包括一个字符。
输出描述:
输出该字符是字母(YES)或不是(NO)。

示例

输入

H

9

输出

YES

NO

分析:本题要求我们判断字母,并且是需要进行多组输入的,所以我们需要用到getchar函数和while循环,大家先来看代码。

#include<stdio.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF){if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')){printf("YES\n");}else{printf("NO\n");}getchar();}return 0;
}

大家仔细观察代码,getchar函数的返回值是int(字符的ASCII值),所以我们需要先创建一个整型变量去接受getchar函数的返回值,下面我们写while循环,注意循环的停止条件,这是一个比较固定的写法,大家可以记住它,在循环体中我们进行判断,这里怎么判断相信大家没有问题,需要强调的是判断完成后,我们要让getchar函数再运行一次,目的是为了处理掉"\n"。

大家看到,上面的代码可以完成字母的判断;

下面关于本题,还有另一种解法,其实和第一个差不多,只是在判断字母那里,我们可以使用一个函数来进行判断,这个函数叫做“isalpha”,它是专门用来判断字母的,它需要包含在<ctype.h>这个头文件中。所以上面的代码可以改成如下代码;

#include<stdio.h>
#include<ctype.h>
int main()
{int ch = 0;while ((ch = getchar()) != EOF){if (isalpha(ch)){printf("YES\n");}else{printf("NO\n");}getchar();}return 0;
}

 大家可以看到,改完后可以实现同样的效果,有了这个函数,我们就不需要去写出具体的判断方法了,直接交给库函数处理,就可以得到我们想要的结果。

题目4 ASCII码

描述

BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,转换以下ASCII码为对应字符并输出他们。

73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116 , 33

输入描述:

输出描述:

一行输出转换题目中给出的所有ASCII码对应的字符,无需以空格隔开。

分析:本题考察的内容比较简单,要求我们打印出ASCII值对应的字符,我们可以直接去打印,如下代码;

#include<stdio.h>
int main()
{printf("%c%c%c%c%c%c%c%c%c%c%c%c", 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116, 33);return 0;
}

大家可以看到,我们成功地打印出了一句话;那么这个代码就是可行的,就是看起来有点奇怪和麻烦,尤其是有12个%c,这里相信有人不想一个一个敲,那么我们就可以通过循环来解决这个问题,大家再来看下面的代码;

#include<stdio.h>
int main()
{char arr[12] = { 73, 32, 99, 97, 110, 32, 100, 111, 32, 105, 116, 33 };int sz = sizeof(arr) / sizeof(arr[0]);int i = 0;for (i = 0; i < sz; i++){printf("%c", arr[i]);}return 0;
}

大家可以看到,这样写也可以完成任务,而且代码看起来更高级一些;当然,第一种方法也是正确的,两种方法希望大家都可以掌握。

题目5 出生日期输入输出

描述

输入一个人的出生日期(包括年月日),将该生日中的年、月、日分别输出。

数据范围:年份满足 1990≤�≤2015 1990≤y≤2015 ,月份满足 1≤y≤12 1≤m≤12  ,日满足1≤d≤30

输入描述:

输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。

输出描述:

三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0

分析: 本题让我们去输入输出出生年月日,重点在于对格式的控制;

#include<stdio.h>
int main()
{int year = 0;int month = 0;int date = 0;scanf("%4d%2d%2d", &year, &month, &date);printf("year=%4d\n", year);printf("month=%02d\n", month);printf("date=%02d\n", date);return 0;
}

题目6 2的n次方计算

描述

不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。

数据范围: 0≤n≤31 

输入描述:

一行输入整数n(0 <= n < 31)。

输出描述:

输出对应的2的n次方的结果。

分析:本题要求我们实现2的n次方的运算,并且不能使用累乘;题目提示我们用移位操作符来进行处理,那么我们需要知道移位操作符的功能,移位操作符可以按照2的次幂改变数据,那么我们就可以写出代码了。

#include<stdio.h>
int main()
{int a = 0;scanf("%d", &a);int b = 1 << a;printf("%d", b);return 0;
}

大家来看代码,因为我们计算的2的n次方,所以我们要从1开始计算,这样就可以得到想要的结果。

这道题还可以拓展一下,如果我们想实现多组输入 ,那么代码该怎么写呢?大家可以参考下面的代码;

#include<stdio.h>
int main()
{int a = 0;while (scanf("%d", &a) != EOF){int b = 1 << a;printf("%d", b);}return 0;
}

大家可以发现,这与前面那道多组输入的写法很相似,使用了while循环,大家要注意循环的终止条件的写法,可以类比前面那道题,当我们想要终止循环时,我们要在控制面板上输入CTRL+Z。

题目7 计算三角形的周长和面积

描述

根据给出的三角形3条边a, b, c,计算三角形的周长和面积。

数据范围:0<a,b,c≤100000 

输入描述:

一行,三角形3条边(能构成三角形),中间用一个空格隔开。

输出描述:

一行,三角形周长和面积(保留两位小数),中间用一个空格隔开,输出具体格式详见输出样例。

分析:本题要求我们来计算给定三边的三角形的周长和面积,那么我们需要注意,这里输入输出都有可能出现浮点数,所以我们统一用double类型的变量进行定义,求面积的时候需要用到海伦公式,这个公式大家应该都学过,如果不了解,可以自己去查一下,下面我们来看具体代码。

#include<stdio.h>
#include<math.h>
int main()
{double a = 0.0;double b = 0.0;double c = 0.0;scanf("%lf %lf %lf", &a, &b, &c);double circumference = 0.0;double area = 0.0;circumference = a + b + c;double p = circumference / 2;area = sqrt(p * (p - a) * (p - b) * (p - c));printf("circumference=%.2lf area=%.2lf", circumference, area);return 0;
}

大家观察上面的代码,我统一使用了double类型去定义了每个变量,在输入输出的时候要用到%lf,这个点大家要注意;其次,大家知道海伦公式中有开平方的操作,这里为大家介绍一个函数——sqrt函数,它是专门用来计算开方的,它需要接受一个double类型的参数,要使用这个函数,我们需要引入<math.h>这个头文件。最后,我们要注意题目要求,保留两位小数,所以我们打印的格式为“%.2lf“,大家在做这道题的时候一定要注意细节。

总结

本篇博客为大家介绍了几道C语言的OJ题目,希望大家可以通过这些题目巩固C语言的知识,不断提高编程能力。最后,希望本篇博客的内容可以为大家带来帮助,谢谢!

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

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

相关文章

firewalld(6)自定义services、ipset

简介 在前面的文章中我们已经介绍了zone、rich rule 、--direct等功能和基本配置。在前面文章中&#xff0c;我们提到过firewalld内置了很多服务&#xff0c;可以通过firewall-cmd --get-services来查看服务&#xff0c;也可以通过配置文件查看这些服务/var/lib/firewalld/ser…

【Unity 角色控制器组件】

【Unity 角色控制器组件】 Character Controller&#xff1a; Unity 内置的一个组件&#xff0c;用于提供高级的物理控制&#xff0c;允许开发者控制角色的移动、跳跃和碰撞。 csharp csharp // 假设你已经有了一个带有Character Controller组件的游戏对象// 获取Character Co…

In Ictu Oculi: Exposing AI Created Fake Videos by Detecting Eye Blinking

文章目录 In Ictu Oculi: Exposing AI Created Fake Videos by Detecting Eye Blinking背景关键点内容预处理Long-Term Recurrent CNNsLSTM-RNN模型训练实验data启示In Ictu Oculi: Exposing AI Created Fake Videos by Detecting Eye Blinking 会议:2018 IEEE International…

容嬷嬷给紫薇过生日:鬼畜搭台,AI带货

刚入7月&#xff0c;短视频平台已被AI视频续写占领。 类似于紫薇在地牢里被容嬷嬷喂西瓜、喂鸡翅、喂蛋糕。张学友在《旺角卡门》的经典镜头突然给你微笑、嘟嘴、甚至祝你生日快乐。甚至&#xff0c;还有吴京从打斗戏变成亲吻戏。 在AI续写的短视频里&#xff0c;你永远也想象…

【最新综述】医学图像分割深度半监督学习(上)

摘要&#xff1a; 最近&#xff0c;深度学习在各种计算机视觉任务中展现出了巨大的前景。然而&#xff0c;在许多实际应用中&#xff0c;没有大规模的标记数据集&#xff0c;这限制了深度学习的应用。为了解决这个问题&#xff0c;半监督学习引起了计算机视觉界的广泛关注&…

二叉树的前中后序遍历(递归法、迭代法)leetcode144、94/145

leetcode144、二叉树的前序遍历 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输…

CesiumJS【Basic】- #057 绘制纹理填充多边形(Primitive方式)

文章目录 绘制纹理填充多边形(Primitive方式)1 目标2 代码2.1 main.ts绘制纹理填充多边形(Primitive方式) 1 目标 使用Primitive方式绘制绘制纹理填充多边形 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer

测试Andrew NG的语言翻译Agent

我正在测试 Andrew Ng 的语言翻译 A​​I 代理系统及其在逆变换下的稳定性。 给定源语言的文本&#xff0c;我们应用翻译函数 f&#xff0c;然后应用 f 的逆。它应该是不变的&#xff1a; 但是&#xff0c;数学与语言翻译有什么关系&#xff1f; 在完美的系统中&#xff0c;从…

springboot异常产生原因

DataIntegrityViolationException Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default value org.springframework.dao.DataIntegrityViolationException: ### Error updating database. Cause: java.sql.SQLException: Field id doesnt have a default …

[译]全栈Redux实战

本文乱译自一篇英文博文&#xff08;Full-Stack Redux Tutorial&#xff09;&#xff0c;本人英语能力不足&#xff0c;技术能力有限&#xff0c;如有错误&#xff0c;多多包涵。 #关于ReduxReactImmutable的测试先行开发综合指南 Redux是最近发生在js界令人兴奋的事儿。它把…

提升Unity WebGL游戏启动速度

一、查看启动耗时 通过修改unity-namespace.js中hideTimeLogModal为false&#xff0c;显示timelog开发者可以看到小游戏目前的启动首屏时长&#xff1a; 将其设置为false后&#xff0c;启动小程序后就会显示启动耗时 要知道各个阶段的含义&#xff0c;我们必要理解启动流程。 …

springboot 整合 mybatis-plus

一.前言 1. mybatis-plus是什么 mybatis-plus是一个对mybati框架的拓展框架&#xff0c;它在mybatis框架基础上做了许多的增强&#xff0c;帮助我们快速的进行代码开发。目前企业开发中&#xff0c;使用mybati的项目基本会选择使用mybatis-plus来提升开发效率。 2.官网地址&…

LT8668SXC 、LT8668SX-D 、LT8668SX三种芯片的相似与不同

一、LT8668SXC(支持eDP输出&#xff09; 定义:LT8668SXC配置在HDMI2.1标准下工作&#xff0c;最大数据速率为8Gbps。 LT8668SXC还可以配置为在Type-C输入或DP1.4a下工作&#xff0c;数据速率高达8.1Gbps。 eDP1.4b输出由8个数据通道组成&#xff0c;支持RBR (1.62Gbps)、HBR (2…

比较多种msvcr110.dll丢失的解决方法,哪一种更加方便?

当遇到“msvcr110.dll丢失”这种问题时&#xff0c;这通常意味着你的系统中缺少了Microsoft Visual C 2012 Redistributable的组件。下面我将详细介绍五种解决方法&#xff0c;并对比它们的优点。 一.多种msvcr110.dll丢失的解决方法 方法 1: 重新安装Microsoft Visual C 2012…

Redis持久化的三种方式(RDB、AOF和混合)

Redis持久化的三种方式(RDB、AOF和混合) 目录 Redis持久化的三种方式(RDB、AOF和混合)介绍RDB示例1.配置文件2.触发 RDB 快照保存3.验证 AOF示例1.配置文件2.校验 混合型持久化存储配置文件 介绍 Redis数据主要存储与内存中&#xff0c;因此如果服务器意外重启、宕机、崩溃&am…

乘积最大子数组

代码实现&#xff1a; 方法一&#xff1a;暴力法 方法二&#xff1a;动态规划 int maxProduct(int *nums, int numsSize) {long imax nums[0], imin nums[0], res nums[0];for (int i 1; i < numsSize; i) {if (nums[i] < 0) {int temp imax;imax imin;imin temp;…

学会python——用python编写一个电子时钟(python实例十七)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.电子时钟程序 3.1 代码构思 3.2代码实例 3.3运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性…

今天的A股,让人惊愕了,2个耐人寻味的重要信号,有望迎来下一个超级风口!

今天的A股&#xff0c;让人惊愕了&#xff0c;你知道是为什么吗&#xff1f;盘面上出现2个耐人寻味的重要信号&#xff0c;有望迎来下一个超级风口&#xff01; 1、今天两市低开低走&#xff0c;但大消费劲头十足&#xff0c;连中免这样的大体量都涨停了&#xff0c;另外消费茅…

爬虫-网页基础

HTML 基本语法 HTML&#xff1a;Hyper Text Markup Language, 超文本标记语言&#xff0c;是计算机语言的一种&#xff0c;由元素构成。 p元素 <p>Web 真好玩&#xff01;</p> 由三大部分组成 开始标签&#xff1a;一对尖括号中间包裹这元素名称元素内容&#x…

SaaS运营:如何根据“客户漏斗”定制合作伙伴营销策略?

将你的合作伙伴营销策略与你的客户漏斗模型相结合&#xff0c;可以显著提升你的营销效果。通过瞄准客户旅程中的每一个阶段&#xff0c;你可以增加客户参与度并推动转化&#xff0c;从而将你的促销活动提升到新的高度——这仅仅是一个以数据为支撑的方法。 为了探讨如何在漏斗…