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

C语言再学习第三章

例题3-1 编写一个函数,实现华氏度和摄氏度的转化。

已知公式:c = (5/9)*(f-32)

#include <stdio.h>double f_value = 0;
double c_value = 0;
int main(void)
{printf("请输入华氏温度\n");scanf("%lf",&f_value);c_value = (5.0/9.0)*(f_value-42);printf("华氏温度=%0.2f也就是摄氏度温度=%0.2f",f_value,c_value);return 0;
}

在这里插入图片描述

例题3-2 计算存款利息。有1000元。想存一年,有3种方法可选

(1)一年期活期,年利率为r1
(2)一年期定期,年利率为r2
(3)存两次半年定期,年利率为r3
分别计算这三种方式得到的本息和。

#include <stdio.h>double p0 = 1000,r1 = 0.0036, r2 = 0.0225, r3 = 0.0198;
//p1表示一年活期获得的钱
//p2表示一年定期获得的钱
//p3表示两次半年定期获得的钱
double p1 = 0, p2 = 0, p3 = 0;
int main(void)
{p1 = p0*(1 + r1);p2 = p0*(1 + r2);p3 = p0*(1 + r3/2)*(1 + r3/2);printf("p1 = %f, p2 = %f, p3 = %f",p1,p2,p3);return 0;
}

在这里插入图片描述
常量主要包括,整型常量、实型常量、字符常量、字符串常量、符号常量。

两个重要点

#define PI 3.1415926 定义符号常量(预编译)
const float pi = 3.1415926; 定义常变量

一个注意点

标识符只能用字母,数字和下画线组成,且第一个字符必须是字母或下画线。

数据类型(常见)

整型(int)、短整型(short int)、长整型(long int)、字符型(char)、布尔型(bool)。
单精度浮点型(float)、双精度浮点型(double)。
枚举型(enum)、空型(void)。
指针类型(*)、数组类型([])、结构体类型(struct)、共用体类型(union)、函数类型。

书中的short int类型的取值范围(其他类似计算)

short int占两个字节。示意图如下图所示,也可以理解为16个小格子,每个小格子只能存放0或1。越往左的小盒子是数据二进制形式下的高位,越往右的小盒子是数据二进制形式下的的低位。
在这里插入图片描述
对于short int来说,又可以分为符号型和无符号型。其中,在上图中最左边的小盒子(最高位)是表示的符号位。下面来分情况来进行讨论。
首先,对于无符号的short int类型来说,能取得最小值为0,也就是16个小格子全部填0。
在这里插入图片描述
能取得最大值是2^16-1,也即是16个小格子全部填1。所以无符号的short int类型可取的范围是0~65535
在这里插入图片描述
接着,对于有符号的short int类型来说,这时候最高位是符号位。
当最高位,也就是符号位为0的时候,能取得最大值为2^15-1,也即是除了符号位外的15个小格子全部填1。
在这里插入图片描述
能取得最小值为0,也即是除了符号位外的15个小格子全部填0。
在这里插入图片描述
当最高位,也就是符号位为1的时候,能取得最大值为-1。
这时候需要了解-1的存储形式。

首先写出该数的绝对值,也就是1的二进制形式,0000 0000 0000 0001。
接着需要按位取反,1111 1111 1111 1110。
最后在加1即可以得到-1的存储结构,1111 1111 1111 1111。

在这里插入图片描述
能取得最小值-2^15=-32768。这时候需要了解-32768的存储形式。

首先写出该数的绝对值,也就是32768的二进制形式,1000 0000 0000 0000。
接着需要按位取反,0111 1111 1111 1111。
最后在加1即可以得到-32768的存储结构,1000 0000 0000 0000。

在这里插入图片描述
综上所述,我们求得,对于无符号的short int来说,取值范围为0~65535。
对于有符号的short int来说,取值范围为-32768~32767。

浮点型常量常见问题

