Tag Archives: 习题解答

《C程序设计语言》习题解 <三>

T1.15,重新编写1.2节中的温度转换程序,使用函数实现温度转换。

#include<stdio.h>
 
int fahrToCel(int fahr)
{
  return 5 * (fahr - 32) / 9;
}
 
int main()
{
  int fahr, cel;
  int lower, upper, step;
  lower = 0;
  upper = 300;
  step = 20;
 
  fahr = lower;
  while (fahr < upper) {
      cel = fahrToCel(fahr);
      printf("%dt%dn", fahr, cel);
      fahr += step;
  }
  return 0;
}

T1.16,修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多的打印文本。

#include<stdio.h>
#define MAXLEN 1000
 
int getLine(char *s);
void copy(char *to, char *from);
 
int main()
{
  int len, maxLen;
  char line[MAXLEN], maxLine[MAXLEN];
  maxLen = 0;
  while((len = getLine(line)) != 0) {
      printf("%d %sn", len, line);
      if(len > maxLen) {
          copy(maxLine, line);
          maxLen = len;
      }
  }
  if(maxLen > 0) printf("%sn", maxLine);
  return 0;
}
 
int getLine(char *s)
{
  int i = 0;
  while((s[i] = getchar()) != 'n') i++;
  s[i] = '';
  return i;
}
 
void copy(char *to, char *from)
{
  int i = 0;
  while((to[i] = from[i]) != '') i++;
}

......

Read more »

《C程序设计语言》习题解 <二>

//练习1-13,编写一个程序,打印输入中单词长度的直方图.水平方向的直方图比较容易绘制,垂直方向的困难一些.(书中第17页)
//做这个练习之前最好能先弄懂直方图是什么
//首先,定义:
//n为某个长度单词出现的次数
//M为出现最频繁的长度的次数
//H为你所定义的直方图的最大长度
//那么所求的len = n * H / M
......

Read more »

《C程序设计语言》习题解<一>

回想一下,学习C语言的时间也有差不多2年了,写过的代码也有5~6万行,主要是在做ACM的练习积累的.C语言的书看了不少,不过都不是很系统,只是没有一本是完整看完了,所以写出来的代码可能不是很符合标准.前些天在亚马逊上买了Brian W.Kernighan和Dennis M.Ritchie的《C程序设计语言(第二版)》和《C程序设计语言》习题解答,这两本书非常通俗易懂,实用性比较强,可以当作手册放在手边,书里的代码也写的真的很漂亮.

在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用如此广泛.《C程序设计语言》是C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作.我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本.原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础.人们熟知程序"hello world"就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课.

学习编程语言最好的方法就是用它写代码.现在下定决心,要系统的整理学习一下C语言,梳理一下以前学习的死角.我觉得现在开始把书里的习题完整的做一遍,"远大的目标”即将开始......

//练习1-1 在你自己的系统中运行"hello world"程序.
//再有一去掉程序中的部分内容,看看惠得到什么出错信息(书中第3页)
#include<stdio.h>
 
int main()
{
  printf("hello world!n");
  return 0;
}

......

Read more »