《數據結構與算法分析:C語言描述》習題1.3代碼及自己的想法

《数据结构与算法分析》——C语言描述 第二版 学习笔记二 《数据结构与算法分析》——C语言描述 第二版 学习笔记二 第二章 算法分析 算法(algorithm):是为求解一个问题需要遵循的、被清楚地指定的简单指令集。 一、数学基础 四个关于相对增长率的数学定义: 定义:如果存在正常书c和n0,使得当N>=n0时,T(N)<=cf(N),则记为 T(N) = O(f(N))。 ... 阅读详情
《數據結構與算法分析:C語言描述》習題1.3

大一狗放假在家自學點算法,編程渣,自己練習一下

————————————————————————————————————————(我是劃分線)

題目:只使用處理I/O的PrintDigit函數,編寫一個過程以輸出任意實數(可以為負)

分析:書中已經給出了一個範例來打印正整數,那麼打印實數的關鍵在於將小數部分和整數部分區分開來,也就是分別用intPart和floatPart分別表示整數部分和小數部分轉換成的正整數,然後分別將intPart和floatPart用書中已經給出的PrintOut函數打印即可。一開始寫程序的時候我沒有考慮到計算機存儲double的方式,如2.16會被保存為2.15999999999999等,所以原來試圖通過先乘10再對10取餘來確定小數位數,後來發現做不到。。。。在網上看了人家發的代碼,發現大多是直接將小數位數當作參數傳給函數,好吧。。。。問題簡化很多。。。。所以後來也直接將小數位數當參數傳給了函數~~不過還要注意一下,比如上面提到的例子:2.16存储为2.15999999999,顯然,傳給函數的小數位數應該是2,而當我們將小數部分0.1599999999*10*10後,得到的是15.9999999999,對其取整是15。。。而正確的應該是16,所以應在對15.9999999取整後加1才是正確的結果。不過我有一個疑問,计算机存储double类型的时候像3.20呢?是存储为3.19999999还是3.2000000000?有點問題啊。。。求解答~

#include <cstdio>
#include <cmath>
void PrintDigit(int n);
void PrintOut(int n);
void PrintReal(double n,int dig);

int main()
{
    double readin;
    int dig;

    printf("请输入一个实数以及它的小数位数:\n");
    scanf("%lf", &readin);
    scanf("%d",&dig);
   
    
    if(readin<0)
    {
        readin=-readin;     //若数字为负数,则将其变为正数
        printf("-");        //并打印一个负号
    }
    
    PrintReal(readin, dig);

   
    return 0;
}


void PrintDigit(int n)   //只能输出单个数字的函数
{
    printf("%d",n);
}

void PrintOut(int n)     //只能输出整数的函数
{
    if (n>=10)
       PrintOut(n/10);
    PrintDigit(n-(n/10)*10);
}


void PrintReal(double n,int dig)   //能输出实数的函数
{
    int intPart,floatPart;   //将输入数字转换成整数部分和小数部分
    double fp;
    
        intPart=(int)n;    //将数字取整即为原数字整数部分
    PrintOut(intPart);      //先输出整数部分
    if ( (n-intPart)>0 )  //若存在小数部分
    {
        printf(".");           //输出小数点
        fp=n-intPart;     //截取小数部分
    }
    floatPart=1+fp*pow(10.0, dig);    //将小数部分转为整数后的值赋值给floatPart
    PrintOut(floatPart);          //打印转变为整数后的小数部分
}

在這個程序中,我將負數的轉換放在了main函數裡,可能不是很好,不過。。。懶得改了。。。
数据结构与算法|马踏棋盘算法(小甲鱼)C语言代码的算法分析 马踏棋盘算法(骑士周游问题)的算法分析 C语言代码部分来自小甲鱼的《数据结构与算法》 题目要求: ​ 国际象棋的棋盘为8*8的方格棋盘,现将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘64个方格。 马踏棋盘的一个解: 对于在n*n的棋盘上,当n>=5且为偶数的时候,以任意点作点都有解。 回溯法:一条路走到黑,碰壁了... 阅读详情

