bupt2024计导考前复习

 实验6_3_递归求最大值

分数 100

全屏浏览

切换布局

作者 scs

单位 北京邮电大学

写一个函数可以读入n(0<n<100)个整数,并求出这n个整数中的最大值。

此题要求递归求解,且不允许使用全局变量。在此题的所有提交中只要出现非递归提交,无论其他提交是否是递归求解此题均为0分。

函数接口定义:

 

int findMax(int n) ;

其中 n 是用户传入的参数。 n 的值大于0且小于100; 函数须返回 读入的n个整数中最大的那个数。

裁判测试程序样例:

 

#include <stdio.h> int findMax(int n) ; int main() { int n ; scanf("%d", &n); printf("%d\n" , findMax( n ) ) ; return 0; } /* 请在这里填写答案 */

输入样例:

6
15  30  34  10  89 5

输出样例:

89

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

int findMax(int n)
{
    int num;
    if(n == 1)
    {
        scanf("%d", &num);
        return num;
    }
    else if(n > 1)
    {
        int max = findMax(n - 1);
        scanf("%d", &num);
        return (num > max) ? num : max;
    }
}

1 实验9_7_设计函数int getVowel(char str[],char vowel[]);

分数 100

全屏浏览

切换布局

作者 scs

单位 北京邮电大学

设计函数int getVowel(char str[],char vowel[]),将只包含小写字母的字符串str中的元音字母“a”“e”“i”“o”“u”复制到字符数组vowel,并返回字符串vowel的长度。

函数接口定义:

 

函数原型如下: int getVowel(char str[],char vowel[]);

其中 strvowel 都是用户传入的参数。 str 为原始字符串; vowel 为元音字母字符串。函数的返回值为 vowel 的长度。

裁判测试程序样例:

 

函数被调用进行测试的例子如下: #include <stdio.h> #include<stdio.h> //将只包含小写字母的字符串str中的元音字母复制到字符数组vowel,并返回元音字符的个数。 int getVowel(char str[],char vowel[]); int main() { char vowel[101] , str[101];//每个数组都至少要101个字节 int len ; scanf("%s",str); //读入字符串 len = getVowel(str,vowel); //复制 if ( len > 0 ) printf("%d %s\n", len , vowel); //输出复制后结果 else printf("%d\n", len);//仅输出长度 return 0; } /* 请在这里填写答案 */

输入样例:

abcdefghiijklmn

输出样例:

4 aeii

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

int getVowel(char str[],char vowel[])
{
    int count = 0;
    for(int i = 0; str[i] != '\0'; i++)
    {
        char ch = str[i];
        if(ch == 'a'||ch == 'e'||ch == 'i'||ch == 'o'||ch == 'u')
        {
            vowel[count] = ch;
            count++;
        }
    }
    vowel[count] = '\0';

    return count;
}

2 06_05_安全密码

分数 100

全屏浏览

切换布局

作者 scs

单位 北京邮电大学

某网站规定注册账号时密码必须达到一定强度才可以。他们规定密码长度至少6位,数字、大写字母、小写字母、符号(~!@#$%^&*()[]}{|<>?/.,:"';)这四类中至少包含三类才合格。现在请你写一段程序来判断一个密码是否合格。

输入格式:

第一行为一个整数n(0<n<10),代表测试用例组数,
后边是n行测试用例,每行为一个长度不超过30的字符串。

输出格式:

共n行,与输入的n行测试用例相对应,如果密码合格则输出yes,否则输出no。

输入样例:

2
123456
Hello2020.

输出样例:

no
yes

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

#include <stdio.h>
#include <string.h>

int main()
{
    char ch[31];
    int n;
    scanf("%d", &n);

    for(int k = 0; k < n; k++)
    {
        scanf("%s", ch);
        int len = strlen(ch);
        int var1 = 0, var2 = 0, var3 = 0, var4 = 0;
        for(int i = 0; i < len; i++)
        {
            char qwq = ch[i];
            if(qwq >= 'A'&&qwq <= 'Z')
                var1 = 1;
            else if(qwq >= 'a'&&qwq <= 'z')
                var2 = 1;
            else if(qwq >= '0'&&qwq <= '9')
                var3 = 1;
            else
                var4 = 1;
        }
        if(var1 + var2 + var3 + var4 >= 3&& len >= 6)
            printf("yes\n");
        else
            printf("no\n");
    }

    return 0;
}

3 参考书

分数 100

全屏浏览

切换布局

作者 scs

单位 北京邮电大学

某次考试是开卷考试。老师规定,纸质的资料(以下统一称为参考书)可以随便带,或者说只要你背得动想带多少本参考书都行。于是同学们就开始准备参考书了。就在考试前一天,老师觉得大家准备的参考书实在是太多了,就突然改了主意。新规则规定,所带所有参考书的总页数不能超过1000页。这下小明同学犯愁了,因为他准备的参考书总页数远远超过1000。现在请你写一段C程序帮小明算一下他这次考试最多能带几本参考书。

输入格式:

共2行,第1行一个整数n(5<n<100),代表小明同学准备的参考书的总数,第2行是n个用空格分隔的整数,分别代表小明同学每本参考书的页数(每本书的页数大于0,小于1000,测试数据保证所有书的总页数超过1000)。

输出格式:

只有1行,一个整数,表示小明最多可以带的参考书的本数。

输入样例:

10
100 125 200 234 300 321 400 487 500 526

输出样例:

5

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

#include <stdio.h>

void Sort(int arr[], int n)
{
    for(int i = 1; i <= n - 1; i++)
    {
        for(int j = 0; j <= n - 1 - i; j++)
        {
            if(arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main()
{
    int n;
    scanf("%d", &n);
    int arr[101];
    int count = 0;
    for(int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
        count++;
    }

    Sort(&arr, count);

    int sum = 0;
    int j;
    for(j = 0; j < count; j++)
    {
        if(sum + arr[j] > 1000)
            break;
        else
            sum += arr[j];
    }

    printf("%d", j);

    return 0;
}

4 calc the sum

分数 100

全屏浏览

切换布局

作者 scs

单位 北京邮电大学

在遥远的艾泽拉斯大陆上,有一个十分崇拜数字的种族。他们认为万物都是由数字组成的,而且一切的数字最后都能变成一个单独的数码。比如数字S(1990)=1+9+9+0=19,S(19)=10,S(10)=1.

有一天他们从一个废墟中找到一个远古的羊皮卷轴,上面写满了密密麻麻的数字,族长认为卷轴能预言种族的未来。但是他们无法解读卷轴,你能帮助他们么?

输入格式:

一开始是一个数字T(0<T<=10)表示数据组数。
接下来T行,每行是一个数n.(0<n<=101000000),数字可能非常大所以只能用字符数组存储。

输出格式:

输出T行,每行一个数,表示羊皮卷轴上的数对应的数码。

输入样例:

1
5555

输出样例:

2

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

#include <stdio.h>

int Res(int n)
{
    if(n < 10)
        return n;
    else
    {
        int a = 0;
        while(n)
        {
            a += n%10;
            n = n/10;
        }
        return Res(a);
    }
}

int main()
{
    int n;
    scanf("%d", &n);

    char str[1000001];
    for(int i = 0; i < n; i++)
    {
        int sum = 0;
        scanf("%s", str);

        for(int j = 0; str[j] != '\0'; j++)
        {
            sum += str[j] - '0';
        }

        int res = Res(sum);
        printf("%d\n", res);
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值