22-编程练习
2.12 编程练习
纸上得来终觉浅,绝知此事要躬行。读者应该试着编写一两个简单的程序,体会一下编写程序是否和阅读本章介绍的这样轻松。题目中会给出一些建议,但是应该尽量自己思考这些问题。一些编程练习的答案可在出版商网站获取。
1.编写一个程序,调用一次printf()函数,把你的名和姓打印在一行。再调用一次printf()函数,把你的名和姓分别打印在两行。然后,再调用两次printf()函数,把你的名和姓打印在一行。输出应如下所示(当然要把示例的内容换成你的名字):
Gustav Mahler ←第1次打印的内容
Gustav ←第2次打印的内容
Mahler ←仍是第2次打印的内容
Gustav Mahler ←第3次和第4次打印的内容
2.编写一个程序,打印你的姓名和地址。
3.编写一个程序把你的年龄转换成天数,并显示这两个值。这里不用考虑闰年的问题。
4.编写一个程序,生成以下输出:
For he's a jolly good fellow!
For he's a jolly good fellow!
For he's a jolly good fellow!
Which nobody can deny!
除了 main() 函数以外,该程序还要调用两个自定义函数:一个名为 jolly() ,用于打印前 3 条消息,调用一次打印一条;另一个函数名为 deny() ,打印最后一条消息。
5.编写一个程序,生成以下输出:
Brazil, Russia, India, China
India, China
Brazil, Russia
除了 main() 以外,该程序还要调用两个自定义函数:一个名为 br() ,调用一次打印一次“ Brazil, Russia ”;另一个名为 ic() ,调用一次打印一次“ India, China ”。其他内容在 main() 函数中完成。
6.编写一个程序,创建一个整型变量 toes ,并将 toes 设置为 10 。程序中还要计算 toes 的两倍和 toes 的平方。该程序应打印 3 个值,并分别描述以示区分。
7.许多研究表明,微笑益处多多。编写一个程序,生成以下格式的输出:
Smile!Smile!Smile!
Smile!Smile!
Smile!
该程序要定义一个函数,该函数被调用一次打印一次“ Smile! ”,根据程序的需要使用该函数。
8.在C语言中,函数可以调用另一个函数。编写一个程序,调用一个名为 one_three() 的函数。该函数在一行打印单词“ one ”,再调用第 2 个函数 two() ,然后在另一行打印单词“ three ”。 two() 函数在一行显示单词“ two ”。 main() 函数在调用 one_three() 函数前要打印短语“ starting now: ”,并在调用完毕后显示短语“ done! ”。因此,该程序的输出应如下所示:
starting now:
one
two
three
done!
[1] 原书图中叙述有误。根据C11标准,C语言有6种语句,已在图中更正。——译者注
[2] C语言是通过赋值运算符而不是赋值语句完成赋值操作。根据C标准,C语言并没有所谓的“赋值语句”,本书及一些其他书籍中提到的“赋值语句”实际上是表达式语句(C语言的6种基本语句之一)。本书把“赋值语句”均译为“赋值表达式语句”,以提醒初学者注意。——译者注
[3] 在C语言中,return语句是一种跳转语句。——译者注
[4] 市面上许多书籍(包括本书)都把这种语句叫作“函数调用语句”,但是历年的C标准中从来没有函数调用语句!值得一提的是,函数调用本身是一个表达式,圆括号是运算符,圆括号左边的函数名是运算对象。在C11标准中,这样的表达式是一种后缀表达式。在表达式末尾加上分号,就成了表达式语句。请初学者注意,这样的“函数调用语句”实质是表达式语句。本书的错误之处已在翻译过程中更正。——译者注
[5] 英寻,也称为口寻。航海用的深度单位,1英寻=6英尺=1.8米,通常用在海图上测量水深。——译者注
[6] 要理解该句子存在语法错误,需要具备基本的英文语法知识。——译者注