相关推荐

《数据结构与算法分析--c语言描述》之第一章:引论

学习《数据结构》与《算法设计与分析》这两门课程已经有一段时间了。但在设计编写代码时,还是不能做到游刃有余。怎么说呢?平时在编写代码的时候不会去考虑很多。诸如:是否要用哪个数据结构?是否可以用哪个算法?之类的问题很少会在脑海浮现。原因是:当想到用哪个数据结构或者哪个算法时,往往发现实现起来很麻烦,很难,总得花不少时间去重翻课本,对自己的要求就是写出能工作的程序就行了。久而久之也就对这样的想法敬而远之

陈卓生的专栏 1479

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等; 1.2 数据结构的分类 1.2.1 排列方式 1)集合 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2)线性结构 线性

緑水長流*z 24万+

【数据结构与算法分析——C语言描述】第九章:图论算法

【数据结构与算法分析——C语言描述】第九章:图论算法 标签(空格分隔):【数据结构与算法】 第九章:图论算法 第九章:图论算法 9.1 若干定义 9.1.1 图的表示 我的微信公众号 9.1 若干定义 一个图(graph) &amp;amp;amp;nbsp;G=(V,E)&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;G=(V,E)&amp;amp;amp;nbsp; ~ G = (V,E) ~ 由顶点(

grefwfdxz 5831

数据结构概述(Data structure)

在计算机科学中,数据结构(data structure)是计算机中存储、组织数据的方式。在维基百科中对数据结构是这样形容的:数据结构意味着接口或封装,即一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。而在百度百科中对数据结构是这么形容的:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 目录 1. 数据结构的类型 1.1 线性表(Line...

Tonywu2018的博客 2万+

数据结构与算法分析:C语言实践指南

算法是一组定义明确的计算步骤,用于将输入数据转换为预期的输出。一个有效的算法应具备以下特性:有限性:算法中的步骤数量有限,能够在一个可预见的时间内完成。确定性:算法的每一步骤都应当清晰且无歧义。可执行性:算法中的每一步骤都可被精确执行。有输入:算法应具有零个或多个输入。有输出:算法应至少有一个输出,即最终结果。理解算法的这些基本特性,有助于我们设计出更高效和可靠的程序。大O表示法用于描述算法的运行时间如何随输入规模n的增加而增长。

weixin_29443363的博客 695

C语言实现数据结构与算法分析课程设计

本文还有配套的精品资源,点击获取 简介:《数据结构与算法分析—C语言描述》涵盖计算机科学的核心内容,即高效的信息存储与处理,以及计算步骤的设计与实现。本书深入探讨了C语言实现的关键数据结构(数组、链表、栈、队列、树、图、哈希表)和算法(排序、搜索、动态规划、贪心算法、回溯法、分治法、图算法)基础,并强调通过C语言的特性和应用,来优化实现这些概念。读者通过学习本书,将获得扎实...

weixin_32252929的博客 1107

数据结构介绍

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定的数据元素的集合。这里的结构就是指数据元素之间存在的关系,分为逻辑结构和存储结构。 数据结构分类大体分为两类,包括包括线性结构和非线性结构1)线性结构作为最常用的数据结构,其特点就是数据元素之间存在一对一的线性关系2)线性结构有两种不同的存储结构:顺序结构(数组)和链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。3)链式存储的线性表称为链表,链表中存储元素不一定是连续的,元素节点中存放数据

yahid的博客 1740

C语言实现数据结构与算法分析完整习题解答

二叉树的递归定义如下:一个二叉树可以是一个空树,也可以是一个由根节点及其左子树和右子树组成的结构。左子树和右子树也必须是二叉树。在C语言中,我们通常使用结构体来表示二叉树的节点:int data;// 节点存储的数据// 左子节点// 右子节点} TreeNode;递归终止条件:当一个节点的left和right均为NULL时,该节点为叶子节点,递归终止。递归分解结构:每个节点递归地定义其左子树和右子树。递归构建方式。

