mirror of
https://github.com/renbaoshuo/202401-programming-assignments.git
synced 2024-11-23 15:48:42 +00:00
【实践课外】10.函数1
This commit is contained in:
parent
e2c8cfafdb
commit
299de7a54b
5
【实践课外】10.函数1/6-1 符号函数.c
Normal file
5
【实践课外】10.函数1/6-1 符号函数.c
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
int sign(int x) {
|
||||||
|
if (x == 0) return 0;
|
||||||
|
if (x > 0) return 1;
|
||||||
|
return -1;
|
||||||
|
}
|
38
【实践课外】10.函数1/6-1 符号函数.md
Normal file
38
【实践课外】10.函数1/6-1 符号函数.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# 6-1 符号函数
|
||||||
|
|
||||||
|
本题要求实现符号函数sign(x)。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int sign( int x );
|
||||||
|
```
|
||||||
|
其中`x`是用户传入的整型参数。符号函数的定义为:若`x`大于0,`sign(x)` = $$1$$;若`x`等于0,`sign(x)` = $$0$$;否则,`sign(x)` = $$-1$$。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int sign( int x );
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
|
||||||
|
scanf("%d", &x);
|
||||||
|
printf("sign(%d) = %d\n", x, sign(x));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 你的代码将被嵌在这里 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
10
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
sign(10) = 1
|
||||||
|
```
|
9
【实践课外】10.函数1/6-2 求排列数.c
Normal file
9
【实践课外】10.函数1/6-2 求排列数.c
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
double fact(int n) {
|
||||||
|
double res = 1;
|
||||||
|
|
||||||
|
for (int i = 1; i <= n; i++) {
|
||||||
|
res *= i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
38
【实践课外】10.函数1/6-2 求排列数.md
Normal file
38
【实践课外】10.函数1/6-2 求排列数.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# 6-2 求排列数
|
||||||
|
|
||||||
|
本题要求实现符号函数sign(x)。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int sign( int x );
|
||||||
|
```
|
||||||
|
其中`x`是用户传入的整型参数。符号函数的定义为:若`x`大于0,`sign(x)` = $$1$$;若`x`等于0,`sign(x)` = $$0$$;否则,`sign(x)` = $$-1$$。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int sign( int x );
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
|
||||||
|
scanf("%d", &x);
|
||||||
|
printf("sign(%d) = %d\n", x, sign(x));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 你的代码将被嵌在这里 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
10
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
sign(10) = 1
|
||||||
|
```
|
26
【实践课外】10.函数1/6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。.c
Normal file
26
【实践课外】10.函数1/6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。.c
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
int get_digits(int x) {
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
while (x) {
|
||||||
|
x /= 10;
|
||||||
|
res++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_pow(int x, int n) {
|
||||||
|
int res = 1;
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
res *= x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int fun(int w) {
|
||||||
|
int n = get_digits(w);
|
||||||
|
|
||||||
|
return w % get_pow(10, n - 1);
|
||||||
|
}
|
38
【实践课外】10.函数1/6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。.md
Normal file
38
【实践课外】10.函数1/6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# 6-3 求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。
|
||||||
|
|
||||||
|
编写函数fun其功能是:求一个大于10的n位整数w的后n-1位的数,并作为函数值返回。例如:当w=1234时,返回234。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c
|
||||||
|
在这里描述函数接口。例如:
|
||||||
|
int fun(int w);
|
||||||
|
```
|
||||||
|
|
||||||
|
在这里解释接口参数。例如:其中 `w` 是用户传入的参数。函数须返回 `w` 除最高位外的值。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c
|
||||||
|
在这里给出函数被调用进行测试的例子。例如:
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int fun(int w);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{ int m;
|
||||||
|
scanf("%d", &m);
|
||||||
|
printf("%d\n", fun(m));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 您的程序将被嵌入在这里 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
1234
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
234
|
||||||
|
```
|
11
【实践课外】10.函数1/6-4 其右上三角(含主对角线)元素之和。.c
Normal file
11
【实践课外】10.函数1/6-4 其右上三角(含主对角线)元素之和。.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
int fun(int a[3][3]) {
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
for (int j = i; j < 3; j++) {
|
||||||
|
res += a[i][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
38
【实践课外】10.函数1/6-4 其右上三角(含主对角线)元素之和。.md
Normal file
38
【实践课外】10.函数1/6-4 其右上三角(含主对角线)元素之和。.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# 6-4 其右上三角(含主对角线)元素之和。
|
||||||
|
|
||||||
|
输入二维数组的所有元素,求二维数组右上三角(包括主对角线)元素之和。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c
|
||||||
|
在这里描述函数接口。例如:
|
||||||
|
int fun(int a[3][3]);
|
||||||
|
```
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c
|
||||||
|
在这里给出函数被调用进行测试的例子。例如:
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int fun(int a[3][3]);
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{ int i,j,s,x[3][3];;
|
||||||
|
for(i=0;i<3;i++)
|
||||||
|
for(j=0;j<3;j++)
|
||||||
|
scanf("%d",&x[i][j]);
|
||||||
|
s=fun(x);
|
||||||
|
printf("sum=%d\n",s);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/* 您的答案将被嵌入在这里 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
在这里填写相应的输出
|
||||||
|
sum=26
|
||||||
|
```
|
14
【实践课外】10.函数1/6-5 字符串比较.c
Normal file
14
【实践课外】10.函数1/6-5 字符串比较.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
int fun(char a[], char b[]) {
|
||||||
|
int len_a = strlen(a);
|
||||||
|
int len_b = strlen(b);
|
||||||
|
|
||||||
|
if (len_a > len_b) return 1;
|
||||||
|
if (len_a < len_b) return -1;
|
||||||
|
|
||||||
|
for (int i = 0; i < len_a; i++) {
|
||||||
|
if (a[i] > b[i]) return 1;
|
||||||
|
if (a[i] < b[i]) return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
39
【实践课外】10.函数1/6-5 字符串比较.md
Normal file
39
【实践课外】10.函数1/6-5 字符串比较.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# 6-5 字符串比较
|
||||||
|
|
||||||
|
函数fun的功能是比较两个字符串,如果s1=s2,则返回值0;如果s1>s2,则返回值1;如果s1<s2,则返回-1。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int fun(char a[],char b[]);
|
||||||
|
```
|
||||||
|
|
||||||
|
其中`a`、`b`是用户传入的参数。 函数比较两个字符串,如果`a`=`b`,则返回值0;如果`a`>`b`,则返回值1;如果`a`<`b`,则返回-1。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
#include "stdio.h"
|
||||||
|
#include "string.h"
|
||||||
|
int fun(char a[],char b[]);
|
||||||
|
int main()
|
||||||
|
{int t;
|
||||||
|
char s1[40],s2[40];
|
||||||
|
gets(s1); gets(s2);
|
||||||
|
t=fun(s1,s2);
|
||||||
|
printf("%d\n",t);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 请在这里填写答案 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
asd
|
||||||
|
fg
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
-1
|
||||||
|
```
|
19
【实践课外】10.函数1/6-6 使用函数求素数和.c
Normal file
19
【实践课外】10.函数1/6-6 使用函数求素数和.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
int prime(int p) {
|
||||||
|
if (p <= 1) return 0;
|
||||||
|
|
||||||
|
for (int i = 2; i * i <= p; i++) {
|
||||||
|
if (p % i == 0) return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PrimeSum(int m, int n) {
|
||||||
|
int sum = 0;
|
||||||
|
|
||||||
|
for (int i = m; i <= n; i++) {
|
||||||
|
if (prime(i)) sum += i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum;
|
||||||
|
}
|
48
【实践课外】10.函数1/6-6 使用函数求素数和.md
Normal file
48
【实践课外】10.函数1/6-6 使用函数求素数和.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# 6-6 使用函数求素数和
|
||||||
|
|
||||||
|
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
|
||||||
|
|
||||||
|
素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int prime( int p );
|
||||||
|
int PrimeSum( int m, int n );
|
||||||
|
```
|
||||||
|
其中函数`prime`当用户传入参数`p`为素数时返回1,否则返回0;函数`PrimeSum`返回区间[`m`, `n`]内所有素数的和。题目保证用户传入的参数`m`$$\le$$`n`。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int prime( int p );
|
||||||
|
int PrimeSum( int m, int n );
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int m, n, p;
|
||||||
|
|
||||||
|
scanf("%d %d", &m, &n);
|
||||||
|
printf("Sum of ( ");
|
||||||
|
for( p=m; p<=n; p++ ) {
|
||||||
|
if( prime(p) != 0 )
|
||||||
|
printf("%d ", p);
|
||||||
|
}
|
||||||
|
printf(") = %d\n", PrimeSum(m, n));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 你的代码将被嵌在这里 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
-1 10
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
Sum of ( 2 3 5 7 ) = 17
|
||||||
|
```
|
41
【实践课外】10.函数1/6-7 使用函数输出水仙花数.c
Normal file
41
【实践课外】10.函数1/6-7 使用函数输出水仙花数.c
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
int get_digits(int x) {
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
while (x) {
|
||||||
|
x /= 10;
|
||||||
|
res++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_pow(int x, int n) {
|
||||||
|
int res = 1;
|
||||||
|
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
res *= x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int narcissistic(int number) {
|
||||||
|
int sum = 0;
|
||||||
|
int tmp = number;
|
||||||
|
int digits = get_digits(number);
|
||||||
|
|
||||||
|
while (tmp) {
|
||||||
|
sum += get_pow(tmp % 10, digits);
|
||||||
|
tmp /= 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum == number;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintN(int m, int n) {
|
||||||
|
for (int i = m + 1; i <= n - 1; i++) {
|
||||||
|
if (narcissistic(i)) {
|
||||||
|
printf("%d\n", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
48
【实践课外】10.函数1/6-7 使用函数输出水仙花数.md
Normal file
48
【实践课外】10.函数1/6-7 使用函数输出水仙花数.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# 6-7 使用函数输出水仙花数
|
||||||
|
|
||||||
|
水仙花数是指一个$$N$$位正整数($$N\ge 3$$),它的每个位上的数字的$$N$$次幂之和等于它本身。例如:$$153 = 1^3 + 5^3+ 3^3$$。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间$$(m,n)$$内所有的水仙花数。
|
||||||
|
|
||||||
|
### 函数接口定义:
|
||||||
|
```c++
|
||||||
|
int narcissistic( int number );
|
||||||
|
void PrintN( int m, int n );
|
||||||
|
```
|
||||||
|
函数`narcissistic`判断`number`是否为水仙花数,是则返回1,否则返回0。
|
||||||
|
|
||||||
|
函数`PrintN`则打印开区间(`m`, `n`)内所有的水仙花数,每个数字占一行。题目保证100$$\le$$`m`$$\le$$`n`$$\le$$10000。
|
||||||
|
|
||||||
|
### 裁判测试程序样例:
|
||||||
|
```c++
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int narcissistic( int number );
|
||||||
|
void PrintN( int m, int n );
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int m, n;
|
||||||
|
|
||||||
|
scanf("%d %d", &m, &n);
|
||||||
|
if ( narcissistic(m) ) printf("%d is a narcissistic number\n", m);
|
||||||
|
PrintN(m, n);
|
||||||
|
if ( narcissistic(n) ) printf("%d is a narcissistic number\n", n);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 你的代码将被嵌在这里 */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输入样例:
|
||||||
|
```in
|
||||||
|
153 400
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### 输出样例:
|
||||||
|
```out
|
||||||
|
153 is a narcissistic number
|
||||||
|
370
|
||||||
|
371
|
||||||
|
|
||||||
|
```
|
54
【实践课外】10.函数1/7-1 寻找自守数.c
Normal file
54
【实践课外】10.函数1/7-1 寻找自守数.c
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int get_digits(int x) {
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
while (x) {
|
||||||
|
x /= 10;
|
||||||
|
res++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_pow(int x, int n) {
|
||||||
|
int res = 1;
|
||||||
|
|
||||||
|
for (int i = 1; i <= n; i++) {
|
||||||
|
res *= x;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int check(int x) {
|
||||||
|
int pow = x * x;
|
||||||
|
int digits = get_digits(pow);
|
||||||
|
|
||||||
|
for (int i = 0; i <= digits; i++) {
|
||||||
|
if (x == pow % get_pow(10, i)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int a, b, cnt = 0;
|
||||||
|
|
||||||
|
scanf("%d%d", &a, &b);
|
||||||
|
|
||||||
|
for (int i = a; i <= b; i++) {
|
||||||
|
if (check(i)) {
|
||||||
|
printf("%d\n", i);
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cnt == 0) {
|
||||||
|
printf("None\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
35
【实践课外】10.函数1/7-1 寻找自守数.md
Normal file
35
【实践课外】10.函数1/7-1 寻找自守数.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# 7-1 寻找自守数
|
||||||
|
|
||||||
|
所谓自守数(也称守形数),是指其平方数的低位部分恰为该数本身的自然数。例如:$$25^2 = 625$$,因此25是自守数。(注:0 和 1 也算自守数。)
|
||||||
|
|
||||||
|
请编写程序,输出指定范围内的所有自守数。若指定范围内不存在自守数,则输出None。
|
||||||
|
|
||||||
|
#### 输入格式
|
||||||
|
|
||||||
|
正整数 $$a$$ 和 $$b$$, 且 $$a \leq b \leq 10000$$
|
||||||
|
|
||||||
|
#### 输出格式
|
||||||
|
|
||||||
|
若 $$[a, b]$$ 内存在自守数,则按由小到大的顺序输出,每行输出一个自守数;若不存在自守数,则输出None。
|
||||||
|
|
||||||
|
#### 输入样例1
|
||||||
|
```in
|
||||||
|
10 80
|
||||||
|
|
||||||
|
```
|
||||||
|
#### 输出样例1
|
||||||
|
```out
|
||||||
|
25
|
||||||
|
76
|
||||||
|
|
||||||
|
```
|
||||||
|
#### 输入样例2
|
||||||
|
```in
|
||||||
|
400 600
|
||||||
|
|
||||||
|
```
|
||||||
|
#### 输出样例2
|
||||||
|
```out
|
||||||
|
None
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user