设为首页 加入收藏

TOP

《C程序设计语言》-第3章-习题(二)
2017-10-11 15:44:32 】 浏览:2974
Tags:程序设计 语言 习题
们可以进行检测,如果它是这个特殊的最大负数则将其变为无符号数。*/
void itoa(int n, char s[]) { int i, sign; sign = n; if (((unsigned)sign << 1) == 0) n = (unsigned)n; else if (sign < 0) n = -n; i = 0; do { s[i++] = n % 10 + '0'; } while ((n /= 10) > 0); if (sign < 0) s[i++] = '-'; s[i] = '\0'; reverse(s); } void reverse(char s[]) { int i = 0; int j = 0; char c[1000]; while (s[i] != '\0') c[i] = s[i++]; while (i > 0) s[j++] = c[--i]; s[j] = '\0'; }

  练习3-5 编写函数itob(n,s,b)将整数n转换为以b为底的数。 并将转换结果以字符的形式保存到字符串s中。

#include <stdio.h>


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

void runItob() {
    int testn = 1987654321;
    char test[100];

    itob(testn, test, 10);
    printf("test:%s", test);
}

void itob(int n, char s[], int b) {
    int i = 0;

    do {
        s[i++] = n % b + '0';
    } while ((n /= b) > 0);
    s[i] = '\0';

    reverse(s);
}

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

 1 #include <stdio.h>
 2 
 3 void reverse(char s[]);
 4 void itoa2(int n, char s[], int width);
 5 
 6 void runItoa2() {
 7     int testn = -1987654321;
 8     char test[100];
 9 
10     itoa2(testn, test,20);
11     printf("test:%send\n", test);
12 }
13 
14 void itoa2(int n, char s[], int width) {
15     int i, sign;
16     sign = n;
17 
18     if (((unsigned)sign << 1) == 0)
19         n = (unsigned)n;
20     else if (sign < 0)
21         n = -n;
22     i = 0;
23     do {
24         s[i++] = n % 10 + '0';
25     } while ((n /= 10) > 0);
26     if (sign < 0)
27         s[i++] = '-';
28     while (width - i > 0) {
29         s[i++] = ' ';
30     }
31     s[i] = '\0';
32     reverse(s);
33 }

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇.h和.cpp文件的区别 下一篇动态规划——数塔问题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目