weixin_33506815的博客 987

数据结构与算法分析——c语言描述 练习3.4 答案

1:Insert算法   (虽然传递了链表T,但是并没有使用到,但考虑到可能有的功能需要传递,默认写上) void Insert(List T,DataType x;Position p) { Position s = new struct Node; s->Data = x; s->Next = p->Next; p->Next = s; } 2:交集insertcet算法

chenming092100的博客 2255

用《数据结构与算法分析(C语言描述第4版)》习题锤炼C工程能力

数据结构与算法是计算机科学的核心基础,而C语言则是理解其底层实现的关键载体。本书以标准C语言为工具,将抽象的数据结构(如链表、散列表、后缀数组)和经典算法(如KMP、回溯剪枝)转化为可编译、可调试、可压测的工程级代码。其技术价值在于弥合理论定义与内存布局、指针操作、边界处理之间的鸿沟,尤其强调malloc安全、下标偏移、内存对齐、POSIX系统调用等真实开发中高频踩坑点。适用于考研408备考、嵌入式/OS底层开发及算法岗转C语言工程师等场景,本质是通过课本习题构建C语言的‘肌肉记忆’与工程直觉。

weixin_26869081的博客 215

数据结构与算法分析:全面学习指南

本文还有配套的精品资源,点击获取 简介:《数据结构与算法分析》系列由Allen Weiss所著,涵盖C、Java和C++三种编程语言,深入讲解了数据结构和算法的实现与应用。每种版本都对基础和高级数据结构如数组、链表、栈、队列、树、图和哈希表进行深入探讨,并结合各自语言的特点介绍排序和查找算法。书中还包括对面向对象编程的讨论,涉及Java中的集合框架以及C++特有的模板和ST...

weixin_42126677的博客 2005

数据结构与算法分析:C语言描述(原书第2版) PDF+源代码+习题答案

原文转载来自:https://www.linuxidc.com/Linux/2014-04/99735.htm  数据结构与算法分析:C语言描述(原书第2版)是《data structures and algorithm analysis in c》一书第2版的简体中译本。原书曾被评为20世纪顶尖的30部计算机著作之一,作者mark allen weiss在数据结构和算法分析方面卓有建树,他的数...

Lead_H的专栏 1万+

别再手动改文献了!手把手教你定制Mendeley的GB/T 7714-2005引用格式(附常见问题修复)

本文详细指导如何定制Mendeley的GB/T 7714-2005引用格式,解决科研文献管理中的常见问题。通过深度解析Mendeley样式编辑器,精准控制作者显示规则、出版社信息精简及期刊页码处理,实现参考文献一键合规。附常见问题修复和实战调试方法,大幅提升学术写作效率。

weixin_26833503的博客 374

《数据结构与算法 C语言描述》chap2 算法分析

资料一览: 数据结构与算法分析(C语言描述)课后习题答案(Github) https://github.com/search?q=Data-Structures-and-Algorithm-Analysis-in-C topic github search result https://github.com/daquexian/the-answer-of-Data-Structures-and-Algorithm-Analysis-in-C-in-chinese 中文版和英文版答案。 https:

hello world 356

利用Nginx反向代理实现GitLab自定义域名的高效配置

本文详细介绍了如何利用Nginx反向代理实现GitLab自定义域名的高效配置。通过统一域名管理、性能优化和安全加固,提升GitLab的访问效率和安全性。文章包含前期准备、GitLab基础配置、Nginx反向代理设置及常见问题排查,帮助开发者快速完成部署。

weixin_28834169的博客 164

uniapp - H5网页uni.getLocation报错getLocation:fail Geolocation permission denied.Get ipLocation failed.

