头歌C语言实验 辅助练习8:自定义函数
第1关:素数判定 II
问题描述
素数(Prime Number),又称为质数,它是不能被1和它本身以外的其它整数整除的正整数,按照这个定义,负数、0和1都不是素数。
请设计并编写一个函数,用于判定一个自然数是否是素数。
主函数中请用户输入一个正整数n,调用自定义函数进行判定,如果n是素数则输出Yes,否则输出No。
输入
一个正整数n。
输出
若n为素数输出Yes,否则输出No。
输入示例
37
输出示例
Yes
提示
设计函数时重点关注函数自身的功能,而不要考虑整个程序的功能。
1 |
|
第2关:静态变量求和
问题描述
函数中的静态局部变量,在程序的整个执行过程中,其声明语句只会执行一次。
请利用这个特点,参考教材上例7.1,编写一段程序,针对用户输入的正整数n,利用静态局部变量对1~n之间的所有能被3整除的整数求和并输出结果。
输入
一个正整数n。
输出
1~n之间的所有能被3整除的整数之和。
输入示例
54
输出示例
sum=513
1 |
|
第3关:几位数 II
问题描述
对于用户输入的一个非负整数n,请使用递归的方法编程判断n是一个几位整数。
注意:0是1位数。
相关知识
函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
例如:
1 | int fun(int x){ |
在调用 f 函数的过程中,又要调用 f 函数,这就是直接调用。如果在调用 f1 函数的过程中又要调用 f2 函数,而在调用 f2 函数过程中又要调用 f1 函数,这就是间接调用本函数。
上面的例子中,递归调用是无终止的自身调用。显然,程序中不应出现这种无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用 if 语句来控制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。
输入
一个任意的非负整数n,测试数据输入的n不会超过unsigned int所能表示的最大值(4294967295)。
输出
参照示例按照“非负整数y是一个x位整数。”的格式输出判断结果,其中y和x要用实际数值代替。
输入示例
8482
输出示例
非负整数8482是一个4位整数。
提示
对于任意整数,如果用它整除10可以去掉其个位数字。
1 |
|
第4关:整数分割输出
问题描述
本关任务:用递归法将一个整数 n (任意位数的整数)分割成各位数字并输出,各个数字字符之间用空格隔开。
例如,输入483,应输出字符串4 8 3。
相关知识
函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
例如:
1 | int fun(int x){ |
在调用 f 函数的过程中,又要调用 f 函数,这就是直接调用。如果在调用 f1 函数的过程中又要调用 f2 函数,而在调用 f2 函数过程中又要调用 f1 函数,这就是间接调用本函数。
上面的例子中,递归调用是无终止的自身调用。显然,程序中不应出现这种无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用 if 语句来控制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。
输入
一个整数n。
输出
从高位到低位的各位上的数字字符,每两个数字字符之间用一个空格分开。
输入示例
1385
输出示例
1 3 8 5
提示
用户输入n可能是一个负数,此时可以把n转换为对应的正数继续处理,同时需要输出负号(-)。
1 |
|