主观题:数组计数器
利用数组,以函数形式实现下列算法。
c
// 判断正整数 n (的十进制表示)中是否存在重复的数字
bool has_repeat_digit(int n);
// 判断两个正整数 m 和 n (的十进制表示)是否由相同的数字组成
bool is_similar(int m, int n);
// 判断 n 个学生成绩中是否存在相同的分数(0 到 100 之间的整数)
bool has_same_score(int score[], int n);
测试程序:
c
int main(void)
{
printf("has_repeat_digit(12345) = %d\n",
has_repeat_digit(12345)); // 0
printf("has_repeat_digit(12321) = %d\n",
has_repeat_digit(12321)); // 1
printf("is_similar(123, 456) = %d\n",
is_similar(123, 456)); // 0
printf("is_similar(123, 1123) = %d\n",
is_similar(123, 1123)); // 0
printf("is_similar(1231, 3211) = %d\n",
is_similar(1231, 3211)); // 1
printf("has_same_score({0, 1, 2, 3, 4, 5}) = %d\n",
has_same_score((int[]){0, 1, 2, 3, 4, 5}, 6)); // 0
printf("has_same_score({10, 1, 2, 3, 4, 10}) = %d\n",
has_same_score((int[]){10, 1, 2, 3, 4, 10}, 6)); // 1
return 0;
}
执行结果:
has_repeat_digit(12345) = 0
has_repeat_digit(12321) = 1
is_similar(123, 456) = 0
is_similar(123, 1123) = 0
is_similar(1231, 3211) = 1
has_same_score({0, 1, 2, 3, 4, 5}) = 0
has_same_score({10, 1, 2, 3, 4, 10}) = 1
答案:(1)首先用伪代码描述三个算法的设计思路,然后实现之。
(2)执行测试程序能够得到正确的结果。
c
// 判断正整数 n (的十进制表示)中是否存在重复的数字
bool has_repeat_digit(int n);
// 判断两个正整数 m 和 n (的十进制表示)是否由相同的数字组成
bool is_similar(int m, int n);
// 判断 n 个学生成绩中是否存在相同的分数(0 到 100 之间的整数)
bool has_same_score(int score[], int n);
测试程序:
c
int main(void)
{
printf("has_repeat_digit(12345) = %d\n",
has_repeat_digit(12345)); // 0
printf("has_repeat_digit(12321) = %d\n",
has_repeat_digit(12321)); // 1
printf("is_similar(123, 456) = %d\n",
is_similar(123, 456)); // 0
printf("is_similar(123, 1123) = %d\n",
is_similar(123, 1123)); // 0
printf("is_similar(1231, 3211) = %d\n",
is_similar(1231, 3211)); // 1
printf("has_same_score({0, 1, 2, 3, 4, 5}) = %d\n",
has_same_score((int[]){0, 1, 2, 3, 4, 5}, 6)); // 0
printf("has_same_score({10, 1, 2, 3, 4, 10}) = %d\n",
has_same_score((int[]){10, 1, 2, 3, 4, 10}, 6)); // 1
return 0;
}
执行结果:
has_repeat_digit(12345) = 0
has_repeat_digit(12321) = 1
is_similar(123, 456) = 0
is_similar(123, 1123) = 0
is_similar(1231, 3211) = 1
has_same_score({0, 1, 2, 3, 4, 5}) = 0
has_same_score({10, 1, 2, 3, 4, 10}) = 1
答案:(1)首先用伪代码描述三个算法的设计思路,然后实现之。
(2)执行测试程序能够得到正确的结果。