C语言刷题(2)——“C”
各位CSDN的uu们你们好呀,今天小雅兰来复习一下之前所学过的内容噢,复习的方式,那当然是刷题啦,现在,就让我们进入C语言的世界吧
当然,题目还是来源于牛客网
完完全全零基础
编程语言初学训练营_在线编程+题解_牛客题霸_牛客网
BC10 成绩输入输出
BC20 kiki算数
BC21 浮点数的个位数字
BC22 你能活多少秒
BC23 时间转换
BC24 总成绩和平均分计算
BC25 计算体重指数
BC26 计算三角形的周长和面积
BC27 计算球体的体积
BC30 KiKi和酸奶
BC31 发布信息
BC32 输出学生信息
BC33 计算平均成绩
BC34 进制A+B
BC37 网购
BC38 变种水仙花
BC39 争夺前五名
其实上次复习的时候,我们也做过这个题目,当时我们是这么来写的:
#include <stdio.h>int main()
{int score1=60;int score2=80;int score3=90;scanf("%d %d %d",&score1,&score2,&score3);printf("score1=%d,score2=%d,score3=%d",score1,score2,score3);return 0;
}
仔细想一想,这样写的效率是非常低的,如果有五十科成绩呢,难道输入五十次打印五十次吗?这显然是不现实的,那么,就应该用循环的方法。
#include<stdio.h>
int main()
{int score[3] = { 0 };//0 1 2int i = 0;for (i = 0; i < 3; i++){scanf("%d", &score[i]);}printf("score1=%d,score2=%d,score3=%d\n", score[0], score[1], score[2]);return 0;
}
#include<stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int sum = (a % 100 + b % 100) % 100;printf("%d\n", sum);return 0;
}
也可以这样写:
#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int c = (a + b) % 100;printf("%d\n", c);return 0;
}
#include<stdio.h>
int main()
{double d = 0.0;scanf("%lf", &d);int n = (int)d;printf("%d\n", n % 10);return 0;
}
#include<stdio.h>
int main()
{int age = 0;scanf("%d", &age);long long second = age * 3.156e7;printf("%lld\n", second);return 0;
}
#include<stdio.h>
int main()
{int seconds = 0;scanf("%d", &seconds);int h = 0;//小时int m = 0;//分钟int s = 0;//秒//计算h = seconds / 60 / 60;m = seconds / 60 % 60;s = seconds % 60;printf("%d %d %d", h, m, s);return 0;
}
计算好对应的数字,按照格式打印就行。
#include<stdio.h>
int main()
{double score[3] = { 0 };scanf("%lf %lf %lf", &score[0], &score[1], &score[2]);double sum = score[0] + score[1] + score[2];double avg = sum / 3.0;printf(".2lf .2lf\n", sum, avg);return 0;
}
另一种写法:
#include<stdio.h>
int main()
{double score = 0.0;double sum = 0.0;double avg = 0.0;int i = 0;for (i = 0; i < 3; i++){scanf("%lf", &score);sum += score;}avg = sum / 3.0;printf("%.2lf %.2lf\n", sum, avg);return 0;
}
1. 本题在接收数据的同时就可以计算分数的总和,不一定非要等数据全部接收完毕。
2. 按照格式打印就行。
#include<stdio.h>
int main()
{int weight = 0;int high = 0;double BMI = 0;scanf("%d %d", &weight, &high);//计算BMIBMI = weight / ((high / 100) * (high / 100));printf("%.2lf\n", BMI);return 0;
}
要得到浮点数,要进行浮点数除法,这里就得保证 / 两端的操作数至少有一个数是浮点数。
在做这道题目的过程中,我们需要求三角形的面积,但是这道题目根本没有说它是一个什么三角形,那么这个面积该如何求呢?这就要用到海伦公式。
海伦公式又译作希伦公式、海龙公式、希罗公式、海伦-秦九韶公式。它是利用三角形的三条边的边长直接求三角形面积的公式。表达式为:S=√p(p-a)(p-b)(p-c),它的特点是形式漂亮,便于记忆。
相传这个公式最早是由古希腊数学家阿基米德得出的,而因为这个公式最早出现在海伦的著作《测地术》中,所以被称为海伦公式。中国秦九韶也得出了类似的公式,称三斜求积术。
C语言提供了一个库函数,专门用来开平发,为sqrt
#include<stdio.h>
#include<math.h>
int main()
{double a = 0.0;double b = 0.0;double c = 0.0;double circumference = 0.0;double area = 0.0;scanf("%lf %lf %lf", &a, &b, &c);circumference = a + b + c;double p = circumference / 2;area = sqrt(p * (p - a) * (p - b) * (p - c));printf("circumference=%.2lf area=%.2lf\n", circumference, area);return 0;
}
#include<stdio.h>
int main()
{double r = 0.0;//半径double v = 0.0;//体积double pi = 3.1415926;scanf("%lf", &r);v = 4.0 / 3 * pi * r * r * r;printf("%.3lf\n", v);return 0;
}
注意,输入输出,照着公式写代码就行。
这个题目,如果使用 float 来求解,答案的精度是不够的,所以试错后,使用double类型合适。
#include<stdio.h>
int main()
{int n = 0;//给的酸奶瓶数int h = 0;//喝一瓶酸奶的时间int m = 0;//总共时间while (scanf("%d %d %d", &n, &h, &m) != EOF){if (m % h > 0){printf("%d\n", n - m / h - 1);}else{printf("%d\n", n - m / h);}}return 0;
}
1. 注意多组输入
2. 如果h分钟喝一瓶酸奶,那么m分钟喝汽水的瓶数就是h/m瓶,但是如果m%h有余数,就说明又打开了一瓶,只是没来得及喝完,那么未打开的就少一瓶。
#include <stdio.h>int main()
{printf("I lost my cellphone!\n");return 0;
}
#include <stdio.h>int main()
{printf("Name Age Gender\n");printf("---------------------\n");printf("Jack 18 man\n");return 0;
}
#include <stdio.h>int main()
{int arr[5]={0};int i=0;int sum=0;float average=0.0;for(i=0;i<5;i++){scanf("%d ",&arr[i]);sum+=arr[i];}average=sum/5.0;printf("%.1f ",average);return 0;}
在获取输入数据的同时,计算成绩总和,然后求出平均值,按照格式输出就行。
#include<stdio.h>
int main()
{int a = 0;int b = 0;scanf("%x %o", &a, &b);int sum = a + b;printf("%d\n", sum);return 0;
}
%x是十六进制的数据格式
%o是八进制的数据格式
1. 首先要理解十进制、十六进制、八进制只是一种数据的表示形式,不是数据的存储形式。
2. 不同格式的数据的输出在C语言中有不同的格式指定,比如:%x是十六进制格式,%o就是八进制格式。
3. 不同进制的数据存放都整形变量中都是整形值,直接计算就行,计算交给计算机。
#include<stdio.h>
int main()
{double price = 0.0;//价格int month = 0;int day = 0;int flag = 0;//是否有优惠券double cut = 1.0;//折扣double last = 0.0;scanf("%lf %d %d %d", &price, &month, &day, &flag);if (month == 11 && day == 11){cut = 0.7;if (flag == 1){last = price * cut - 50;}else{last = price * cut;}}else if (month == 12 && day == 12){cut = 0.8;if (flag == 1){last = price * cut - 50;}else{last = price * cut;}}if (last < 0.0){printf("0.00");}else{printf("%.2lf\n", last);}return 0;
}
但是这个代码不是很好,有点代码冗余
#include <stdio.h>
int main()
{float price = 0.0;int m = 0;int d = 0;int flag = 0;scanf("%f %d %d %d", &price, &m, &d, &flag);if (m == 11 && d == 11){price *= 0.7;if (flag == 1)price -= 50;}else if (m == 12 && d == 12){price *= 0.8;if (flag == 1)price -= 50;}if (price < 0.0)price = 0.0;printf("%.2f\n", price);return 0;
}
还有一种写法,也是可以的
#include <stdio.h>int main()
{float price = 0.0;int m = 0 ;int d = 0 ;int flag = 0 ;float cut = 0 ;scanf("%f %d %d %d",&price,&m,&d,&flag);if(m==11&&d==11){cut=0.7;}else if(m == 12&&d==12){cut=0.8;}price=price* cut- flag* 50.0;if(price<0.0)price=0.0;printf("%.2f\n", price);return 0;
}
1. 本地理解好题目意思,然后计算机就可以
2. 注意抵扣完后价格小于0,只能按照0计算
3. 按照格式输出
#include <stdio.h>
int main()
{int i = 0;for(i=9999;i<=99999;i++){int a=i/10000;int a1 = i%10000;int b=i/1000;int b1 = i%1000;int c=i/100;int c1 =i %100;int d = i/10;int d1=i%10;if((a*a1)+(b*b1)+(c*c1)+(d*d1)==i){printf("%d ",i);}}return 0;
}
另外一种方法:
#include<stdio.h>
int main()
{int i = 0;for (i = 10000; i <= 99999; i++){//判断i是否为Lily Numberint j = 0;int sum = 0;for (j = 10; j <= 10000 ; j++){sum += (i / j) * (i % j);}if (sum == i){printf("%d ", i);}}return 0;
}
分析题目后发现,lily数求和的每一项都是对同一个数(10/100/1000...)的取模或者整除取商。
这样的话,产生10,100,1000,10000 这些数字,分别对被判断的数字取模或者取商,然后乘起来,再计算和,再判断就行。
冒泡排序的思想是:两两相邻的元素进行比较,并且有可能的话,需要交换。小雅兰写过这个专题噢 。
冒泡排序——“C”_认真学习的小雅兰.的博客-CSDN博客
#include <stdio.h>
int main()
{int n = 0;int arr[40] = { 0 };scanf("%d", &n);int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//排序//自己实现冒泡排序for (i = 0; i < n - 1; i++){//一趟冒泡排序要进行多少对元素的比较int j = 0;for (j = 0; j < n - 1 - i; j++){if (arr[i] > arr[i + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for (i = n-1 ; i >= n - 5; i--){printf("%d ", arr[i]);}return 0;
}
当然,此题目还可以用到一个库函数——qsort
#include <stdio.h>int cmp_int(const void* e1, const void*e2)
{return *(int*)e1 - *(int*)e2;
}int main()
{int n = 0;int score[40] = {0};scanf("%d", &n);int i = 0;for(i=0; i<n; i++){scanf("%d", &score[i]);}//对所有数字排序int j = 0;//使用库函数排序qsort(score, n, 4, cmp_int);for(i=0; i<5; i++){printf("%d ", score[--n]);}return 0;
}
好啦,小雅兰今天的复习内容就到这里啦,以后还会继续复习C语言噢
相关文章:

C语言刷题(2)——“C”
各位CSDN的uu们你们好呀,今天小雅兰来复习一下之前所学过的内容噢,复习的方式,那当然是刷题啦,现在,就让我们进入C语言的世界吧 当然,题目还是来源于牛客网 完完全全零基础 编程语言初学训练营_在线编程题…...

第一个 Spring MVC 注解式开发案例(初学必看)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

openresty学习笔记
openresty 简介 openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部 集成了大量精良的 lua 库、第三方模块以及大数的依赖项。用于 方便搭建能够处理超高并发、扩展性极高的动态 web 应用、 web 服务和动态网关。 openresty 通过汇聚各种设计精良的 ngi…...

微信小程序DAY3
文章目录一、页面导航1-1、声明式导航1-2、编程式导航1-3、声明式导航传参1-4、编程式导航传参1-5、获取导航传递的参数二、页面事件2-1、下拉刷新事件2-1-1、启用下拉刷新2-1-2、配置下拉刷新2-1-3、监听页面下拉刷新事件2-2、上拉触底事件2-2-1、事件触发2-2-1、事件配置三、…...

【CAN】手把手教你学习CAN总线(一)
CAN总线一、CAN总线概念二、CAN的差分信号三、CAN总线的通信协议1、 帧起始2、仲裁段3、控制段4、数据段5、CRC段6、ACK段7、帧结束四、CAN的位时序1、同步段(SS)2、传播时间段(PTS)3、相位缓冲段(PBS)4、再…...

JUC 体系的基石——AQS
—— AQS(AbstractQueuedSynchronizer) 概念 抽象队列同步器;volatile cas 机制实现的锁模板,保证了代码的同步性和可见性,而 AQS 封装了线程阻塞等待挂起,解锁唤醒其他线程的逻辑。AQS 子类只需要根据状…...

Qt中信号与槽的使用
Qt中信号与槽的使用 Qt当中一个重要的东西是信号和槽,它被用于对象之间的通信。 在Qt中,例如“点击按钮”这个事件就是发送信号的对象,接收信号的是某一个窗口,响应信号的是一个处理,可以是隐藏窗口或者是关闭窗口。…...

力扣-销售员
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:607. 销售员二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结前言 …...

HTML综合案例练习
一、展示简历内容 可以首先看一下我们的效果,之后再思考怎么实现 总的来说,这个练习不算难。 这里关于这个简历的代码编写我们不说太多,只注意以下几个内容即可: 注意及时查看我们的代码是否符合预期,即一段一段测 …...

MySQL运维
目录 1、日志 1、错误日志 2、二进制日志 3、查询日志 4、慢查询日志 2、主从复制 搭建 1、主库配置 2、从库配置 3、分库分表 1、简介 编辑 1、垂直拆分 2、水平拆分 3、实现技术 2、MyCat 3、MyCat使用和配置 配置 4、MyCat分片 1、垂直拆分 2、水平拆分…...

【网络原理10】构造HTTP请求、HTTPS加密
目录 一、构造HTTP请求 ①使用form表单构造HTTP请求: form表单是如何提交的 form提交的缺点 ②基于ajax构造http请求 如何使用Jquery框架 二、HTTPS 运营商劫持 HTTP的加密版本:HTTPS ①对称加密:客户端和服务端使用同一把密钥&…...

Allegro如何锁定报表界面操作指导
Allegro如何锁定报表界面操作指导 用Allegro做PCB设计的时候,进行测量的时候,比如测量器件两个PIN中间的间距,如下图,会有一个报表显示 但是当运行下一个命令的时候,报表会被自动关闭掉。 但是有时我们需要报表界面仍被保留 下面介绍如何将报表界面进行锁定,不受下一个…...

基于STM32的微型电子琴设计
基于STM32的微型电子琴设计报告中的图片和文字太多了,全部一个一个把搬过来太麻烦了,需要完整文本和代码自行q我963160156 第一章 总体设计1.1 系统功能1.2 主要技术性能指标第二章硬件设计2.1 整体硬件图2.2 按键模块2.3 扬声器模块2.4 显示模块2.5 主控模块第三章…...

Shell输入输出重定向
一、文件描述符 文件描述符是一个非负整数。它是一个索引值,指向进程打开的文件。 Linux 程序在执行任何形式的 I/O 操作时,都是在读取或者写入一个文件描述符。 每个文件描述符会与一个打开的文件相对应 不同的文件描述符也可能指向同一个文件 在L…...

华为OD机试-运维日志排序
文章目录题目描述输入描述输出描述:示例Java 代码实现题目描述 运维工程师采集到某产品线网运行一天产生的日志n条,现需根据日志时间先后顺序对日志进行排序,日志时间格式为H:M:S.N。 H表示小时(0~23) M表示分钟(0~59) S表示秒(0~59) N表…...

1Kotlin基础知识
1 变量 1.1 用法 Kotlin中的变量定义有2个关键字,val和var val用来定义不可变变量,第一次赋值后就不能再被修改了, var定义可变变量, 随便修改。一个好的编程习惯是, 能用val的就不要用var, 原因是安全&a…...

Redis Lua脚本
文章目录一.引言二.eval简介三.lua数据类型和redis数据类型之间转换四.脚本的原子性五.错误处理六.纯函数脚本七.选择内部脚本一.引言 eval和evalsha命令使用内置的lua解释器,可以对lua脚本进行求值。 二.eval简介 第一个参数是一段脚本程序第二个参数是参数的个…...

web自动化测试-执行 JavaScript 脚本
JavaScript 是一种脚本语言,有的场景需要使用 js 脚本注入辅助我们完成 Selenium 无法做到的事情。 当 webdriver 遇到无法完成的操作时,可以使用 JavaScript 来完成,webdriver 提供了 execute_script() 方法来调用 js 代码。 执行 js 有两种…...

libevent笔记——简单介绍
背景 libevent libevent – an event notification library 官方定义:libevent是一个事件通知的库。更详细的介绍参考官方的就够了,这里我摘抄一下,并做一些注释 The libevent API provides a mechanism to execute a callback function whe…...

C++学习笔记-多态
多态的概念 多态的概念:通俗来说,就是多种形态, 具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态 。 举个例子:比如 买票这个行为 ,当 普通人 买票时,是全价买票;…...

5632: 三角形
描述平面坐标系下,给定不共线的三个点组成一个三角形,问三角形最短的边长和最长的边长各为多少?输入输入包含3行,每行两个整数,表示一个点的坐标x和y。输出输出包括2个小数,分别为最短的边长和最长的边长。…...

Java基础--IO操作
一、IO原理及分类 一、IO原理 1、I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输,如读写文件,网络通信等。 2、java程序中对于数据的输入/输出操作一般都是以流的方式进行 3、java.io包下提供各…...

C++多线程
目录一、C线程库1. 认识thread类2. 线程函数的参数3. this_thread二、原子操作三、C互斥锁1. mutex2. lock_guard3. unique_lock四、C条件变量1. condition_variable2. 实现两个线程交替打印奇偶数一、C线程库 1. 认识thread类 在C11之前没有多线程的概念,涉及到的…...

【Arduino使用nRF24L01 】
【Arduino使用nRF24L01 】 1. 概述2. nRF24L01 收发器模块2.1工作原理2.2 NRF24L01模块变体2.3 nRF24L01 模块引脚排列3. 如何将 nRF24L01 连接到 Arduino3.1 原理接线图3.2 Arduino 和 nRF24L01 代码3.3 代码说明4. 故障排除5. 两个NRF24L01和Arduino进行双向无线通信5.1 nRF2…...

Appium自动化测试框架是一种较为优雅的使用方式
以操作小米商城下单为例流程是 启动小米商城app, 点击分类,点击小米手机, 点击小米10 至尊版,点击加入购物车,点击确定....原脚本Copyfrom time import sleep from appium import webdriver from selenium.common.exceptions impo…...

Linux c编程之应用交互协议分析与设计
在实际编程应用中,两个或多个功能服务(模块)之间 需要通过消息交互进行协作完成用户想要的逻辑功能,这里的消息交互指的是应用层的交互。最终数据传输(无论是TCP/IP还是其它)都是以二进制形式完成,但对于应用层协议来说有两种,一种是二进制协议,一种是文本协议。不管是…...

基于YOLOv5的细胞检测实战
数据及代码链接见文末 1.任务与数据集介绍 如下图所示,我们有一个医学细胞数据集,需要从数据集中检测出三种不同的细胞。标签中已经标注了细胞的类别和位置。 我们也可以看到,三种细胞有着不同的形态和颜色,同时数据集的标签也存在没有标注到的细胞 2.数据与标签配置方…...

【经典蓝牙】蓝牙AVRCP协议分析
协议简介 蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议。定义了音频/视频的控制、浏览、查询、通知等一系列的命令集。常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景。AVRCP协议有两个角色,分别是controller(CT&#x…...

gin 框架初始教程
一 、gin 入门1. 安装gin :下载并安装 gin包:$ go get -u github.com/gin-gonic/gin2. 将 gin 引入到代码中:import "github.com/gin-gonic/gin"3.初始化项目go mod init gin4.完整代码package mainimport "github.com/gin-go…...

对象分配策略
对象创建后,究竟何去何从,对象在堆中又会经历哪些过程,本篇就会详细解释对象创建后直到对象被回收的整个过程。之前博主已经写过Minor GC、Major GC、Full GC的区别,而本篇也主要根据这几个GC开展。 对象回收过程流程如下图所示: 正常的对象生存过程&a…...