uni.getLocation getLocation:fail Geolocation permission denied.Get ipLocation failed.,uni.getLocation定位失败,uni-app getLocation()无法获取定位,一直fail()uniapp移动端h5网页,uniApp微信内置浏览器定位失败,如何解决这个问题,uniapp h5 uni.getLocation获取位置失败怎么办,UNI-APP获取当前位置,uni.getLocation定位失败,unia

🏆 前端领域优质创作者 4243

学懂C语言(四十):C语言 数据结构与算法详解

C语言 数据结构与算法详解

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 7870

educoder中Hive综合应用案例 — 用户搜索日志分析

Hive综合应用案例 — 用户搜索日志分析

weixin_46026136的博客 4789

《算法精解:C语言描述》note-1 数据结构和算法简介

《算法精解:C语言描述》这本书在讲解数据结构和算法的概念同时,使用C代码而不是伪代码来实现具体的细节,很适合刚学完C语言的人来读:既可以熟练各种用法,也能了解数据结构和算法的底层实现。 这里是这本书的第一部分,包括算法与数据结构介绍、算法分析方法;简要的C语言指针知识;

qq_42783188的博客 1177

SAP 标准 CDS View 到底能不能用 CDS Extension View 扩展,我们在项目里应该这样判断

文章摘要:判断SAP标准CDS视图(如A_PRODUCT)能否扩展字段,不能仅凭命名或@Metadata.allowExtensions判断,需检查DDL源码中的@AbapCatalog.viewEnhancementCategory值。#PROJECTION_LIST允许扩展字段,#NONE则禁止。聚合视图需额外包含#GROUP_BY,UNION视图需#UNION。CDS View Extension用于新增字段,Metadata Extension仅用于添加注解。在ABAP Cloud环境中还需检查AP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 100

HyperLynx(十五)多板仿真

在对话框的“Design file#1”下拉列表中选择“B00,Mainboard”,在其下方的“Reference designators”列表中选择元器件“J1”,然后在“Designfile#2”下拉列表中选择“BO1、RAM1”,在其下方的“Refer ence designators”列表中选择元器件“J1”,单击“Insert”按钮,为这两个元器件建立互连映射。在“Assign Models”对话框中,选择“B00 Motherboard”,将“U16.B12”设置为输出。

小幽余生不加糖 5061

《数据结构与算法分析(C++语言描述)》

在看这本书总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。 书籍:《数据结构与算法分析(C++语言描述)》作者:Larry Nyhoff著、黄达明等译 源代码下载:https://cs.calvin.edu/activities/books/c++/ds/2e/SourcePrograms/ 第1章: UML教程——https://w...

Alliswell_WP 1145

9、硬件工程师笔试面试知识器件篇——三极管(2025版本)

本文全面介绍了三极管的基础知识与应用,包括其结构、类型、工作原理、工作状态、功能、应用场景及特性参数。详细探讨了三极管在信号放大、无线通信、音频设备及医疗设备中的具体应用,并深入分析了设计放大电路时如何平衡增益与噪声、优化偏置电路以提高稳定性、使用负反馈改善性能等关键问题。此外,文章还涵盖了高频电路设计、温度补偿策略、电磁干扰防护等实用内容,为硬件工程师提供了全面的技术参考和设计指导。

XU157303764的博客 7312

数据结构与算法分析--c语言描述练习自答(第二章)

2.7 2.7.h #ifndef _2_7_h #define _2_7_h #include <time.h> extern int RandInt(int i,int j); clock_t start,finish; extern void Substitution(int A[],int N); #endif RandInt.c #include <stdlib.h> #include <time.h> int RandInt(int i,int j) { .

fuluoyide312的博客 1638

【示波器专题】无源探头的常用附件

使用探头进行测试,我们不仅要知道探头的原理,还需要了解探头的常用附件及其使用方式,这样才能在尽可能在测试中提高效率且减少出错的概率

一点硬件 692

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 《數據結構與算法分析:C語言描述》習題1.1代碼及自己的想法
下一篇: 《數據結構與算法分析:C語言描述》習題2.13代碼及自己的想法
DS_agent
博客等级 码龄11年 20粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值