"C程序设计语言"练习题解答(Updating...)

yayj 发表于 2005-10-22 20:32:12

第4章 函数与程序结构

  1. 编写函数strrindex(s, t),它返回字符串t在s中最右边出现的位置。如果s中不包含t,则返回-1。

    #include <string.h>

    int strrindex(char *s, char * t)

    {

    int i, j, k;

    int sl = strlen(s), tl = strlen(t);

    if (sl <>

    return -1;

    for (i = sl - 1; i >= tl - 1; --i) {

    for (j = i, k = tl - 1; k > 0 && s[j] == t[k]; --j, --k)

    ;

    if (k == 0 && s[j] == t[k])

    return i - tl + 1;

    }

    return -1;

    }


  2. 对atof函数进行扩充,使它可以处理形如123.45e-6的科学表示法,其中浮点数后面可能会紧跟一个e或者E以及一个指数(可能有正负号)。

    #include <ctype.h>

    double atof(char *s)

    {

    double val, power1, power2;

    int i, j, bsign, psign;

    for (i = 0; isspace(s[i]); ++i)

    ;

    bsign = (s[i] == '-') ? -1 : 1;

    if (s[i] == '+' || s[i] == '-')

    ++i;

    for (val = 0.0; isdigit(s[i]); ++i)

    val = 10.0 * val + (s[i] - '0');

    if (s[i] == '.')

    ++i;

    for (power1 = 1.0; isdigit(s[i]); ++i) {

    val = 10.0 * val + (s[i] - '0');

    power1 *= 10.0;

    }

    if (s[i] == 'e' || s[i] == 'E') {

    psign = (s[++i] == '-') ? 1 : 0;

    if (s[i] == '+' || s[i] == '-')

    ++i;

    for (j = 0, power2 = 1.0; j < (int)atof(s + i); ++j)

    power2 *= 10.0;

    if (psign)

    power1 *= power2;

    else

    power1 /= power2;

    }

    return bsign * val / power1;

    }

  3. 在有了基本框架后,对计算器程序进行扩充就比较简单了。在该程序中加入取模运算符,并注意考虑负数的情况。

    没做.....

  4. 在栈操作中添加几个命令,分别用于在不弹出元素的情况下打印栈顶元素;复制栈顶元素;交换栈顶两个元素的值。另外增加一个命令用于清空栈。

关键词(Tag): c 喃喃呓语 麻布袋


收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定