算法学习之C语言基础

简介:

算法学习,先熟悉一下C语言哈!!!

复制代码
#include <conio.h>
#include<stdio.h>
int main(){
    printf("%d\n",1+2);
    getch();
    return 0;
}
复制代码

计算1+2的值
结果:3



进一步计算加减乘除

复制代码
#include <conio.h>
#include<stdio.h>
int main(){
    printf("%d\n",1+2);
    printf("%d\n",3-4);
    printf("%d\n",5*6);
    printf("%d\n",8/4);
    printf("%d\n",8/5);
    getch();
    return 0;
}
复制代码

结果:
3
-1
30
2
1
tips:计算发现8除以5得到的不是1.6而是1,为什么呢?
如果才能得到1.6呢?


复制代码
#include <conio.h>
#include<stdio.h>
int main(){
    printf("%.1lf\n",8.0/5.0);//第二个是字母l
    getch();
    return 0;
}
复制代码

结果:
1.6

 


进一步实验

复制代码
#include <conio.h>
#include<stdio.h>
int main(){
    printf("%.2lf\n",8.0/5.0);//2表示小数点后的尾数保留
    printf("%.1lf\n",8.0/5.0);//1表示只保留一位
    printf("%.lf\n",8.0/5.0);//没有则表示保留0位,四舍五入
    printf("%.1lf\n",8/5);//不明
    printf("%d\n",8.0/5.0);//不明
    getch();
    return 0;
}
复制代码

结果:
1.60
1.6
2
1.6
-1717986918
tips:整数用%d输出,实数用%lf输出,整数与整数运算结果也是整数对于整数运算。
8.0和5.0称为实数,更专业一点叫“浮点数”。浮点数之间的运算也是浮点数。
额,我表示还是有点晕乎乎的!!!
再来看一看更复杂一点的算术表达式。

复制代码
#include <conio.h>
#include<stdio.h>
#include<math.h>
int main(){
    printf("%.8lf\n",1+2*sqrt(4)/(1-0.75));//sqrt必须引入math.h头文件
    getch();
    return 0;
}
复制代码

结果:17.00000000
tips:整数-浮点数=浮点数
确切的说是整数先变成浮点数,然后浮点数-浮点数=浮点数

 

变量及其输入
下面是可以处理输入两个数的代码

复制代码
#include <conio.h>
#include<stdio.h>
int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d\n",a+b);
    getch();
    return 0;
}
复制代码

 



tips:scanf中的占位符合变量的数据类型一一对应,且每个变量前需要&符号。

计算圆柱体的表面积
要求:输入底面半径r和高h,输出圆柱体的表面积,保留3位小数。
样例输入:3.5 9
样例输出:Area = 274.889
分析:圆柱体表面积由3部分组成:上底面积、下底面积和侧面积。
完成的公式可写成:表面积=底面积*2+侧面积

复制代码
#include <conio.h>
#include<stdio.h>
#include<math.h>
int main(){
    const double pi = 4.0*atan(1.0); //pi的巧妙获取
    double r,h,s1,s2,s; //声明变量
    scanf("%lf%lf",&r,&h); //获取输入值
    s1 = pi*r*r; //计算底面积
    s2 = 2*pi*r*h; //计算侧面积
    s = s1*2.0 + s2; //得到总面积
    printf("Area = %.3lf\n",s); //输出结果
    getch();
    return 0;
}


本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3185063.html,如需转载请自行联系原作者
相关文章
|
16天前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
31 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
16天前
|
算法 Java 数据库
数据结构与算法学习十五:哈希表
这篇文章详细介绍了哈希表的概念、应用实例、实现思路,并提供了使用Java实现的哈希表代码。
37 0
数据结构与算法学习十五:哈希表
|
13天前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
36 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
13天前
|
算法
动态规划算法学习三:0-1背包问题
这篇文章是关于0-1背包问题的动态规划算法详解,包括问题描述、解决步骤、最优子结构性质、状态表示和递推方程、算法设计与分析、计算最优值、算法实现以及对算法缺点的思考。
41 2
动态规划算法学习三:0-1背包问题
|
13天前
|
算法
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
这篇文章介绍了动态规划算法中解决最大上升子序列问题(LIS)的方法,包括问题的描述、动态规划的步骤、状态表示、递推方程、计算最优值以及优化方法,如非动态规划的二分法。
49 0
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
|
13天前
|
算法
动态规划算法学习二:最长公共子序列
这篇文章介绍了如何使用动态规划算法解决最长公共子序列(LCS)问题,包括问题描述、最优子结构性质、状态表示、状态递归方程、计算最优值的方法,以及具体的代码实现。
58 0
动态规划算法学习二:最长公共子序列
|
13天前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
19 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
16天前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
14 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
16天前
|
存储 算法 数据管理
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
这篇文章通过需求分析、代码实现和测试验证,详细介绍了二叉排序树的创建、遍历和删除操作,以及二叉平衡树(AVL)的自平衡特性和单旋转操作,旨在提高树结构在数据管理中的效率和性能。
18 0
数据结构与算法学习二零:二叉排序树(BST)、平衡二叉树(AVL)
|
16天前
|
算法 搜索推荐
数据结构与算法学习十八:堆排序
这篇文章介绍了堆排序是一种通过构建堆数据结构来实现的高效排序算法,具有平均和最坏时间复杂度为O(nlogn)的特点。
59 0
数据结构与算法学习十八:堆排序