C程序设计语言第二版习题3-6

简介: 修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在所得结果的左边填充一定的空格。

问题描述

修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在所得结果的左边填充一定的空格。

问题分解

  • 主函数main
  • 核心函数 itoa(n, s, len)。这道题比较简单,在3-4中itoa的基础上只要判断当前生成的字符串长度是否等于len,否则左侧用空格填充。因此我们的算法描述可以为:

    • 求取数字n的逆置字符串;
    • 判断字符串长度是否等于n,否的话在字符串后面填充空格,直到字符串的长度等于len
    • 使用reverse 函数逆置字符串得到正常的字符串。

代码实现

#include<stdio.h>

void itoa(int n, char s[], int len);
void reverse(char s[]);

int main()
{
    int n = (~0U >> 1) + 1, len = 20;
    char s[100];
    printf("The input number is: %d\n", n);
    itoa(n, s, len);
    printf("The output string is: %s\n", s);
    return 0;
}

void itoa(int n, char s[], int len)
{
    int sign, i, j;
    sign = n;
    i = 0;
    do {
        if (sign < 0)
            s[i++] = -(n % 10) + '0';
        else
            s[i++] = n % 10 + '0';

    } while ((n /= 10) != 0);
    if (sign < 0)
        s[i++] = '-';
    
    while(i < len)
        s[i++] = '  ';

    s[i] = '\0';
    reverse(s);
}

void reverse(char s[])
{
    int i, j, c;
    for (j = 0; s[j] != '\0'; j++)
        ;
    for (i = 0, j--; i < j; i++, j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

编译运行

image

由运行结果可看出,得到的结果是预期的。

目录
相关文章
halcon如何判断HObject/HTuple为空
halcon如何判断HObject/HTuple为空
2599 0
|
2月前
|
存储 人工智能 自然语言处理
AI翻译工具使用教程:千问大模型多语种翻译指南
千问大模型翻译好用吗?本文从多语种支持、专业领域翻译、API调用翻译三个维度,详细介绍千问大模型的翻译能力,并提供实操教程和提示词模板,帮你高效完成翻译任务。
1050 0
|
4月前
|
存储 运维 安全
云客服部署模式技术选型:SaaS 与私有化部署的架构对比与最佳实践
企业客服系统的部署模式选择,本质上是技术架构与业务需求的匹配问题。SaaS 云客服与私有化部署是当前主流的两种方案,在部署架构、多租户隔离、成本结构、运维模式、安全合规、迭代速度等技术维度上存在显著差异。本文基于 7 年企业通信系统架构落地经验,从纯技术视角深度拆解两种部署模式的核心差异,结合 300 + 企业项目的实际数据,重点分析小团队选型的常见技术误区,总结技术评估维度、落地最佳实践与常见踩坑点,为企业技术架构师做方案选型提供参考。
476 1
|
3月前
|
人工智能 文字识别 API
RPA OCR 文字识别实战:本地离线识别、发票 / 合同多模态信息提取
本文介绍了一套安全、低成本的本地离线OCR解决方案:基于PaddleOCR+国产RPA引擎,无需联网、不传数据,支持发票/合同多模态识别与结构化提取。适配普通办公电脑,模型仅30MB,可打包为EXE一键部署,兼顾金融/政务级数据安全与中小企业预算需求。
|
10月前
|
Prometheus 监控 Cloud Native
从系统监控到业务洞察:ARMS 自定义指标采集功能全解析
阿里云应用实时监控服务 ARMS 推出自定义指标采集功能,让 APM 真正深入业务核心,订单、库存、转化率等核心数据尽在掌控!
737 83
|
6月前
|
缓存 监控 网络协议
通过IP地址查询判断网络风险,有哪些具体指标和判断方法?
本文详解IP风险评估三大核心维度:基础属性(如net_type、地理位置)、行为特征(频率、IP段聚集性)与历史信誉(risk_score、threat_tags),结合离线库毫秒查询与动态阈值策略,提供可落地的分级风控方案,有效识别代理、秒拨及云主机恶意流量。
通过IP地址查询判断网络风险,有哪些具体指标和判断方法?
|
7月前
|
人工智能 安全 Linux
小龙虾AI🦞 OpenClaw理性使用指南(阿里云/本地部署+免费Coding Plan API成本控制+安全防护+避坑手册)
“睡一觉赚大钱”“一人公司坐拥10个AI员工”“500元上门安装”——2026年开春,OpenClaw(曾用名Clawdbot)被流量裹挟成“暴富神话”。社交平台上,代安装服务报价从几百元飙升至数千元,大厂甚至下场举办“公益装机”活动;但另一面,真实用户面对每月1.5万甚至2.6万的API账单崩溃发问:“为什么不直接雇实习生?”
1010 10
|
10月前
|
人工智能 运维 监控
适合中小企业的BI产品推荐,涵盖国内外10款热门产品
文章构建“中小企业BI选型五维模型”(易用性、成本、数据源适配、智能化、服务生态),并深度解析国内外10款主流BI产品(瓴羊Quick BI、Microsoft Power BI、Tableau、Zoho Analytics、Wyn BI、DataFocus、永洪Z-Suite、Qlik Sense 、Looker、Metabase)。其中,阿里云旗下瓴羊Quick BI凭借AI助手“智能小Q”、连续6年入选Gartner魔力象限、SaaS轻量化部署及对淘宝、钉钉等本土生态的深度集成,展现出突出的中小企业适配能力。
|
10月前
|
消息中间件 Java Kafka
kafka入门+代码初步实现--小白必看
kafka入门+代码初步实现--小白必看
654 5
|
10月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation(可从百度云下载),提取码已提供。使用VMware创建虚拟机,参考指定教程完成安装。默认登录用户为root,密码由用户自设。确保电脑配置满足运行需求。(238字)