新编C语言程序设计教程(第2版)
上QQ阅读APP看书,第一时间看更新

4.7 应用实例

【例4-15】 i++为printf输出参数时的输出情况。

运行结果:在VC++2010中;在VC++6.0中;在Win-TC中。对本题结果的理解请参照“4.5节”。

【例4-16】输入3个小写字母,输出其ASCII码和对应的大写字母。

若输入“xyz”,运行结果:

【例4-17】设计程序使得用户可以以任意字符(回车、空格、制表符、逗号或其他)作为分隔符进行数据的输入(%*的一种应用)。

【例4-18】输入半径,计算圆的周长和面积,并将结果输出到屏幕。

以上程序中3.1415926是一个多次出现的常量,可以使用符号常量来替换,这样程序增强了可读性,并且具有只需一次修改常量值(如果需要修改的话)就能改变所有相同常量值的便捷功效。

【例4-19】求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac>0。

【例4-20】整数的拆分。从键盘输入任意一个三位正整数x,输出这个数的百位、十位和个位数字。

分析:可知个位数字等于x%10,x/10为截掉个位数字后变成的两位数,为此,原整数的十位数字等于x/10%10(或ix%100/10),百位数字等于x/100。

【例4-21】输入任意无符号整数作为产生随机数的种子,调用rand()产生3个随机数。

分析:系统库函数中提供了两个函数用于产生随机数:srand()和rand()。函数在stdlib.h中的原型如下。

函数srand()的原型为“void srand(unsigned seed);”参数seed是rand()的种子,用来初始化rand()的起始值。

函数rand()的原型为“int rand(void);”从srand (seed)中指定的seed开始,返回一个[0,RAND_MAX(0x7fff,32767)]间的随机整数。

这两个函数的使用方法如下:如果调用rand()函数之前没有先调用srand()函数,则每次产生的随机数序列都是相同的;srand()函数使用自变量n作为种子,用来初始化随机数产生器。如果把相同的种子传入srand(),然后调用rand()函数,则每次产生的随机数序列也是相同的;如果要使每次运行程序所产生的随机数序列均不同,则可以给n提供不同的值。

多次运行程序,输入不同的n种子值,查看随机数的随机情况。

【例4-22】利用时间函数time()来得到不同的时间值,并以此作为srand()函数的种子,再调用rand()来产生3个3~102的随机数并输出。

分析:可以把时间函数time()的时间值作为srand()函数的种子值,其格式为“srand((unsigned)time(NULL));”这样每次运行程序时,因时间值不同,而可以得到不同的随机数。

多次运行程序,查看随机数的随机情况。

思考:复制“count= rand()%100+3; printf("%hu\n",count);”若干次,查看一次性产生更多的随机数;调节“count= rand()%100+3;”语句中的100与3,观察产生随机数的范围;请问若要产生[x,y](x<=随机数<=y)间的随机数,该如何修改程序。