实验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[]);
其中 str
和 vowel
都是用户传入的参数。 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;
}