练习与自测
(1)当时,编程计算代数式
的值,要求结果用最简分数形式表示。
(2)验证欧拉公式:n2+n+41在n为-39~40时皆可求得一素数。
(3)一正整数的值等于其各位数的阶乘之和,编程求这个数。
(4)一个正整数的平方的尾数恰好等于这个数被叫做自守数,求200000以内的自守数。
(5)编程求出所有分母为100的真分数。
(6)求1000以内的所有回文素数。
(7)一个自然数的七进制是一个三位数,其九进制也是一个三位数,且这两个三位数的数码顺序刚好相反,求这个自然数。
(8)用递归的方法求两个正整数的最大公约数和最小公倍数。
(9)对于任何一个自然数A,
①a.如果A为偶数,就除以2
b.如果A为奇数,就乘以3加上1,得数记为B
②将B作为A重新进行①的运算若干步后,得数为1。
这个猜想就叫做角谷猜想。编程,使之对输入的自然数能证实该猜想。并输出计算过程。
(10)用递归的方法解决猴子吃桃问题。
(11)已知两个数的最小公倍数是240,最大公约数是24,这两个数可能是多少。
(12)输入一个分数的分子与分母,化简为一个真分数或个一带分数。
————————————————————
(1) C标准要求在OS环境下运行的程序必须有main()函数。独立运行的程序不一定要遵守这个要求。
(2) 实际上这个词和数学函数中的“自变量”是同一个词。
(3) C语言的函数只能求1个值,在C语言中不存在多值函数的概念。
(4) 除了关键字和goto语句使用的语句标号,任何标识符在使用之前都必须进行定义或声明。
(5) C99明确废除了这种缺省规则。
(6) 不同之处仅仅在于main()不需要写函数声明。
(7) 实际上这部分也可以看成是一个声明,主要是对函数形参的声明。
(8) 它们甚至还不存在,只有程序在执行到函数调用时,它们才具有自己的内存空间。
(9) 但C语言并不要求这个表达式的类型一定与函数的类型一致。两者不一致时,编译器按照规则进行类型转换。这套规则非常凌乱烦琐,初学者没必要自找麻烦钻这个牛角尖。直接把两者写一致就很好了,必要时可以自己显式地进行类型转换。
(10) printf()函数的值就很少被使用。
(11) 严格的说法是静态库函数,还有一种动态的库函数(DLL)。
(12) C99还有一种只在循环语句或循环语句之内有效的局部变量。如下面for语句中的变量ifor(int i=0; i<n; i++)
(13) goto的语句标号是个例外。
(14) 程序中dgys()部分的执行代码通常倒不是有多套,但dgys()部分用到的局部的非static类的数据通常是有多套的。
(15) 递归总是和一定的条件联系在一起,使用“?:”运算或循环语句中的条件判断也可以实现递归,而利用循环语句中的条件判断实现递归比较少见。
(16) 其他函数若在使用函数之前写了函数定义的情况下也可以不写函数原型,这在语法上是没问题的,但这种风格不值得推崇。