
问题
桐桐上幼儿园了,学会了1位数字的加法运算,妈妈想考核桐桐的运算能力,于是每次给出一个四位数的整数,让桐桐计算出各位上的数字的和。妈妈想请你帮她写一个程序,能够随机产生一个四位数的整数,同时给出其各位上的数字的和,这样她就能够一边做自己的事,一边考核桐桐了。
问题分析
输入:随机产生一个四位数整数。
输出:输出整数和其各位数字的和。
(1)首先用C语言的数学库函数rand()产生一个随机的四位数整数。
rand()函数能够生成在0~RAND_MAX的任意整数。rand()函数和常量RAND_MAX均在库文件stdlib.h中定义,一般RAND_MAX的默认值为最大的int整型数32767。要生成a~b的任意整数(包含a和b),可以用以下方式:


因而,要生成任意四位整数就可以用1000+rand()%9000实现。
事实上,rand()函数产生的是一个伪随机数,重复调用该函数所产生的随机数字是相同的。要想每次执行产生不同的随机数,就需要用srand()函数进行随机初始化。
随机初始化函数srand()可以设置随机数生成器的种子,不同的种子将产生不同的随机数。在程序运行过程中时间是一直变化的,所以我们可以借助time.h库中的time(NULL)函数返回计算机当前的时间数,把它作为随机数生成器的种子,从而在每次执行rand()函数时产生一个不同的随机数。将当前时间设置为随机数生成器种子的代码如下:


(2)拆分这个四位整数,获得其各位上的数字。
拆分一个数可以利用%和/运算符实现。假设a、b、c、d分别表示四位整数number的个、十、百、千位上的数,则它们的值可以分别表示为:


图5.4展示了从一个四位数中拆分出其各位上的数字的过程。


图5.4 数字分离:拆分四位整数获得各位上的数字
算法描述
自然语言描述


C语言程序源代码