集美大学 - 2840 - 实验11-1 - 函数题

实验11-1-2 指针 输出月份英文名

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

函数接口定义:

char *getmonth( int n );

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

裁判测试程序样例:

#include 

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:

5

输出样例1:

May

输入样例2:

15

输出样例2:

wrong input!
char *getmonth(int n) {
    static char a[12][20] = {"January", "February", "March", "April", "May", "June", "July",
                             "August", "September", "October", "November", "December"};

    if (n == 1) return a[0];
    else if (n == 2) return a[1];
    else if (n == 3) return a[2];
    else if (n == 4) return a[3];
    else if (n == 5) return a[4];
    else if (n == 6) return a[5];
    else if (n == 7) return a[6];
    else if (n == 8) return a[7];
    else if (n == 9) return a[8];
    else if (n == 10) return a[9];
    else if (n == 11) return a[10];
    else if (n == 12) return a[11];
    else return NULL;
}

实验11-1-3 指针 查找星期

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

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

函数接口定义:

int getindex( char *s );

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

裁判测试程序样例:

#include 
#include 

#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:

Tuesday

输出样例1:

2

输入样例2:

today

输出样例2:

wrong input!
int getindex(char *s) {
    char *English[MAXS] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    int i;
    for (i = 0; i < 7; i++) {
        if (strcmp(s, English[i]) == 0) {
            return i;
        }
    }
    return -1;
}

实验11-1-4 指针 计算最长的字符串长度

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

函数接口定义:

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

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

裁判测试程序样例:

#include 
#include 
#include 

#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;
}

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

输入样例:

4
blue
yellow
red
green

输出样例:

6
int max_len(char *s[], int n) {
    int a[MAXN] = {0};
    int i;
    for (i = 0; i < n; i++) {
        a[i] = strlen(s[i]);
    }
    int max = 0;
    for (i = 0; i < n; i++) {
        if (a[i] >= max) max = a[i];
    }
    return max;
}

实验11-1-6 指针 指定位置输出字符串

本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。

函数接口定义:

char *match( char *s, char ch1, char ch2 );

函数match应打印s中从ch1ch2之间的所有字符,并且返回ch1的地址。

裁判测试程序样例:

#include 

#define MAXS 10

char *match( char *s, char ch1, char ch2 );

int main()
{
    char str[MAXS], ch_start, ch_end, *p;
    
    scanf("%s\n", str);
    scanf("%c %c", &ch_start, &ch_end);
    p = match(str, ch_start, ch_end);
    printf("%s\n", p);

    return 0;
}

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

输入样例1:

program
r g

输出样例1:

rog
rogram

输入样例2:

program
z o

输出样例2:

(空行)
(空行)

输入样例3:

program
g z

输出样例3:

gram
gram
char *match(char *s, char ch1, char ch2) {
    int index = -1;
    for (int i = 0; i < strlen(s); i++) {
        if (index == -1 && s[i] == ch1)
            index = i;
        if (index != -1)printf("%c", s[i]);
        if (index != -1 && s[i] == ch2)break;
    }
    printf("\n");
    if (index == -1)return s + strlen(s);
    return s + index;
}

实验11-1-8 指针 查找子串

本题要求实现一个字符串查找的简单函数。

函数接口定义:

char *search( char *s, char *t );

函数search在字符串s中查找子串t,返回子串ts中的首地址。若未找到,则返回NULL

裁判测试程序样例:

#include 
#define MAXS 30

char *search(char *s, char *t);
void ReadString( char s[] ); /* 裁判提供,细节不表 */

int main()
{
    char s[MAXS], t[MAXS], *pos;
    
    ReadString(s);
    ReadString(t);
    pos = search(s, t);
    if ( pos != NULL )
        printf("%d\n", pos - s);
    else
        printf("-1\n");

    return 0;
}

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

输入样例1:

The C Programming Language
ram

输出样例1:

10

输入样例2:

The C Programming Language
bored

输出样例2:

-1
char *search(char *s, char *t) {
    int i = 0, j = 0, flag = 0;
    char *k;
    for (j = 0; s[j] != '\0'; j++) {
        if (t[0] == s[j]) {
            k = &s[j];
            for (i = 0; t[i] != '\0'; i++, j++) {
                flag = 0;
                if (t[i] == s[j])
                    flag = 1;
                else break;
            }
        }
        if (flag == 1) break;
    }
    if (flag == 1) return k;
    else return NULL;
}

你可能感兴趣的:(集美大学,-,2840,c++,c语言,算法)