在vs中编译下面的程序,会出现一行警告,这个意思是从double到float进行转化,会损失精度。这是因为3.14159这个数,系统会默认把浮点型变量按照double类型处理,但是最后在赋值中需要赋值给一个float型的a,所以才会出现这样的问题。
在这里插入图片描述
解决办法可以有两种,下图是解决的办法。
在这里插入图片描述
在这里插入图片描述

算数运算符

+ 加法
- 减法
* 乘法
/ 除法
% 求余

这里重点说一下,对与除法,两个实数相除得到的结果是双精度实数,但是两个整数相除,得到的是整数。
在这里插入图片描述
在这里插入图片描述

自增与自减

++ i,–i 在使用i之前,让i加减1
i++,i-- 在使用i之后,让i加减1

例题3-3 给定一个大写字母,要求用小写字母输出。

#include <stdio.h>char a;
char b;
int main(void)
{printf("请输入一个大写字母\n");scanf("%c", &a);b = a + 32;printf("%c 的小写为 %c", a, b);return 0;
}

在这里插入图片描述
例题3-4 给出三角形的三边长,求三角形面积。
在这里插入图片描述

#include <stdio.h>
#include <math.h>
double a = 3.0, b = 4.0, c = 5.0;
double p = 0;
double s = 0;
int main(void)
{p = (a + b + c) / 2.0;s = sqrt(p * (p - a) * (p - b) * (p - c));printf("三角形的三条边为a = %f,b = %f,c = %f,三角形的面积为s = %f", a, b, c, s);return 0;
}

在这里插入图片描述
例题3-5 求ax^2+bx+c=0的方程的根,a,b,c由键盘键入。
设b^2-4ac>0。

#include <stdio.h>
#include <math.h>double a = 0, b = 0, c = 0;
double deta = 0;
double x1 = 0, x2 = 0;
int main(void)
{printf("请输入a、b、c\n");while (deta <= 0){scanf("%lf%lf%lf", &a, &b, &c);deta = b * b - 4 * a * c;if (deta <= 0)printf("输入的a、b、c使得b^2-4ac<=0,需要重新输入\n");}x1 = (-b + sqrt(deta)) / (2 * a);x2 = (-b - sqrt(deta)) / (2 * a);printf("x1 = %f,x2 = %f", x1, x2);return 0;
}

在这里插入图片描述

http://www.lryc.cn/news/31097.html

相关文章:

  • 【aiy篇】小目标检测综述
  • 常用Linux命令的基本使用
  • 对跳表的深入理解
  • C++017-C++冒泡排序与插入排序
  • 数据结构基础之链表
  • css 的渲染层合成是什么,浏览器如何创建新的渲染层
  • nacos-sdk-rust binding to NodeJs
  • MySQL下载安装以及环境配置教程
  • 概率论 1.3 古典概型与几何概型
  • HTML DOM
  • Vue组件-$refs、$nextTick和name属性的使用
  • 【Spark】Spark的DataFrame向Impala写入数据异常及源码解析
  • 学习笔记-架构的演进之限流-3月day03
  • 动态规划 背包问题
  • C++ Primer Plus 学习笔记(四)—— 内存模型和名称空间
  • 详解基于 Celestia、Eclipse 构建的首个Layer3 链 Nautilus Chain
  • 列表与数组的转化
  • docker 运行花生壳实现内外网穿透
  • 操作系统——16.时间片轮转、优先级、多级反馈队列算法
  • Python3.8.8-Django3.2-Redis-连接池-数据类型-字符串-list-hashmap-命令行操作
  • Android kotlin 系列讲解(进阶篇)高级项目架构模式 - MVVM
  • 8. 查找
  • 二分查找算法
  • Git(3)之远程服务器
  • Javalin解构
  • yolov5算法,训练模型,模型检测
  • linux系统防火墙开放端口
  • CSAPP第九章 虚拟内存
  • numpy数组与矩阵运算(二)
  • Dubbo 中 Zookeeper 注册中心原理分析