实验11-1-4 计算最长的字符串长度(15 分)

实验11-1-4 计算最长的字符串长度(15 分)

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。

函数接口定义:

1
int max_len( char *s[], int n );

其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAXN 10
#define MAXS 20

int max_len( char *s[], int n );

int main()
{
int i, n;
char *string[MAXN] = {NULL};

scanf("%d", &n);
for(i = 0; i < n; i++) {
string[i] = (char *)malloc(sizeof(char)*MAXS);
scanf("%s", string[i]);
}
printf("%d\n", max_len(string, n));

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
2
3
4
5
4
blue
yellow
red
green

输出样例:

1
6

实验11-1-3 查找星期(15 分)

实验11-1-3 查找星期(15 分)

本题要求实现函数,可以根据下表查找到星期,返回对应的序号。

序号 星期
0 Sunday
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday

函数接口定义:

1
int getindex( char *s );

函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>

#define MAXS 80

int getindex( char *s );

int main()
{
int n;
char s[MAXS];

scanf("%s", s);
n = getindex(s);
if ( n==-1 ) printf("wrong input!\n");
else printf("%d\n", n);

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

1
Tuesday

输出样例1:

1
2

输入样例2:

1
today

输出样例2:

1
wrong input!

实验11-1-2 输出月份英文名(15 分)

实验11-1-2 输出月份英文名(15 分)

本题要求实现函数,可以返回一个给定月份的英文名称。

函数接口定义:

1
char *getmonth( int n );

函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字,则返回空指针NULL。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

char *getmonth( int n );

int main()
{
int n;
char *s;

scanf("%d", &n);
s = getmonth(n);
if ( s==NULL ) printf("wrong input!\n");
else printf("%s\n", s);

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

1
5

输出样例1:

1
May

输入样例2:

1
15

输出样例2:

1
wrong input!

实验11-1-1 英文单词排序(25 分)

实验11-1-1 英文单词排序(25 分)

本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:

输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:

输出为排序后的结果,每个单词后面都额外输出一个空格。

输入样例:

1
2
3
4
5
6
blue
red
yellow
green
purple
#

输出样例:

1
red blue green yellow purple

实验10-10 递归实现顺序输出整数(15 分)

实验10-10 递归实现顺序输出整数(15 分)

本题要求实现一个函数,对一个整数进行按位顺序输出。

函数接口定义:

1
void printdigits( int n );

函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

void printdigits( int n );

int main()
{
int n;

scanf("%d", &n);
printdigits(n);

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
12345

输出样例:

1
2
3
4
5
1
2
3
4
5

实验10-9 十进制转换二进制(15 分)

实验10-9 十进制转换二进制(15 分)

本题要求实现一个函数,将正整数n转换为二进制后输出。

函数接口定义:

1
void dectobin( int n );

函数dectobin应在一行中打印出二进制的n。建议用递归实现。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

void dectobin( int n );

int main()
{
int n;

scanf("%d", &n);
dectobin(n);

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
10

输出样例:

1
1010

实验10-8 递归计算P函数(15 分)

实验10-8 递归计算P函数(15 分)

$$
ack(m,n)=\begin{cases}
1 & (n=0) \\\\
x & (n=1)\\\\
\frac{(2n-1)P(n-1,x)-(n-1)P(n-2,x)}{n} & (n>1)
\end{cases}
$$

函数接口定义:

1
double P( int n, double x );

其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

double P( int n, double x );

int main()
{
int n;
double x;

scanf("%d %lf", &n, &x);
printf("%.2f\n", P(n,x));

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
10 1.7

输出样例:

1
3.05

实验10-7 递归求Fabonacci数列(10 分)

实验10-7 递归求Fabonacci数列(10 分)

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

$f(n)=f(n−2)+f(n−1) (n≥2)$,其中$f(0)=0,f(1)=1$。

函数接口定义:

1
int f( int n );

函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int f( int n );

int main()
{
int n;

scanf("%d", &n);
printf("%d\n", f(n));

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
6

输出样例:

1
8

实验10-6 递归计算Ackermenn函数(15 分)

实验10-6 递归计算Ackermenn函数(15 分)

本题要求实现Ackermenn函数的计算,其函数定义如下:
$$
\operatorname{ack}(m, n)=\begin{cases}
n+1, & m = 0 \\\\
\operatorname{ack}(m-1, 1), & n=0 \& \& m\gt0 \\\\
\operatorname{ack}(m-1, \operatorname{ack}(m, n-1)),& m \gt0 \& \& n\gt 0
\end{cases}
$$

函数接口定义:

1
int Ack( int m, int n );

其中mn是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型

范围内。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>

int Ack( int m, int n );

int main()
{
int m, n;

scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
2 3

输出样例:

1
9

实验10-5 递归求简单交错幂级数的部分和(15 分)

实验10-5 递归求简单交错幂级数的部分和(15 分)

本题要求实现一个函数,计算下列简单交错幂级数的部分和:

$f(x,n)=x−x^2+x^3−x^4+\cdots+(−1)^{n−1}*x^n$

函数接口定义:

1
double fn( double x, int n );

其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。

裁判测试程序样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

double fn( double x, int n );

int main()
{
double x;
int n;

scanf("%lf %d", &x, &n);
printf("%.2f\n", fn(x,n));

return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1
0.5 12

输出样例:

1
0.33
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×